我问了这个问题,关于堆栈溢出的研究,但我意识到这可能是一个更好的地方张贴它。
我在Windows 2016上使用IIS 10。
我已经成功地将IIS配置为在访问站点时使用Windows身份验证。当使用服务器的IP地址或主机名时,这种方法工作得很好。
但是,我将在同一服务器上托管几个站点,因此我尝试配置一些DNS记录以指向服务器的IP (A records),并通过在IIS绑定中为该站点定义主机名,在浏览器中使用该名称时,我成功地连接到了正确的站点。
但出于某种原因,这破坏了Windows身份验证。当将用户名和密码放入浏览器登录框时,它只是无法进行身份验证。
我读了这个答案,但它没有提供一个解决方案(https://stackoverflow.com/questions/15366649/iis-windows-authentication-weirdness)
我试着用不同的方式编写用户名:
username
domain\username
domain.local\username但没什么区别。
我看过此页,但它似乎不适用。
建议我尝试使用以下命令:adsutil set w3svc/EnableReverseDNS FALSE关闭IIS中的反向DNS检查。为了做到这一点,我必须添加角色IIS 6管理兼容性。
有人知道怎么做吗?
发布于 2018-01-13 23:07:13
我假设它是一个域成员,因为你发布的用户名语法。
如果您已经使用了A记录,那么为了使Kerberos身份验证成功,您需要为每个名称定义一个服务主体名称,该名称属于目标站点的进程标识。(如果您将其放在默认的ApplicationPoolIdentity、LocalService、NetworkService或Local中,则将是机器帐户。)
有一个副作用,您可以利用它来测试理论,即IE做CNAME的记录分辨率和查询SPN的已解析目标名称.
因此,如果您将fakehost.mydomain作为MACHINENAME的CNAME,IE将解析MACHINENAME,然后使用HTTP/MACHINENAME作为它正在查找的SPN --这意味着您不必创建任何额外的SPN。只要所有站点的标识都是机器,就可以工作。
现在,奇怪的是,Kerb身份验证不应该是唯一的选择,我感兴趣的是,当Kerb无法检索到票证时,NTLM回退根本不起作用,因此这里可能存在其他一些设置或复杂性,使事情变得复杂。据猜测,这就是扩展保护可能会有问题的地方。或者,auth设置不再作为故障排除/设置的一部分进行协商(这意味着,如果Kerb失败,则需要协商Kerb和NTLM )。
最后,虚线主机名的奇妙之处在于,它们倾向于调用代理--如果您在IE中定义了代理,则禁用它以进行测试。
超级--最后,它不太可能与IIS的DNS视图有关,因此您可以卸载IIS管理6(IIS Management 6)--您在IIS中无法配置或破坏任何东西,都需要使用遗留兼容性来修复它。
https://serverfault.com/questions/892080
复制相似问题