Strona główna > IT, Windows 2008 > Single Sign-On

Single Sign-On

Czyli coś co może się przydać do terminali lub wszelkich innych aplikacji wymagających autoryzacji. Zdarza się, że niekiedy konieczność podwójnego logowania lub tez dodatkowego z autoryzowania się w aplikacji jakieś tam (w teorii) dla usera stanowi problem nie do przeskoczenia, lub jest po prostu nie wygodna/nie praktyczna czy tez nawet mało bezpieczna czasem. I tu z pomocą przychodzi skomplikowanie i zarazem zaawansowanie kolejny skrót do zapamiętania CredSSP (Credential Security Service Provider) Dobra to jest coś więcej niż tylko dobrze brzmiący skrót to jest nawet działający mechanizm przekazywania poświadczeń (credentials) pomiędzy systemem a aplikacja/usługa albo nawet pomiędzy systemem a innym systemem. I na razie tak naprawdę działa to drugie, chyba ze ktoś już napisał jakaś aplikacje która umiała by to wykorzystać. (Specyfikacja protokołu dla chętnych dostępna na samym dole) Trzeba przyznać ze wygodne to to jest, zwłaszcza w scenariuszu z wykorzystaniem serwerów terminali.. User loguje się na wokrstacje, GPO inicjuje mu connectora .rdp zamiast explorer.exe a CreedSSP załatwia logowanie automatycznie, do tego obsługuje nawet zmianę haseł w sprawny sposób (czytaj user się nie zmiesza jak mu wygaśnie hasło na koncie w  AD bo przecież nie będzie go zmieniał mimo 10 monitów ze ma zmienić)

Wszystko jest fajnie jak mamy u usera Viste, bo tam CredSSP jest zaimplementowany od początku włączony i działa jak należy, do tego jest zarządzany przez GPO, czego chcieć więcej.  Wystarczy pobierze przejrzeć sobie opcje GPO (Comp Config->Admin Templates->System->Credentials Delegation) i wszystko będzie wiec nie ma co pisać.

Co innego XP, w XP CredSSP przychodzi dopiero w SP3  i żeby nie było za łatwo domyślnie jest wyłączone i nie ma ADMów do zarządzana tym przez GPO. Tu trzeba trochę przysiedzieć.  Zamiast tworzyć ADMy (w necie nie znalazłem) do GPO posłużyłem się GPP (Group Policy Preferences), którego jakże by inaczej w XP SP3 tez nie ma i trzeba sobie doinstalować czy to przez WU czy to ręcznie pobierając Group Policy Client Extensions (podlinkuj). O GPP poczytać można sobie [tu], co ciekawe przez pierwsza godzinę nie wiedziałem o tym Client Side Extensions i zaawansowanie myślałem czemu mi to nie działa ;) Nie wiedzieć czemu Bill nie pokwapił się z udostępnieniem tego jako .msi

Konfiguracja tego jest po zapoznaniu się jak trzeba z papierami prosta. Pechowo, możne nie doczytałem, a możne to po prostu nie działa to w  XP  do końca (chyba? bo w sumie nigdzie nie jest napisane jaki powinien być efekt końcowy) tak jak powinno. Ale po kolei:

Żeby CredSSP włączyć trzeba dodać/zmodyfikować następujące wpisy w rejestrze:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa  odnajdujemy klucz o nazwie SecurityPackages i modyfikujemy dodając na końcu: tspkg

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders modyfikujemy klucz o tej samej nazwie dodając na końcu credssp.dll

Nie zaszkodzi sprawdzić w  %systemroot%\system32″ czy credssp.dll jest, zeby sie po 4 godzinach walki nie okazało, ze wszystko jest jak trzeba ale pliku brakuje z jakiegos tam powodu. W następnym etapie trzeba będzie to CredSSP skonfigurować tak, żeby coś tam chciało przekazywać dalej. Przekazywać będziemy dane logowania do serwera terminali:

Tworzymy wiec sobie klucz:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation

a w nim dwie wartości:

REG_DWORD: AllowDefaultCredentials
Value data: 00000001

REG_DWORD: ConcatenateDefaults_AllowDefault
Value data: 00000001

W sumie na tym etapie gdy po zalogowaniu się do XPka wywołując innego shella. Tj zamiast Explorer.exe chcemy costam.rdp to po zalogowaniu do systemu wyskakuje okienko NLA które prosi nas o dane logowania do serwera terminali. Można sobie je tam zapisać i gra. Od teraz po zalogowaniu do systemu połączenie RDP będzie się zestawiało z automatu do czasu aż ktoś nie zmieni hasła wtedy okienko NLA znów wyskoczy i poprosi o zaktualizowanie hasła. Niby fajnie ale czy na pewno o to chodzi ? Przeszukałem kilka blogów i rożnych innych miejsc gdzie można poczytać o CredSSP i nigdzie nie jest napisane/pokazane jaki w sumie powinien być efekt końcowy.

Na moje oko powinno to działać tak, ze żadne okienko NLA w ogóle nie wyskakuje, CredSSP po prostu ma przekazywać dane logowania do costam.rdp i tyle. Może metoda, która ja wywołuje costam.rdp jest niewłaściwa a może kompletnie źle interpretuje zasadę działania credssp i jest jak być powinno.  Jest wiec jeszcze jeden klucz w rejestrze z tym ze.. Po co on jest i co to daje to ja nie wiem, możne źle tworze ten klucz, możne czegoś nie rozumiem ale nie ma żadnej różnicy w zachowaniu systemu / procesu logowania w przypadku istnienia lub nie istnienia tego klucza, może ktoś sprawdzi u siebie i skomentuje. Tak czy siak tworzymy kolejny podklucz w gałęzi Credentials Delegation o nazwie: AllowDefaultCredentials a w nim definiujemy wartość typu: REG_SZ o nazwie 1 i wartości TERMSRV/nazwa_serwera_terminali. Ogólnie takie coś:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefaultCredentials

„1”=”TERMSRV/*”

Ten klucz ma niby wskazywać na domyślne serwery terminali, czyli, że jakoś po zalogowaniu system w jakiś sposób ma się z nimi połączyć. Nie wiem sam z siebie chyba. No u mnie się nie łączył wiec ja to u siebie wywaliłem bo nic nie daje. Tak czy siak mimo, ze chyba nie do końca działa to tak jak powinno, ale liczę, że to dlatego, że to ja coś źle robię to i tak sporo ułatwia, przynajmniej dla usera bo tylko raz musi wprowadzić dane logowania. Nie ma też zamieszania po zmianie hasła bo samo go zapyta o aktualizacje.

Trochę linków:

http://support.microsoft.com/kb/951608 – CredSSP klucze rejestru.
http://msdn.microsoft.com/en-us/library/cc226764(PROT.10).aspx – Protokół
http://technet.microsoft.com/en-us/library/cc742808.aspx
Terminal Services Team Blog
PFE Ireland

Wszelkie komentarze mile widziane ;)

Advertisements
  1. Brak komentarzy.
  1. No trackbacks yet.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: