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. [more]
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