IIS ASP.Net Windows 身份验证不起作用

IIS ASP.Net Windows 身份验证不起作用

我有一个内部网网络应用程序。

即使我已设置“Windows 身份验证 = 已启用”(并且所有其他身份验证都被禁用),当应用程序尝试访问资源时,它仍会被视为由运行应用程序池进程的同一用户运行。

这里是不是有问题,还是我没有正确理解 Windows 身份验证的工作原理?
如果我做过理解错了,还有其他方法可以让应用程序以客户端用户身份运行吗?

答案1

远程资源?如果使用 Kerberos,需要注意几点才能使其正常工作。要让 IIS 计算机在访问远程资源时模拟用户,它需要为用户生成委托级令牌。

如果应用程序池在自定义标识下运行(在这些情况下通常是这样),则帐户需要具有执行无约束委派的能力。在 Active Directory 用户和计算机中的帐户委派选项卡上,选择“信任此用户委派任何服务(仅 Kerberos)”。

如果您没有看到“委派”选项卡,则表示尚未为该帐户分配 SPN。需要先使用 setspn.exe 命令进行更正。

IIS 身份帐户需要在 IIS 服务器上具有“充当操作系统的一部分”权限(SetTCB 权限)。

下载委派配置工具并将其作为应用程序添加到网站上。它允许您浏览应用程序 URL 并生成一份报告,以确定委派是否配置正确。

代码还可以很容易地检查令牌类型以确定它是否是委托令牌,并将该信息记录到文件中。

摘要(Kerberos 协议转换和约束委派)
http://technet.microsoft.com/en-us/library/cc772683%28v=ws.10%29.aspx

如何:在 ASP.NET 2.0 中使用模拟和委托
http://msdn.microsoft.com/en-us/library/ff647404.aspx

DelegConfig 下载
https://www.iis.net/community/default.aspx?tabid=34&g=6&i=1887

http://channel9.msdn.com/posts/Troubleshooting-Kerberos-Delegation-Using-DelegConfig

答案2

您必须将模拟添加到您的 web.config 中:

<identity impersonate="true" />

http://support.microsoft.com/kb/306158

相关内容