Проверка подлинности Windows успешна, но IsAuthenticated == false - PullRequest
4 голосов
/ 29 июня 2010

Среда представляет собой интегрированный конвейер IIS 7, ASP.NET 4.0.У меня есть страница .aspx, настроенная без анонимной аутентификации и с аутентификацией Windows:

  <location path="auth/windows">
    <system.webServer>
      <security>
        <authentication>
          <anonymousAuthentication enabled="false" />
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
  </location>

Когда я запрашиваю страницу, происходит нормальный ответ на запрос проверки подлинности Windows (NTLM / Negotiate), и в конечном итоге страница возвращается.

У меня есть HttpModule, в котором я обрабатываю событие PostAuthorize.Как и ожидалось, это событие вызывается только после успешной аутентификации запрос-ответ и получения доступа к странице.

Однако свойство Request.IsAuthenticated имеет значение false;и HttpContext.Current.User.Identity отражает пользователя, не прошедшего проверку подлинности (.Name возвращает пустую строку).Интересно, что Request.ServerVariables ["LOGON_USER"] действительно возвращает значение аутентифицированного пользователя Windows.

Я бы подумал, что, как только пользователь будет аутентифицирован (и авторизован, в этом отношении), запрос будет отражатьбыть аутентифицированным;и пользователь / личность для запроса были бы правильно установлены.

Есть мысли о том, почему это не так?

Спасибо,

Донни

Ответы [ 2 ]

3 голосов
/ 27 июня 2013

проверка подлинности windows включена в IIS, а режим проверки подлинности установлен в windows в моем файле web.config.

 <authentication mode="Windows">     
    </authentication>

Мой сайт запрашивает учетные данные, и он работает нормально.но при проверке с использованием

HttpContext.User.Identity.Name

- пустая строка или HttpContext.User.Identity.IsAuthenticated - ложь;

Я использовал запрос .ServerVariables["LOGON_USER"].Tostring(); для входа в систему с учетными данными пользователя.

Работалодля меня, спасибо за размещение soccerdad.

2 голосов
/ 30 июня 2010

Оказывается, что встроенная обработка проверки подлинности Windows работает, когда в Web.config включена проверка подлинности с помощью форм.Но управляемая часть аутентификации Windows - связывание аутентифицированного пользователя Windows с производным от IIdentity объектом, представляющим этого пользователя - происходит только в том случае, если аутентификация Windows включена в Web.config.Похоже, мне придется положиться на значение Request.ServerVariables ["LOGON_USER"].

...