HttpContext.Current.User.Principal vs WindowsIdentity.GetCurrent()

时间:2011-03-23 07:54:03

标签: asp.net iis windows-authentication

在HttpContext.Current.User.Principal和WindowsIdentity.GetCurrent()之间打开Windows身份验证和身份模拟的asp.NET环境有什么不同?

1 个答案:

答案 0 :(得分:12)

根据WindowsIdentity.GetCurrent().Name vs. User.Identity.Name上的论坛:

  
      
  • User.Identity.Name表示从IIS传递的标识。
  •   
  • WindowsIdentity.GetCurrent().Name是线程运行的标识。
  •   

根据您在IIS中的应用验证设置,它们将返回不同的值:

| Anonymous | Impersonate | User.Identity.Name | WindowsIndentiy.GetCurrent()  |
|-----------|-------------|--------------------|-------------------------------|
| Yes       | True        | Empty String       | IUSR_<machineName>            |
| Yes       | False       | Empty String       | NT Authority\Network Service  |
| No        | True        | domain\user        | domain\user                   |
| No        | False       | domain\user        | NT Authority\Network Service  |

<强>图例

  • 域\用户将显示为:
    • Active Directory的域\用户
    • 本地帐户的machineName \ userName
  • NT Authority \ Network Service 将显示为:
    • 适用于Windows Server或ASP.NET的NT Authority \ Network Service
    • 适用于Windows XP的machineName \ ASPNET_WP