Nástroj na testování Kerberos/NTLM autentizace
http://old.dolezel.net/post/2016/01/20/Nastroj-na-testovani-KerberosNTLM-autentizace
20.01.2016 21:25:18
Autor: radek

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".

KernelModeAuth

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