我刚刚建立了一个基本的ASP MVC网站,可以在我们的内部网上进行部署.它希望用户与IIS框位于同一个域中,如果您不是经过身份验证的Windows用户,则不应该访问.
我刚刚将它部署到运行在Server 2003 R2 SP2上的IIS6.Web应用程序配置了自己的池,并拥有自己的池用户帐户.Web应用程序的IIS目录安全性选项仅设置为"Windows Integrated Security",web.config文件具有:
从IIS6服务器本身的远程桌面会话,如果通过http:// localhost/myapp访问,IE7浏览器窗口可以成功验证和导航Web应用程序.
但是,同样来自服务器,如果通过服务器的名称访问(即http:// myserver/myapp),则IE7会显示一个凭据对话框,在三次尝试输入正确的凭据后最终返回"HTTP错误401.1 - 未经授权:访问被拒绝到期无效的凭证".
当工作站浏览到Web应用程序URL时(自然地使用服务器的名称而不是"localhost"),会出现同样的问题.
IIS6服务器是我们唯一的域的成员,并且没有启用防火墙.
有没有我无法正确配置的工作?
谢谢,
我已经尝试过Matt Ryan,Graphain和Mike Dimmick的建议,但没有成功.我刚刚构建了一个虚拟机测试实验室,其中包含Server 2003 DC和单独的服务器2003 IIS6服务器,我能够复制该问题.
我第一次尝试通过非localhost网址(即http:// iis/myapp)访问网站时,在IIS6服务器的系统事件日志中看到一个条目.FQDN网址也失败了.
来源:Kerberos,事件ID:4
kerberos客户端从服务器主机/ iis.test.local收到KRB_AP_ERR_MODIFIED错误.使用的目标名称是HTTP/iis.test.local.这表示用于加密kerberos服务票证的密码与目标服务器上的密码不同.通常,这是由于目标领域(TEST.LOCAL)中的同名机器帐户和客户端领域.
Jason Stangr.. 7
经过广泛的谷歌搜索后,我设法找到以下MSDN文章的解决方案:
如何:为ASP.NET 2.0应用程序创建服务帐户
特别是"附加注意事项"部分,其中描述了"使用Windows支持工具中的setspn工具为域帐户创建服务主体名称(SPN)":
setspn -A HTTP/myserver MYDOMAIN\MyPoolUser
setspn -A HTTP/myserver.fqdn.com MYDOMAIN\MyPoolUser
这解决了我在虚拟测试实验室和原始问题服务器上的问题.
本文还有一个重要的注意事项,即对自定义池用户使用Windows身份验证会限制仅由该池使用的关联DNS名称.也就是说,具有另一个身份的另一个池需要与不同的DNS名称相关联.
经过广泛的谷歌搜索后,我设法找到以下MSDN文章的解决方案:
如何:为ASP.NET 2.0应用程序创建服务帐户
特别是"附加注意事项"部分,其中描述了"使用Windows支持工具中的setspn工具为域帐户创建服务主体名称(SPN)":
setspn -A HTTP/myserver MYDOMAIN\MyPoolUser
setspn -A HTTP/myserver.fqdn.com MYDOMAIN\MyPoolUser
这解决了我在虚拟测试实验室和原始问题服务器上的问题.
本文还有一个重要的注意事项,即对自定义池用户使用Windows身份验证会限制仅由该池使用的关联DNS名称.也就是说,具有另一个身份的另一个池需要与不同的DNS名称相关联.