IIS Express Windows Аутентификация

Я пытаюсь использовать IIS Express с VS2010 для размещения приложения Silverlight. Я изменил свой файл applicationhost.config, чтобы разрешить изменение правильных параметров конфигурации. У меня есть следующее в моем web.config:

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

Я не проходил проверку подлинности, и мой вызов службы домена возвращает нулевую запись в качестве пользователя. Мне удалось заставить это работать после установки VS2010 SP1 BETA, но я пытаюсь заставить это работать только с IIS Express.

Как включить проверку подлинности Windows для работы с IIS Express. Есть ли параметр конфигурации, который мне не хватает?

10 ответов

Решение

вариант-1:

редактировать \My Documents\IISExpress\config\applicationhost.config файл и включить windowsAuthentication, то есть:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

вариант-2:

Разблокируйте раздел windowsAuthentication в \My Documents\IISExpress\config\applicationhost.config следующим образом

<add name="WindowsAuthenticationModule" lockItem="false" />

Измените настройки переопределения для требуемых типов аутентификации на "Разрешить"

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Добавьте следующее в web.config приложения

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

Ниже ссылка может помочь: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

После установки VS 2010 с пакетом обновления 1 (SP1) может потребоваться применение опции 1 + 2 для проверки подлинности Windows. Кроме того, вам может понадобиться установить для анонимной аутентификации значение false в IIS Express applicationhost.config:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

для VS2015 файл конфигурации приложения-хоста IIS Express может находиться здесь:

$(solutionDir)\.vs\config\applicationhost.config

и <UseGlobalApplicationHostFile> опция в файле проекта выбирает файл конфигурации по умолчанию или для конкретного решения.

В Visual Studio 2010 SP1 и 2012 добавлена ​​поддержка IIS Express, что устраняет необходимость в редактировании угловых скобок.

  1. Если вы еще этого не сделали, щелкните правой кнопкой мыши проект с веб-интерфейсом и выберите "Использовать IIS Express...".
  2. После завершения выберите веб-проект и нажмите F4, чтобы сфокусировать панель свойств.
  3. Установите для свойства "Аутентификация Windows" значение "Включено", а для свойства "Анонимная проверка подлинности" - значение "Отключено".

Я считаю, что это решение превосходит опции vikomall.

  • Вариант № 1 является глобальным изменением для всех сайтов IIS Express.
  • Вариант № 2 оставляет разработку в web.config.
    • Кроме того, это, вероятно, приведет к ошибке при развертывании в IIS 7.5, если вы не выполните процедуру "разблокировки" в applicationHost.config сервера IIS.

Приведенное выше решение на основе пользовательского интерфейса использует элементы местоположения, специфичные для сайта, в applicationHost.config IIS Express, оставляя приложение без изменений.

Более подробная информация здесь: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

Опираясь на ответ от booij boy, проверьте, проверили ли вы функцию "Проверка подлинности Windows" на панели управления -> Программы -> Включение или отключение функций Windows -> Информационные службы Интернета -> Службы всемирной паутины -> Безопасность

Кроме того, кажется, есть большая разница при использовании Firefox или Internet Explorer. После включения "аутентификации Windows" у меня все работает, но только в IE.

В дополнение к этим замечательным ответам в контексте среды разработки IISExpress и для предотвращения печально известной ошибки "system.web/identity@impersonate" вы можете просто убедиться, что в вашем файле applicationhost.config имеется следующая настройка,

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

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

Полезные сообщения:

В IIS Manager нажмите на свой сайт. Вы должны быть "в представлении функций" (а не "в представлении содержимого")

В разделе IIS "Представление функций" выберите так называемую функцию "Проверка подлинности" и нажмите на нее. Здесь вы можете включить проверку подлинности Windows. Это также возможно (я думаю, в одном из предложений в теме) с помощью настройки в web.config (...)

Но, возможно, у вас есть web.config, с которым вы не хотите слишком много времени изучать. Тогда эта тема не будет слишком много помощи, поэтому я добавил этот ответ.

Этот ответ может помочь, если: 1) ваш сайт работал с аутентификацией Windows до обновления до Visual Studio 2015 и 2) и ваш сайт пытается загрузить /login.aspx (хотя на вашем сайте такого файла нет).

Добавьте следующие две строки в appSettingsраздел вашего сайта Web.config,

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

Я использую Visual Studio 2019 для разработки приложения ASP.Net. Вот что было сделано для нас:

  1. Откройте окна свойств вашего проекта, отключите анонимную аутентификацию и включите аутентификацию Windows.
  2. В вашем Web.Config под system.web

И я не изменил application.config в iis express.

Если ни один из ответов не помог, вам может потребоваться изменить свойства проекта. Посмотрите этот другой ответ Stackru о том, как это сделать:

/questions/25550769/problema-autentifikatsii-pri-otladke-v-vs2013-iis-express/25550785#25550785

На той же ноте - VS 2015, .vs\config\applicationhost.config не отображается или недоступен.

По умолчанию папка.vs скрыта (по крайней мере, в моем случае).

Если вы не можете найти папку.vs, выполните следующие действия.

  1. Щелкните правой кнопкой мыши папку "Решение"
  2. выберите "Свойства"
  3. В Attributes раздел, нажмите Hidden флажок (по умолчанию не отмечен),
  4. затем нажмите кнопку "Применить"
  5. Появится окно подтверждения "Применить изменения к этой папке, подпапке и файлам", нажмите "ОК".

    Повторите шаги с 1 по 5, кроме step 3на этот раз вам нужно uncheck "Скрытый" вариант, который вы проверили ранее.

Теперь должна быть возможность увидеть папку.vs.

Сделав все в ответах выше, я понял, что я не запускаю Visual Studio от имени администратора. После запуска от имени администратора проблема решена.

Другие вопросы по тегам