我需要开发一个Web应用程序,用户有时需要使用不同的凭证执行操作(具体而言,它们是标准域用户,并且需要重置密码,解锁用户等)。 我已经计划创建2个使用特权凭证(通过使用ASP.NET模拟)运行的服务,以及用户访问和调用服务(通过使用Windows身份验证)的Web门户。IIS 7.5和ASP.NET凭证
在开始实施之前,我正在测试凭据,但是我感到有点困惑......如果我使用System.Security.Principal.WindowsIdentity.GetCurrent()
来检查凭据,它在服务(DOMAIN \ admin)中看起来是正确的,而在门户网站(IIS \ APPPOL \ DefaultAppPool),而使用User.Identity.Name
会在服务(DOMAIN \ user请求)中返回错误的凭证,但在门户(DOMAIN \ user请求)中正确。
为什么User.Identity.Name
总是返回“最终”凭证?这似乎有点不一致......我错过了什么?
就我个人而言,我从来没有完全理解'WindowsIdentity'的东西。相反,我使用[我的小小班](http://www.codeproject.com/Articles/10090/A-small-C-Class-for-impersonating-a-User),这对ASP.NET很有效, –
@UweKeim如果你不明白,我是否应该关注你的班级使用情况:-p,我开玩笑说,我一直认为一次性假冒背景的概括是一种疏忽。 – Jodrell
请注意,如果您想使用模拟上下文在3台或更多台将会是多跳的服务器之间传递凭据,您需要设置SPN并使用Kerberos。 – Jodrell