HttpContext.Current.User.Principal против WindowsIdentity.GetCurrent () - PullRequest
11 голосов
/ 23 марта 2011

В чем разница в среде asp.NET с включенной аутентификацией Windows и имитацией идентификации между HttpContext.Current.User.Principal и WindowsIdentity.GetCurrent ()?

1 Ответ

14 голосов
/ 21 октября 2015

Согласно этому форуму WindowsIdentity.GetCurrent().Name против User.Identity.Name:

  • User.Identity.Name представляет удостоверение, переданное из IIS.
  • WindowsIdentity.GetCurrent().Name - это идентификатор, под которым выполняется поток.

В зависимости от настроек аутентификации вашего приложения в IIS они будут возвращать разные значения:

<b>| <a href="https://msdn.microsoft.com/en-us/library/xh507fc5.aspx" rel="noreferrer">Anonymous</a> | <a href="https://msdn.microsoft.com/en-us/library/aa292114.aspx" rel="noreferrer">Impersonate</a> | User.Identity.Name | WindowsIndentiy.GetCurrent()  |</b>
|-----------|-------------|--------------------|-------------------------------|
| Yes       | True        | Empty String       | IUSR_<<i>machineName</i>>            |
| 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 будет отображаться как:
    • NT Authority \ Network Service для Windows Server илиASP.NET
    • machineName \ ASPNET_WP для Windows XP
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...