Windows autentizace lokálně na serveru podruhé
Skoro před rokem jsem si v tomto článku poznamenal, jakým způsobem bezpečně povolit testování webu s windows autentizací přímo na serveru. Migroval jsem náš web server postavený na Windows 2003 na nový virtuální s Windows 2012. Vzpomněl jsem si, že jsem uvedený problém již jednou řešil, takže jsem se mrknul do blogu, vytvořil příslušný klíč BackConnectionHostNames, nakrmil jej URL webů, které chci lokálně testovat – a ono nic. Jo aha, on se nejdřív musí ještě nakonfigurovat prohlížeč. Tak hotovo, hm, ale pořád nic.
Zkrátím to – trvalo mi to několik hodin, než jsem pořádně zaostřil na přihlašovací okno. A říkám si – kruci, vždyť se přeci snažím přihlásit k webu např. http://demo.domena.tld/. Tak co tam dělá jméno související s názvem fyzického serveru? Kvůli vysvětlení musím krapet odbočit.
Přemýšlel jsem, jaký je rozdíl mezi starým a novým web serverem. Jedná se o interní weby, které běží na Windows 2012. Od Windows 2008 už neexistuje koncept primární IP adresy. A místo toho si Windows samy vybírají, jakou IP adresu z těch, které se přiřazují serveru, použijí. Jsou případy, kdy to není vhodné. Proto jsem na web serveru přidal “dodatečné” IP adresy pomocí netsh s parametrem skipassource=true.
Takže primární záznam web serveru v interní AD DNS zóně je hamsweb02.metro.st. Dodatečné adresy pak mají staticky vytvořené DNS záznamy ve tvaru hamsweb02-XXX.metro.st, kde XXX je poslední oktet IP adresy.
Jednotlivé weby jsem přesouval, otestoval pomocí “falešného” záznamu v HOSTS z mého počítače (mimo doménu) a lokálně na serveru, který v doméně je. Teprve poté jsem přehodil záznam v interní DNS zóně. A abych si v tom udělal pořádek, využil jsem konstrukce
demo.domena.tld. CNAME hamsweb02-71.metro.st.
Vzdáleně z počítače, který není v doméně (fallback na NTLM) vše OK. Z jiného doménového počítače (přes Kerberos) vše taktéž OK. Jen lokálně přímo z web serveru se integrovaná auntentizace nedaří.
Nechtěl jsem tomu věřit, ale přesto jsem do BackConnectionHostNames přidal staticky vytvořený DNS záznam hamsweb02-71.metro.st. Restart prohlížeče – a ono to funguje! V dalším kroku jsem odstranil konkrétní názvy webů – šlape to pořád, z čehož vyplývá následující pravidlo:
URL webu - záznam v DNS | Obsah BackConnectionHostNames |
A | názvy webů, např. http://demo.domena.tld |
CNAME | rodičovský A záznam, např. http://hamsweb02-71.metro.st |
Funkčnost jsem otestoval v IE, FF, Chrome. Mimochodem, právě podpora Kerberos/NTLM v těchto prohlížečích je výborný námět na další článek.