Kerberos身份验证MVC App在匿名访问站点内

时间:2012-03-08 00:15:16

标签: asp.net authentication iis-7.5 windows-authentication kerberos

目标

我正在尝试部署一个MVC3应用程序,该应用程序需要Windows身份验证(特别是Kerberos)作为旧的asp.net匿名身份验证网站中的应用程序。

症状

在我的盒子上的IIS 7.5 Express中,它显然非常完美。当我将它作为自己的站点部署到IIS 7.5时,我会受到域凭据的质疑,尽管没有人接受。当我将其部署为应用程序时,我从托管站点返回自定义错误页面。要确认 - Kerbtray在任一情况下都没有显示票证。

详细信息

站点和新子应用程序都运行在同一个应用程序池中,应用程序池作为AppPoolIdentity运行。该内置IIS应用程序池帐户(IIS AppPool\MyAppPoolName)具有完全读取/执行权限,包括站点和应用程序的文件夹树。没有使用假冒。

问题(S)

  1. 为了让NTLM和Kerberos在匿名身份验证网站内的应用程序上运行,我需要做些什么特别的事情吗?
  2. 如果没有,任何有关事物/地点的建议都会很棒 - ApplicationHost.config和应用的web.config文件看起来很不错。


    编辑:为了澄清,这一切都在公司网络上广泛使用Kerberos用于其他目的。 “站点”是指IIS网站,区别于必须在IIS站点中托管的“应用程序”。

1 个答案:

答案 0 :(得分:2)

在完成这项工作之后,我找到了答案:

  1. 只要在IIS 7.5上的匿名身份验证的IIS站点中托管Windows(Kerberos)经过身份验证的IIS应用程序,就没有什么特别之处:

    一个。内核模式身份验证已启用 - 无需SPN。 湾该应用程序使用与托管父级相同的App Pool Identity。可以使用不同的应用程序池及其身份,但这确实需要进一步的NTFS权限,超出了此特定问题的范围。

  2. 我的错误问题更为简单但难以捉摸......父网站在<HttpErrors>中定义了一组自定义错误页面,包括401和403的页面。

    这是用户从嵌套应用程序请求页面时返回的错误页面,因为Kerberos首先发送401,向用户挑战凭据并要求/他获取并提供Kerberos票证......但是因为父站点返回200响应(自定义错误页面),用户从未获得Kerberos票证。

    关闭这些功能后,用户现在正在适当地获取Kerberos票证并默认返回NTLM。