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


245

Я пытаюсь использовать 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. Есть ли параметр конфигурации, который мне не хватает?

Ответы:


276

вариант-1 :

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

<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>опция в файле проекта выбирает файл конфигурации по умолчанию или для конкретного решения.


Спасибо. Но я попробовал варианты выше. Но я все еще не могу использовать проверку подлинности Windows. Я думаю, мне просто нужно подождать, пока VS2010 / SP1 получит эту функциональность.
Mark

3
второй вариант работал на меня. Потребовалось время, чтобы найти этот пост, хотя!
TodK

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

1
Спасибо чувак! NTLM работал путем отключения анонимной аутентификации.
Роб Анжелье

4
В VS2015 конфигурация IIS Express перешла в структуру решения, в частности, $ (SolutionDir) \. Vs \ config \ applicationhost.config, к сожалению, она не учитывает существующую конфигурацию в MyDocuments \ IISExpress, поэтому любые настройки нужно будет прочитать заново.
Тедфорд

401

В 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


5
Чтобы подчеркнуть то, что я пропустил - контекстное меню свойств и Alt-Enterярлык не полностью вытесняют детали панели свойств, которые позволяют вам изменять, включена ли проверка подлинности Windows или нет. Используйте F4или нажмите на панели свойств, чтобы увидеть свойства.
Калеб Педерсон

Я боролся с этой задачей в течение нескольких дней, прежде чем начать с этой статьи: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx По сути, не обращайте внимания на все в исходном посте, начните заново с " virgin "applicationhost.config и просто включите настройки в соответствии с этим ответом. Наконец я получаю аутентификацию Windows! Спасибо!!
DaveN59

В конечном итоге в настройке .csproj изменяется параметр IISExpressWindowsAuthentication со значения «включено» на «отключено». <IISExpressWindowsAuthentication> отключен </ IISExpressWindowsAuthentication>
Кэмерон Таггарт

7
Эти 2 варианта для меня недоступны. Есть идеи почему?
Шил

1
2 параметра недоступны, потому что они есть в вашей конфигурации IIS Express <section name = "anonymousAuthentication" overrideModeDefault = "Allow" /> <section name = "windowsAuthentication" overrideModeDefault = "Allow" /> убрать overrideModeDefault = "Allow "и они распадутся
Мика Армантроут

9

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

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


2
И заставить его работать в firefox: markmonica.com/2007/11/20/…
bees73


5

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

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

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

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


Приземлился на этом совершенно случайно, но это сработало :-)
joshmcode

2

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

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

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


0

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

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

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

0

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

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

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

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

    Повторите шаги с 1 по 5, за исключением того, что на step 3этот раз вам потребуется uncheckопция «Скрытый», которую вы проверили ранее.

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


0

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


0

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

https://stackoverflow.com/a/20857049/56621

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.