在本地 Intranet 环境中,如果我们想使用模拟 Windows 域用户,我们是否注定要在应用程序池中使用“经典”管道模式,或者是否有一种新的方法来声明性地“以身份运行”(所以-说话)?
我的目标是对 Intranet 上的本地 Web 应用程序使用 Windows 身份验证,以便用户可以在其 Active Directory 帐户下进行身份验证并运行应用程序(原则)。每次我尝试此操作(当然使用 NetworkService 身份)时,都会收到此错误:
最佳答案
我编写了一个小应用程序来显示从多个不同位置(例如Page.User.Identity.Name
)获取的当前用户的网络用户名。我还使用几种不同的方法来查询 Active Directory 来获取有关域用户的信息。所有这一切都是为了验证以下内容。
我发现使用 Windows 身份验证运行应用程序有两种主要模式,根据我的研究,这主要用于 Intranet 环境。以下是配置的最低基本要素:
经典模式
- AppPool - 托管管道设置为经典模式。
- AppPool - 身份设置为网络服务。
- 身份验证 - 已禁用:匿名身份验证
- 身份验证 - 已启用:ASP.NET 模拟
- 身份验证 - 已启用:Windows 身份验证
- 提供商 - 已禁用:Kerberos
- 高级设置 - 内核模式:任一
集成模式
- AppPool - 托管管道设置为集成模式。
- AppPool - 身份设置为网络服务。
- 身份验证 - 已禁用:匿名身份验证
- 身份验证 - 已禁用:ASP.NET 模拟
- 身份验证 - 已启用:Windows 身份验证
- 提供商 - 已启用:Kerberos
- 高级设置 - 内核模式:已禁用
现在最重要的是!!
如果您想使用集成模式(这是理想的选择,因为它会产生更多功能,而且是集成),您将需要启用委派。这里有几篇必读文章,以了解 Delegation 的基础知识,并延伸Dynamic SPN Registration 。由于这会涉及更多您可能愿意深入研究的 Kerberos 和安全注意事项,因此坚持使用经典模式可能会更容易,您所要做的就是启用模拟并收工;否则作弊并禁用 validateIntegratedModeConfiguration
。
关于iis-7.5 - 使用集成管道模拟域用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966286/