6

我启用了模拟和 Windows 身份验证。

<authentication mode="Windows" />
<identity impersonate="true" userName="name" password="passord"/>

Thread.CurrentPrincipal.Identity.Name返回经过身份验证的用户的名称并WindowsIdentity.GetCurrent()返回模拟身份。

这些身份不应该是一样的吗?

在这种情况下,代码在哪些凭据下运行?

4

1 回答 1

11

据我所知,Thread.CurrentPrincipal其中包含线程启动条件的信息,包括 WindowsIdentity。这就是Thread.CurrentPrincipal.Identity.Name返回启动线程的用户名的原因。相反 WindowsIdentity.GetCurrent() 返回一个代表当前 Windows 用户的 WindowsIdentity 对象,该用户已通过 Impersonation 进行了更改。我不是 100% 确定它,但我认为它是这样工作的。

于 2013-08-13T12:09:55.823 回答