我有一个Intranet Web应用程序。
即使我已经设置了“Windows身份validation=启用”(并且所有其他身份validation都被禁用),当应用程序尝试访问资源时,它将被视为由运行应用程序池进程的同一用户运行。
这里是否有问题,或者我不太了解Windows身份validation的工作原理?
如果我弄错了,是否有另一种方式使应用程序作为客户端用户运行?
远程资源? 如果使用Kerberos,那么有一些注意事项可以正确地工作。 为了使IIS计算机在访问远程资源时模拟用户,需要为用户生成委派级别令牌。
如果应用程序池在自定义标识下运行(通常是在这些情况下),则该帐户需要具备执行不受限制的授权的能力。 在“Active Directory用户和计算机”中的“帐户委派”选项卡上,select“信任此用户以委派任何服务(仅Kerberos)”。
如果您没有看到委派选项卡,则表示尚未将SPN分配给该帐户。 这需要首先使用setspn.exe命令进行更正。
IIS身份帐户需要在IIS服务器上具有“作为操作系统的一部分”特权(SetTCB特权)。
下载代理configuration工具并将其添加为网站上的应用程序。 它允许您浏览到应用程序url并生成一个报告,确定委派是否正确configuration。
代码也很容易检查令牌types,以确定它是否是代理令牌,并将该信息logging到文件中。
总结(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