Coraz częściej w pracy stykam się z koniecznością ustawienia autentykacji poprzez protokół Kerberos, więc stwierdziłem, że podzielę się z wami linkami bez których zrozumienie działania tego protokołu oraz zasad jego konfiguracji nie byłoby możliwe (przynajmniej dla mnie;) ).

Podstawą w kerberos jest poprawne skonfigurowanie SPN. Wiele artykułów w sieci podaje błędnie informacje na temat ich rejestracji, przez co częstym problemem jest ich duplikacja w domenie. Pierwszym artykułem który polecam jest Essential Tips On Kerberos for SharePoint Deployers. Nazwa wskazuje na SharePoint, jednak tyczy się ogólnie ustawiania SPN. Polecam ten artykuł dlatego, że otworzył mi oczy na moje ustawienia SPN – miałem masę podwójnych po tym jak robiłem wszystko zgodnie z tutorialem z jednej z książek, której nazwy nie wymienię ;)

Jak to, już przez to przebrniecie to polecam serię:

Dzięki tym linkom powinniście już być wstanie skonfigurować sobie tak site, by działał on po protokole kerberos. Autor omawia szczegółowo krok po kroku co powinniście zrobić w konkretnych scenariuszach, oraz opisuje jak działanie kerberosa w nich – gdzie i jak jest ticket przekazywany.

Przydatna do testowania tego całego rozwiązania będzie aplikacja DelegConfig. Jest to prosty site ASP.NET, na który wchodzimy z klietna (np.: IE). Podpowie nam ona czego brakuje, co jest nie tak, lub będzie świeciła na piękny kolor zielony jeżeli wszystko jest OK.

Dodatkowo, Kerberos można ustawić na SQL Server jak i SQL Server Analysis Services oraz Excel Services:

Bardzo ciekawy jest STEP 3 w pierwszym artykule. Pokazuje on w jaki sposób ustawić tak konto SQL Server’a by nie trzeba było potem się martwić o SPNy – będą one automatycznie ustawiane.

Przy SQL warto wspomnieć o tym, że w zależności od wersji systemu Windows na którym stoi domena, różne będą protokoły. Dla domeny w Windows 2000 będziecie wykorzystywać dla SQL Server wartośći MSSQLSvc zaś dla Analysis Services wartośći MSOLAPSvc. Zaś dla domeny w Windows 2003, do każdej wartości z Windows 2000, należy dodać .3, czyli MSSQLSvc.3 i MSOLAPSvc.3.

Podczas konfiguracji Kerberos, należy też wiedzieć iż ustawienie na cross domain na Windows 2000 jest nie możliwe. Tak samo jak na cross domain Windows 2000 i Windows 2003. Jest to spowodowane ustawieniem „ufności” dwóch domen. Poniższy pierwszy akapit artykułu, powinien wam już dużo powiedzieć (link i pomoc przy tym uzyskałem od nExoRa – jeszcze raz dzięki!):

One of the important features of Windows Server 2003 was that Microsoft finally achieved the ability to create a true Kerberos trust between forests, also called a "cross-forest trust." This was noticeably missing in Windows 2000 Server, which allowed only NTLM or "external" trusts that did not have transitivity.

Szersze wytłumaczenie można znaleźć w poście zatytułowanym Kerberos demystified.

Mam nadzieję że po tych lekturach nie będziecie mieli kłopotu z kerberosem :) jeżeli jednak wciąż coś wam nie wychodzi, dajcie znać w komentarzach a pomogą w ramach możliwości :)

PS.: Jeżeli wasza strona znajduje się dla przykładu na serwerze server01 zaś ustawiliście jej adres mojastrona.domena.pl lub coś podobnego, może się zdażyć iż wam kerberos nie zadziała. Dzieje się tak, że przeważnie ludzie dodaję wpis Alias (CNAME) dla Forward Lookup Zones zamiast HOST (A). Wystarczy, że usuniecie wpis CNAME i dodacie HOST i wszystko wam będzie śmigać (jeżeli cała reszta konfiguracji przebiegła pomyślnie oczywiście :D)

PS2.: Coś dla SharePoint’owców. Dwa bardzo dobre krótkie artykuły jak ustawić Kerberos dla SharePoint:

PS3.: nExoR też wrzucił info o IIS i Kerberos, zapraszam do lektury (krótkiej, ale treściwej). Warto zwrócić uwagę na drukowane LITERY, bo to też jest bardzo ważne: http://www.w-files.pl/iis-i-kerberos/

10 KOMENTARZE

  1. @ Jacek

    Kerberos jest mechaniznem autentykacji security principal (kompa, osoby). Polega na przekazywaniu ticketu, ktory uzysukuje sie poprzez pierwsze autentykacje. Np.: wchodzisz na strone IIS, ktora odpytuje sie kolejnej strony o dane, ktore sa pobierane z serwera SQL. Przy NTLM byl byl poproszony o autentykacje do pierwszej strony, nastepnie do drugiej. Kerberos zalatwia to all. Logujesz sie do pierwszej, do drugiej jest przekazywany ticket, ktory nastepnie przekazywany jest do bazy danych.

    Nie chce tego porownywac do Single Sign-On, ale to mniej wiecej o to chodzi. Logujesz sie raz do domeny i wszystkie zasoby firmy sa dla Ciebie dostepne – jezeli masz do nich uprawnienie. Nie zastanawiasz sie nad zapamietywaniem hasel itp.

    Dobre artykul co to jest kerberos, znajdziesz tutaj (przeczytaj elementy od 59 do 63):

    http://alt.pluralsight.com/wiki/default.aspx/Keith.GuideBook.HomePage

    Jezeli masz jeszcze jakis pytania to wal :)

  2. Witam.Pytanko o ten wpis w dnsie, a propo CNAME i HOST.Jeżeli iis ma webaplikację z nagłówkiem xxx, to ustawienie CNAME powoduje, że można się łączyć z tą stroną przez http://xxx ,natomiast wpisanie HOST’a zamiast CNAME’a powoduje, że xxx można pingować, natomiast w przeglądarce nie jest dostępny. Zrobiłem gdzieś błąd czy tak ma być i trzeba jeszcze dodatkowo cos skonfigurować?

  3. @Marcin

    Jak masz ustwaiony IIS? chodzi glownie o Advance web site indentification (propertis na web app, i tem na pierwszej zakladce przycisk advance przy IP address).

    Dodaj tam wpis host, by komp wiedzial, ze ma na niego reagowac.

    Dodatkowo moze sie tak zdazyc iz musisz powiedziec przegladarce iz adres nalezy do Intranetu lub Internetu. Tu masz info:
    http://briannoyes.net/PermaLink.aspx?guid=34f614d2-53aa-4af4-bd7c-581d8e3af856

    ostatni screenshot pokazuje przycisk advnaced -kliknij w niego i dodaj wpis.

    Takze moze sie okazac iz masz klopot z plikem host, na windows, ale skoro Ci pinguje to raczej nie masz z tym problemu.

    daj znacz czy kroki zadzialaly

    Gutek

  4. No przy wyklikaniu nowej web aplikacji, sharepoint sam konfiguruje IIS’a i tam już jest nagłówek. W tej chwili chwilowo odłożyem ten problem, bo w trakcie konfigurowania kerberosa pojwiły mi się dwa problemy.Jeden, to w pewnym momencie ta webaplikacja się ‘wykrzacza’. Ładuje sie strona z errorem ‘Server application unavailable’, w logach pojawiaj się błedy związane z frameworkiem 2gim. Event 1309:
    Either a required impersonation level was not provided, or the provided impersonation level is invalid. (Exception from HRESULT: 0x80070542).

    Drugi problem to sql, pomimo tego, że ustawiam SPN’y, to cały czas sql mi zwraca ‘auth_scheme’=ntlm..
    Swoją drogą, sharepoint to maszyna z windowsem 2008, ale to nie powinno mieć z tym nic wspólnego.
    Ta web aplikacja już mi działała wcześniej, przeinstalowanie sharepointa nie pomaga, po stworzeniu aplikacji dalej jest błąd..

  5. Czy przy rejestracji sq’a (wszystkie serwisy na jednym koncie domenowym, sql2005 na win2003, sqlserver-nazwa serwera, x.y.z-nazwa domeny), powinno się rejestrować w końcu MSSQLSvc.3 czy bez .3? I powinno to wyglądać tak?:
    setspn -a MSSQLSvc.3/sqlserver:1433 xkontosql
    setspn -a MSSQLSvc.3/sqlserver.x.y.z:1433 xkontosql
    ?
    Sprawdziłem, na 1433 działa sql. I pomimo wszelkich kombinacji ciągle sql zwraca ntlm’a.

  6. @Marcin

    1) Czy twoje konto na ktorym stoi SQL ma w domenie wlaczone “delegate user” czy jakos tak?
    2) Jezeli zrobisz kroki opisane w KB poprawnie, SQL sam sie bedzie rejestrowal w SPNach. Sprawdz wiec czy nie masz podwojnych (-L)
    3) Blad Server application unavailable to blad app pool. Cos Ci tam siada – zle haslo? konto od app pool nie nalezy do grup w na kompie lokalnym: IIS_WPG, WSS_WPG oraz innych jezeli jest to wymagane?
    4) czy komputery ktore maja przekazywac ticket maja wlaczone delegate?

    Ciezko sie takie sprawy na odleglosc robi :(

    Odpisz na pytania i zrobie co bede mogl by Ci pomoc

    Gutek

  7. Błąd webaplikacji udało się usunąć, dodając konto, na którym działa aplikacja do lokalnych administratorów. Nie doszedłem jakie uprawnienia i gdzie były potrzebne..
    Natomiast z tym sqlem to to wszystko jest jak powinno..Konto ma delegację, serwery też. Nie do końca rozumiem tą ‘podwójność’ spnów. Czy to znaczy, że podwójny jest wtedy, kiedy np. MSSQLSvc.3/serwer jest zarejestrowane na dwóch różnych kontach?Jeśli tak, to nie mam podwójnych..

  8. @Marcin

    Nie, chodzi o to, ze jezeli skonfigurowales poprawnie wszystko zgodnie z KB:
    http://support.microsoft.com/kb/319723/

    To jezeli wykonales krok:
    Step 3: Configure the SQL Server service to create SPNs dynamically

    i nastepnie sam dodales SPNy to mozesz je miec podwonie stworzone. Podwojny moze istniec kidy masz 2 te same wpisy dla tego samego konta, 2 wpisy dla roznych kont itp. Windows musi dostac unikatowa pojedyncza wartosc, inaczej to nie zadziala.

    Dla testu tez mozesz wykozystac sample z tego KB, lub aplikacje AuthDiag.

    Daj znac jak z tymi SPNami bylo. Oraz zrob test DelegConfig i zobacz co tam jest na czerwono – bardzo dobrze podpowiada bledy. Prosta aplikacja a potrafi rozwiazac wiekszosc problemow. Wrazie czego tutaj jeszce raz link do niej:
    http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1434

    Gutek

Comments are closed.