czwartek, 1 kwietnia 2010

Impersonalizacja

Na sharepoint 2010 działa sobie mój customy sharepointowy web part. Ten web part pobiera jak i zapisuje niektóre atrybuty current usera do AD jak i do baz SQLowych. O ile z bazami zawsze sobie można poradzić bez impersonalizacji o tyle w przypadku Active Directory zaczęły się schody. Przykładowo normalnie schema AD pozwala na zapis niektórych atrybutów ownerowi DirectoryEntry np. mobile (sporo na temat praw dostępu do atrybutów AD). Dlatego impersonalizacja w takich przypadkach jest wskazana. Dodam jeszcze że u mnie aplikacja webowa(sharepoint-80) pracowała na application pool która używała normalnego dedykowanego użytkownika domenowego. Aby jednak to zadziałało trzeba przejść kilka kroków:
1. impersonate na true w web.config
2. włączony zaufany serwer i delegowanie przez Kerberos w AD "Users & Computers" dla serwera IIS na którym jest postawiona aplikacja ASP (reset serwera IIS wymagany)
3. Ustawienie "Negotiate" na protokole autentyfikacji aplikacji webowej w IIS
(polecam reset IIS)
4. setspn -S http://serwer/aplikacja DOMAIN_NAME\User_name na którym pracuje app pool (nie działa od razu)
Ostatni punkt jest kluczowy i ja go rozumiem w ten sposób ze użytkownik na którym pracuje app pool naszej aplikacji ASP może przyjąć ticket z Kerberosa.

Czasami też możemy chcieć wyłączyć impersonalizacje w trakcie działania programu i wrócić do użytkownika app pool - możemy to zrobić za pomocą:

using System.Web.Hosting;
...
using (HostingEnvironment.Impersonate())
{
..
}
Ogólnie polecam samemu eksperymentować bo gra jest warta świeczki jeśli nie musimy niepotrzebnie zwiększać uprawnień.
Strony które mnie pomogły:
Spencer Harbar
Directory Programming

wtorek, 9 lutego 2010

Barbarzyństwo w Redmond

Na temat Microsoftu powstało już dużo mitów i legend. Część z nich jest pewnie prawdziwa ale czy odnosi się do tej samej firmy która aktualnie działa na rynku? Do takich mitów np. należy sposób "niszczenia Netscape", facetów od marketingu w czarnych garniturach którzy są wstanie wszystko i wszystkich załatwić :), etc. To co się aktualnie dzieje w Redmond pewnie dowiemy się za kilka lat.
O tym jak było przeczytałem ostatnio w "Barbarzycy pod wodzą Billa" pisanej m.in. przez programistę Microsoftu Marlina Eller'a za jego czasów(od powstania Windows 1.0 do Windows 95/98).
Ze strony Ellera wygląda to tak że Microsoft miał bardzo dużo szczęścia w biznesie, podejście do konkurencji i tzw. "marsze śmierci". Inną książką w tym temacie jest: Bill Gates i jego imperium Microsoft ale nie dałem rady skończyć tej momentami przynudnawej książki. Jak ktoś preferuje wersje filmową to co jakiś czas na Discovery Science lecą powtórki: "Prawdziwa historia Internetu".

niedziela, 20 grudnia 2009

Egzotyczne wyspy, owoce, rozwiązania

Dzisiaj o tym ostatnim. Po co są widoki w bazach ? Widok jest wirtualną tabelą która pozwala bardziej zabezpieczyć dane, przyspieszyć wyciąganie danych i przede wszystkim ukryć złożoność bazy przed użytkownikiem. W normalnym zastosowaniu widoki służą do wyświetlania danych z bieżącej bazy. A co powiesz na to:

Baza Test:
Tabela A
Widok A
Procedura initA

Procedura initA - kasuje tabele A,
a nastepnie wykonuje:
Insert Into tabela A
Select * from Widok A

po tym dzieje się cud i pojawiają się dane w tabeli A.
Jak?