WindowsIdentity.GetCurrent (). Имя периодически возвращает «NT AUTHORITY \ SYSTEM» - PullRequest
0 голосов
/ 09 мая 2019

У меня есть служба WCF, работающая под IIS 10 на Windows Server 2016. В этой службе я использую олицетворение для выполнения вызовов в нисходящие системы. Для олицетворения личность получается с помощью WindowsIdentity.GetCurrent (). Имя . Когда к службе WCF подключено несколько пользователей, для некоторых из них идентификатор отображается как «NT AUTHORITY \ SYSTEM», а для других - как «Имя домена \ Имя пользователя». Я хочу понять, почему для некоторых из них это выглядит как "NT AUTHORITY \ SYSTEM".

Я прошел Получение имени текущего пользователя Windows, возвращающего «IIS APPPOOL / Sitename» и попытался выполнить следующие шаги:

  1. Отключена анонимная аутентификация.
  2. Включена проверка подлинности Windows и олицетворение ASP.NET.
  3. Пробовал использовать свойства из класса HttpRequest, но это тоже не сработало.
  4. В web.config установите для aspNetCompatibilityEnabled значение true в web.config.
  5. В классе реализации службы задайте для AspNetCompatibilityRequirements значение позволено.

Фрагмент кода, как показано ниже:

WindowsIdentity winId = ServiceSecurityContext.Current.WindowsIdentity;
if (winId != null)
{

    if (winId.IsAuthenticated)
    {
        if ((ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel == TokenImpersonationLevel.Impersonation)
        || (ServiceSecurityContext.Current.WindowsIdentity.ImpersonationLevel == TokenImpersonationLevel.Delegation))
        {
            using (ServiceSecurityContext.Current.WindowsIdentity.Impersonate())
            {
                userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                ......

Я пытался использовать System.Web.HttpContext.Current.User.Identity.Name , но он также периодически возвращает «NT AUTHORITY \ SYSTEM», когда подключено несколько пользователей.

Я ожидаю, что свойство будет возвращать «Доменное имя \ Имя пользователя» каждый раз, но иногда оно возвращает «NT AUTHORITY \ SYSTEM» и «Доменное имя \ Имя пользователя» в другое время. Пожалуйста, предложите, что я должен изменить, чтобы сделать эту работу последовательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...