Не удается получить учетные данные пользователя (проверка подлинности Windows)

#c# #.net #windows #authentication #iis

#c# #.net #Windows #проверка подлинности #iis

Вопрос:

Вот веб-конфигурация:

 <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows" />

    <authorization>

    </authorization>
    <identity impersonate="true" />



  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true" />
        <security>
            <authentication>
                <windowsAuthentication enabled="true" >
                    <providers>
                        <clear />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
                <anonymousAuthentication enabled="false" />
            </authentication>
        </security>
  </system.webServer>
 

В коде страницы (пытаюсь посмотреть, будет ли что-то из этого работать):

 WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;

            string sLoginID = identity.Name.ToString();
            sLoginID = sLoginID.Remove(0, sLoginID.IndexOf('\')   1);
            alert.InnerText = User.Identity.Name   "////// "   sLoginID ; 
 

Результаты (желаемый ДОМЕН ИМЯ ПОЛЬЗОВАТЕЛЯ):

 Anonymous////// NETWORK SERVICE
 

Сайт расположен на сервере iis Server 6.0, все отключено, кроме олицетворения личности и проверки подлинности Windows.

Ответ №1:

Я думаю, вы получаете этого пользователя из-за параметра identity impersonate . Измените параметр на

 identity impersonate=false
 

И проверьте, есть ли у вас учетная запись

Комментарии:

1. Привет, я сделал то, что вы сказали, но я все еще вижу: Анонимный////// СЕТЕВАЯ СЛУЖБА

2. Вы перезапустили службу IIS после внесения изменений? Попробуйте установить параметры непосредственно в конфигурации IIS, и вы создадите свой web.config после того, как получите все правильные параметры

3. Вы пытались использовать «Пользователь. Identity.Name » вместо LogonUserIdentity?

4. Все еще возвращается: анонимный////// СЕТЕВАЯ СЛУЖБА. По какой-то причине я просто не могу заставить его использовать учетные данные пользователя вместо учетных данных сервера.

Ответ №2:

Это сработало для меня: web.config

 <?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows" />
    <identity impersonate="false" />
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>
 

Page_Load

 protected void Page_Load(object sender, EventArgs e)
{
    WindowsIdentity identity = HttpContext.Current.Request.LogonUserIdentity;

    string sLoginID = identity.Name.ToString();
    TextBox1.Text = sLoginID;
}
 

Настройки IIS:

  • Анонимная проверка подлинности — отключена
  • ASP.NET Запечатление — Отключено
  • Проверка подлинности форм — отключена
  • Проверка подлинности Windows — отключена

Конечно, я использую 7.5.

Снимок экрана (выполняется в IIS, а не через VS):

введите описание изображения здесь

Комментарии:

1. о, и после каждого изменения я на всякий случай перезапускал веб-сайт (в конце концов, это Microsoft) 🙂

2. Я скопировал все ваши настройки, и я все еще получаю тот же ошибочный результат. : (