我已经安装了 Windows Server 2003 R2 和 IIS 角色(没有 Active Directory 角色)。我设置了一个名为“test”的虚拟目录,并在“test”虚拟目录的“安全”选项卡下禁用了匿名登录并启用了集成 Windows 身份验证。服务器位于本地网络上。我所做的是使用浏览器访问服务器上的 test/ 目录。以下是日志:
**IE on Server**
localhost - works
127.0.0.1 - works, asks for password, 8 second delay
domain.com - fails, asks for password, after 3 seconds asks for
a password again, the username field changes to: domain.com\username
172.28.28.100 - works, asks for password, 8 second delay
。
**Firefox on Server**
same as above
domain.com - the 'Remember the password' tooltip displays for
a fraction of a second and then the browser asks
for the password again
。
**IE on other LAN host**
172.28.28.100 - works, asks for password, 8 sec delay
domain.com - works, asks for password, 8 sec delay
**Firefox on other LAN host**
- same as above, no delay
我显然做错了什么,但我不知道是什么。我读过有关 SPN 的信息,但当我使用 setspn -L localhost 时,没有显示 SPN(我猜是因为服务器不是 DC)。为什么我无法使用 domain.com 上的 Windows 集成身份验证登录服务器?
答案1
完全误读了问题,所以进行第二次尝试。
假设:
- 该服务器是 AD 2000+ 域成员
- 客户端是域成员
当您输入“domain.com”时,IE 将构建一个服务主体名称 http/domain.com 并要求 DC 为其提供一张票。
如果 domain.com 是真实存在的,即您的 AD 域名,那么这种做法是行不通的。至少,我认为是行不通的。
尝试这以获得有关 SPN 的指导。也请采纳第一条建议,并使用 2008 版 SetSPN 来执行 SPN 操作。
简而言之,您使用应用程序池帐户(如果是 IIS 6,则默认为网络服务,因此计算机帐户为“webserver$”)并在其上注册一个 SPN:
SETSPN -S http/example.com 域\WebServer$
从理论上来说,此时,一切正常。
我认为 FireFox 不会对服务器进行 Kerb 身份验证,并且 IE 需要更长时间才能失败,因为它正在尝试这样做。
答案2
这个问题需要解决的几个问题:
如果没有 Active Directory 或 NT 域 ,
domain.com\username
则无法进行身份验证
domain\username
域名.com进行身份验证。您可能必须强制使用本地帐户
*IIS Computer Name*\username
作为您的登录 ID,以便成功通过 IIS 服务器上的本地帐户的身份验证。你可能想要设置你的站点 NTAuthenticationProviders禁用谈判 身份验证过程并强制 IIS 使用NTLM:
cscript adsutil.vbs set w3svc/__YourWebSite__/root/NTAuthenticationProviders "NTLM"
最简单、最快的方法是使用“基本身份验证”,但如果您没有使用 SSL 保护登录流量,则会出现安全问题。