IIS Express Windows Authentication


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>

Мене не проходять автентифікацію, і мій виклик служби домену повертає нульову запис як користувач. Мені вдалося змусити це працювати після встановлення VETA 2010 SP1 BETA, але я намагаюся змусити це працювати лише з IIS Express.

Як увімкнути автентифікацію Windows для роботи з IIS Express. Чи є налаштування конфігурації, яке мені не вистачає?

Відповіді:


276

варіант-1 :

редагуйте \My Documents\IISExpress\config\applicationhost.configфайл та увімкніть WindowsAuthentication, тобто:

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

варіант-2 :

Розблокуйте розділ windowsAuthentication в \ Мої документи \ 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 SP1 застосовується опція 1 + 2 для роботи автентифікації Windows. Крім того, вам може знадобитися встановити анонімну автентифікацію на помилкову в IIS Express applicationhost.config:

<authentication>

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

для VS2015 конфігураційний файл програми IIS Express може бути розміщений тут:

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

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


Дякую. Але я спробував варіанти вище. Але я все ще не можу використовувати автентифікацію Windows. Я думаю, що мені доведеться просто почекати, коли VS2010 / SP1 отримає цю функціональність.
Марк

3
варіант два працював на мене. Але знадобився певний час, щоб знайти цю посаду!
ТодК

Це питання насправді більше не застосовується з моменту появи 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, якщо ви не дотримуєтесь процедури "розблокувати" на застосуванні сервера IISHost.config.

Наведене вище рішення на основі інтерфейсу використовує елементи розташування, специфічні для сайту, у застосуванні IIS ExpressHost.config, залишаючи додаток не торканим.

Більше інформації тут: 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

Це закінчується зміною налаштування IISExpressWindowsAuthentication з "увімкнено" на вимкнено "в .csproj. <IISExpressWindowsAuthentication> вимкнено </IISExpressWindowsAuthentication>
Cameron Taggart

7
Ці 2 варіанти для мене невідомі та відключені. Будь-яка ідея чому?
шил

1
2 варіанти відтіняються сірим кольором, оскільки у вас це є у IIS Express Config <section name = "anonymousAuthentication" overrideModeDefault = "Дозволити" /> <назва імені розділу "windowsAuthentication" overrideModeDefault = "Дозволити" /> вийміть overrideModeDefault = "Дозволити ", і вони не зможуть виграти
Міхе Арманроут

9

Спираючись на відповідь хлопчика booij, перевірте, чи ви перевірили функцію "автентифікація Windows" на Панелі керування -> Програми -> Увімкніть функції Windows або -> Інтернет-інформаційні послуги -> Веб-сервіси World Wide Web -> Безпека

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




5

На додаток до цих чудових відповідей, в контексті середовища розробки IISExpress і для того, щоб зірвати сумнозвісну помилку "system.web/identity@impersonate", ви можете просто переконатися, що у вашому файлі applicationhost.config встановлено наступне налаштування. .

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

Це дозволить отримати більшу гнучкість під час розробки та тестування, хоча будьте впевнені, що ви розумієте наслідки використання цього параметра у виробничому середовищі, перш ніж робити це.

Корисні повідомлення:


Приземлився на цьому зовсім випадково, але спрацювало :-)
joshmcode

2

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

У розділі IIS "Перегляд функцій" виберіть так звану функцію "аутентифікація" та натисніть її "doulbe". Тут ви можете ввімкнути автентифікацію 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 як адміністратор. Після запуску адміністратора, проблема вирішена.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.