Nástroj na testování Kerberos/NTLM autentizace

Totálně, ale totálně jsem se zahrabal do rozvrtané konfigurace interního IIS webu, kde najednou přestal fungovat přístup z Internet Exploreru, Chrome. Jediné, co fungovalo, byl Firefox. Později jsem zjistil, že to bylo kvůli tomu, že Firefox se standardně nesnaží autentizovat přes Kerberos a spoléhá na NTLM.

Velmi mi pomohl nástroj Kerberos Authentication Tester. Ukázal mi, jestli byl využit Kerberos nebo NTLM, jaké SPN bylo použito.

Při této příležitosti si můžu shrnout základní otestované postupy:

Server se jmenuje server1.domain.lan. V AD-integrované DNS zóně je vytvořen statický A záznam pro tento server. Web používá host-header intranet.firma.cz a druhý web má host-header crm.firma.cz. V AD-integrované DNS zóně existují CNAME těchto názvů odkazující na A záznam server1.domain.lan. Web má zaškrtnuto pouze Windows Authentication. Providers jsou v pořadí Negotiate, NTLM. Je zaškrtnuto "Enable Kernel-mode authentication".

Od Windows 2008 již není potřeba vytvářet v této konfiguraci žádné dodatečné SPN záznamy, vše funguje, jak má.

Pokud bych však záznam intranet.firma.cz nevytvořil jako CNAME, ale jako A záznam, Kerberos by nefungoval. Abych jej rozchodil, bylo by třeba vytvořit dodatečný SPN záznam pomocí následujícího příkazu:
SetSPN -S http/intranet.firma.cz SERVER1

Na rozdíl od Windows 2003 již není třeba přidávat SPN k identitám aplikačních poolů. Tzn. při migraci z Windows 2003 na W2008 a vyšší je vždy třeba zkontrolovat, zdali daný SPN již v doméně neexistuje, odstranit jej ze starého objektu a v případě potřeby přidat. Výjimkou jsou webové farmy, ale ty tady teď řešit nebudu.

Abych mohl testovat weby přímo na lokálu web serveru, je potřeba v registrech přidat:

HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
New Multi-String Value (neboli REG_MULTI_SZ)
Name:  BackConnectionHostNames
Value:   intranet.firma.cz
              crm.firma.cz

Pomocí PowerShellu takto:

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa\MSV1_0 -Name "BackConnectionHostNames" -value "intranet.firma.cz","crm.firma.cz" -PropertyType MultiString

Druhou možností je Loopback check zcela vypnout:
New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -value "1" -PropertyType dword

Zdroje:

http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for-kerberos-authentication-with-iis-7-0.aspx

http://blogs.msdn.com/b/friis/archive/2009/12/31/things-to-check-when-kerberos-authentication-fails-using-iis-ie.aspx

http://support.microsoft.com/kb/2545850