IIS - 401.3 - Несанкціонований


92

Я намагаюся розпочати роботу з використанням IIS. Я створив новий сайт у диспетчері IIS, зіставив його на папку у моїй файловій системі та додав index.html до папки. Я встановив порт для цього веб-сайту на 85. Коли я намагаюся отримати доступ http://localhost:85/index.html, я отримую таке повідомлення про помилку:

401.3 - неавторизовано - Ви не маєте дозволу переглядати цей каталог або сторінку через конфігурацію списку контролю доступу (ACL) або налаштування шифрування для цього ресурсу на веб-сервері.

Я надав доступ для читання всім у папці та спробував ще раз. Потім я міг отримати доступ до сторінки.

Потім я порівняв властивості моєї папки з властивостями wwwroot. Я виявив, що wwwroot мав доступ для читання на IIS_IUSRS ... Коли я зробив те саме у своїй папці та спробував ще раз, я знову отримав вищевказану помилку. Я перевірив, що анонімний доступ увімкнено за замовчуванням, але я все ще отримую цю помилку.

Чому так трапляється? Який правильний спосіб вирішити проблему?

Відповіді:


168

Я боровся з цим самим питанням кілька днів. Це може бути вирішено шляхом зміни властивостей доступу користувачів безпеки до папки файлової системи, на якій відображено ваш сайт. Але IIS_IUSRS - не єдиний обліковий запис, який ви повинні авторизувати.

  • У консолі керування IIS у частині автентифікації конфігурації вашого сайту змініть рядок «Анонімна автентифікація» та перевірте обліковий запис, встановлений як «Конкретний користувач» (мій IUSR).
  • Дайте дозвіл на читання та виконання в папці вашого сайту обліковому запису, зазначеному як конкретний користувач.

АБО

  • У консолі керування IIS у частині автентифікації конфігурації вашого сайту змініть рядок «Анонімна автентифікація», вибравши «Ідентифікація пулу додатків» замість «Конкретний користувач».

6
Я виявив, що анонімна автентифікація з "Ідентифікацією пулу додатків" працює, але з якихось причин не змогла змусити її працювати з IUSR. Дякую.
fortboise

5
Логіка полягає в тому, що за замовчуванням сайт використовує анонімну автентифікацію, а IUSR - це анонімний обліковий запис. Отже, IIS використовує обліковий запис IUSR для доступу до файлової системи (фізичний шлях веб-сайту), який може працювати не завжди (оскільки багато хто з вашої файлової системи не приймає IUSR). Це причина 401.3. Змінюючи доступ до файлової системи (надайте цьому обліковому запису доступ до файлів) або змінюючи анонімний обліковий запис на ідентифікацію пулу (ідентифікація пулу знаходиться в IIS_IUSRS, який зазвичай має доступ до файлів), IIS повинен мати достатньо дозволів для доступу до файлів.
Лекс Лі

58

Ось, що мені вдалося.

  1. Встановіть ідентифікатор пулу програм для облікового запису, якому можна призначити дозволи для папки.
  2. Переконайтеся, що вихідний каталог та всі пов’язані файли отримали права на читання файлів до облікового запису, призначеного властивості ідентифікації пулу програм
  3. У IIS на кореневому вузлі сервера встановіть анонімного користувача для успадкування від ідентифікації пулу програм. (Це була частина, з якою я боровся)

Щоб встановити анонімний сервер для успадкування від ідентифікатора пулу додатків, виконайте наступне ..

  • Відкрити диспетчер IIS (inetmgr)
  • На лівій панелі виберіть кореневий вузол (ім'я хосту сервера)
  • На середній панелі відкрийте аплет «Автентифікація»
  • Виділіть "Анонімна автентифікація"
  • На правій панелі виберіть "Редагувати ..." (відкриється діалогове вікно)
  • виберіть "Ідентифікація пулу додатків"

9
# 3) ВИПРАВЛЕНО МОЕ ПРОБЛЕМУ: У IIS, на кореневому вузлі сервера, встановіть анонімного користувача для успадкування від ідентифікації пулу програм. (Це була частина, з якою я боровся)
Раві Рам,

Я знаю, що ви не повинні писати коментарі "дякую", але я відчуваю, що мені потрібно висловити свою подяку. Я ніяк не міг цього зрозуміти.
Джонні Кук,

@RaviRam: Будь ласка, поясніть кроки, яких ви дотримувались. Крок за кроком як новачок. Що ви маєте на увазі під словом "n IIS, на кореневому вузлі сервера, встановіть анонімного користувача для успадкування від ідентифікації пулу програм." Будь ласка, допоможіть.
Незламний

@RaviRam - запустіть команду "inetmgr.exe", і з'явиться екран адміністрування IIS. З цього виконайте дії, описані в моїй відповіді. Ймовірно, вам доведеться запустити команду як адміністратор. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker

Як згадувалося в іншій відповіді, я виявив, що вам не потрібно змінювати параметри анонімного аутентифікації на кореневому рівні - ви також можете змінити це налаштування на рівні сайту або віртуального каталогу
jaycer

15

TL; DR;

У більшості випадків буде достатньо надати доступ до наступних облікових записів (одного | обох):

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

з правами доступу :

  1. Читання та виконання
  2. Вміст папки зі списком
  3. Прочитайте

Це воно!

Читайте далі, щоб отримати більш детальне пояснення ...


  1. Відкрийте IIS і виберіть свою програму .
  2. Клацніть праворуч Автентифікація .
  3. Виберіть тут " Анонімну автентифікацію ".
  4. Вискакує наступне діалогове вікно.

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

Надайте доступ до ACL веб-програми, залежно від того, що вибрано на малюнку вище:

  • Конкретний користувач : надати доступ обомIUSR(у моєму випадку) +IIS AppPool\DefaultAppPool
  • Ідентифікація пулу додатків : надайте доступIIS AppPool\DefaultAppPoolлишедля

IIS AppPool\DefaultAppPool обліковий запис є типовим обліковим записом AppPool для нових веб-програм IIS, якщо ви встановили власний обліковий запис, використовуйте власний.


Надайте такі дозволи для облікових записів:

  1. Read & Execute
  2. List folder contents
  3. Read

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


13

Оскільки ви маєте справу зі статичним вмістом ...

У папці, яка виконує функції кореневої сторінки вашого веб-сайту - якщо ви клацніть правою кнопкою миші> властивості> безпека, чи відображається у списку "Користувачі"? якщо не натисніть "Додати ..." та введіть його, не забудьте натиснути "Застосувати", коли закінчите.


3

Спробуйте це рішення:

/server/38222/iis-7-5-windows-7-http-error-401-3-unauthorized

Також перевірте, чи має користувач, який запускає IIS AppPool, доступ для читання до цієї папки / файлу.

Погляньте на це:

http://www.iis.net/learn/manage/configuring-security/application-pool-identities

Також подивіться на це:

http://www.iis.net/learn/get-started/planning-for-security/understanding-built-in-user-and-group-accounts-in-iis


1

Про всяк випадок, коли хтось ще натрапить на це. Я вирішив усі ці кроки, і виявляється, тому що я розпакував деякі файли з MAC, Microsoft автоматично без будь-якого повідомлення Зашифрував файли. Після кількох годин спроб встановити дозволи для папок, я зайшов і побачив, що імена файлів зелені, що означає, що файли були зашифровані, і IIS видасть ту саму помилку, навіть якщо дозволи на папки правильні.


Витратив занадто багато часу на це саме те саме питання. Просто тут для співчуття. Я опинився тут, шукаючи IIS і доступ до EFS, але ваша відповідь вказує мені на першопричину моєї проблеми - розширений zip-файл із Mac. Моїм конкретним сценарієм була проблема, коли ASP.NET Core, розміщений в процесі в IIS, не запускався - жодних повідомлень журналу подій, жодних журналів stdout тощо. Доступ через localhost видав повідомлення про помилку, що web.config недійсний, але не містить джерела. Очевидно, що файл був доступний, але вміст прочитати не вдалося.
Аарон,

1
  1. Створіть новий сайт, клацніть правою кнопкою миші на папці Сайти, а потім натисніть Додати сайт
  2. Введіть назву сайту.
  3. Виберіть фізичний шлях
  4. Виберіть IP-адресу
  5. Змінити порт
  6. Клацніть OK
  7. Перейдіть до пулів програм
  8. Виберіть пул сайтів
  9. Клацніть правою кнопкою миші клацнути Advance Settings
  10. Змініть .Net CLR версію на "Без керування кодом"
  11. Змініть ідентичність на "ApplicationPoolIdentity"
  12. Перейдіть на домашню сторінку сайту та натисніть "Аутентифікація"
  13. Клацніть правою кнопкою миші на AnonymousAuthentication, а потім натисніть "Редагувати"
  14. Виберіть ідентифікатор пулу програм
  15. Клацніть добре
  16. бум!

для маршрутів додайте web.config

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

0

Інша проблема, яка може виникнути щодо отримання несанкціонованого доступу, пов’язана з постачальниками, які використовуються в налаштуваннях автентифікації з IIS. У моєму випадку у мене виникала така проблема, якщо я встановив постачальника автентифікації Windows як "Переговори". Після того, як я вибрав опцію "NTLM", доступ було надано.

Більше інформації про постачальників аутентифікації

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/



0

Якщо ви працюєте з автентифікацією пулу застосунків (замість IUSR), що вам слід, то цей список перевірок Жаном Сан є найкращим, що я міг знайти для вирішення 401 помилок у IIS:


Відкрийте диспетчер IIS, перейдіть до веб-сайту або до папки програми, де сайт розгорнуто.

  1. Відкрийте Додаткові налаштування (справа на панелі дій).
  2. Запишіть назву пулу програм, а потім закрийте це вікно
  3. Двічі клацніть на піктограму автентифікації, щоб відкрити налаштування автентифікації
  4. Вимкніть автентифікацію Windows
  5. Клацніть правою кнопкою миші на Anonymous Authentication та натисніть Edit
  6. Виберіть перемикач «Ідентифікація пулу додатків» і натисніть «ОК»
  7. Виберіть вузол пулів програм з дерева диспетчера IIS ліворуч і виберіть ім’я пулу програм, яке ви записали на кроці 3
  8. Клацніть правою кнопкою миші та виберіть Додаткові налаштування
  9. Розгорніть параметри Модель процесу та виберіть ApplicationPoolIdentity зі спадного списку «Вбудований обліковий запис», після чого натисніть кнопку «ОК».
  10. Натисніть OK ще раз, щоб зберегти та закрити сторінку додаткових налаштувань пулу програм
  11. Відкрийте командний рядок адміністратора (клацніть правою кнопкою миші на значку CMD і виберіть "Запустити від імені адміністратора". Це буде десь у вашому меню "Пуск", можливо, в розділі "Аксесуари".
  12. Виконайте таку команду:

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    Наприклад:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

Особливо кроки 5. та 6. часто ігноруються і рідко згадуються в Інтернеті.

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