我正在尝试部署一个MVC3应用程序,该应用程序需要Windows身份验证(特别是Kerberos)作为旧的asp.net匿名身份验证网站中的应用程序。
在我的盒子上的IIS 7.5 Express中,它显然非常完美。当我将它作为自己的站点部署到IIS 7.5时,我会受到域凭据的质疑,尽管没有人接受。当我将其部署为应用程序时,我从托管站点返回自定义错误页面。要确认 - Kerbtray在任一情况下都没有显示票证。
站点和新子应用程序都运行在同一个应用程序池中,应用程序池作为AppPoolIdentity运行。该内置IIS应用程序池帐户(IIS AppPool\MyAppPoolName
)具有完全读取/执行权限,包括站点和应用程序的文件夹树。没有使用假冒。
如果没有,任何有关事物/地点的建议都会很棒 - ApplicationHost.config
和应用的web.config
文件看起来很不错。
编辑:为了澄清,这一切都在公司网络上广泛使用Kerberos用于其他目的。 “站点”是指IIS网站,区别于必须在IIS站点中托管的“应用程序”。
答案 0 :(得分:2)
在完成这项工作之后,我找到了答案:
只要在IIS 7.5上的匿名身份验证的IIS站点中托管Windows(Kerberos)经过身份验证的IIS应用程序,就没有什么特别之处:
一个。内核模式身份验证已启用 - 无需SPN。 湾该应用程序使用与托管父级相同的App Pool Identity。可以使用不同的应用程序池及其身份,但这确实需要进一步的NTFS权限,超出了此特定问题的范围。
我的错误问题更为简单但难以捉摸......父网站在<HttpErrors>
中定义了一组自定义错误页面,包括401和403的页面。
这是用户从嵌套应用程序请求页面时返回的错误页面,因为Kerberos首先发送401,向用户挑战凭据并要求/他获取并提供Kerberos票证......但是因为父站点返回200响应(自定义错误页面),用户从未获得Kerberos票证。
关闭这些功能后,用户现在正在适当地获取Kerberos票证并默认返回NTLM。