asp.net - 匿名访问站点内的 Kerberos 身份验证 MVC 应用程序

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

目标

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

症状

在我的机器上的 IIS 7.5 Express 中,显然它运行得非常完美。当我将其部署到 IIS 7.5 作为自己的站点时,我收到了域凭据的质询,尽管没有一个被接受。当我将其部署为应用程序时,我从托管站点返回自定义错误页面。确认 - Kerbtray 在这两种情况下都没有显示票证。

详细信息

站点和新的子应用程序都在同一应用程序池上运行,并且应用程序池作为 AppPoolIdentity 运行。该内置 IIS 应用程序池帐户 (IIS AppPool\MyAppPoolName) 具有站点和应用程序文件夹树的完整读取/执行权限。不使用任何模仿。

问题

  1. 要让 NTLM 和 Kerberos 在匿名身份验证站点内的应用程序上运行,我需要做些什么特别的事情吗?

如果没有,任何关于要查看的事物/位置的建议都会很棒 - ApplicationHost.config 和应用程序的 web.config 文件看起来不错。


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

最佳答案

经过更多研究后,我找到了答案:

  1. 在 IIS 7.5 上的匿名身份验证 IIS 站点中托管经过 Windows (Kerberos) 身份验证的 IIS 应用程序不需要任何特殊操作,只要:

    a.内核模式身份验证已打开 - 无需 SPN。 b.该应用程序使用与托管父级相同的应用程序池标识。可以使用不同的应用程序池及其标识,但这确实需要进一步的 NTFS 权限,并且超出了此特定问题的范围。

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

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

关闭这些功能后,用户现在可以适本地获取 Kerberos 票证并默认回退到 NTLM。

关于asp.net - 匿名访问站点内的 Kerberos 身份验证 MVC 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9611177/

相关文章:

java - 使用crawler4j进行身份验证

authentication - 如何正确获取由前端设置的 kubernetes 集群中的服务发出的 cookie?

iis-7.5 - 使用集成管道模拟域用户

web-config - IIS 7.5 : Setting 'app pool user' as the anonymous user programmatically

c# - 执行JQuery脚本时页面滚动到顶部

javascript - 在 GridView TemplateField TextBox 中,输入键的执行方式与 Tab 类似

asp.net - 将单选按钮列表绑定(bind)到 gridview 中的列

iphone - 如何终止 iPhone 中的 ASIHTTP 连接?

asp.net - 将 Windows 身份验证重定向到自定义 401 页面

c# - 将文件写入响应后启用按钮