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

96

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

401.3 - unathorized - у вас нет разрешения на просмотр этого каталога или страницы из-за конфигурации списка управления доступом (ACL) или настроек шифрования для этого ресурса на веб-сервере.

Я дал доступ на чтение всем в папке и попробовал снова. Тогда я мог получить доступ к странице.

Затем я сравнил свойства своей папки со свойствами wwwroot. Я обнаружил, что wwwroot имеет доступ для чтения в IIS_IUSRS ... Когда я сделал то же самое в своей папке и попробовал снова, я снова получил указанную выше ошибку. Я проверил, что анонимный доступ включен по умолчанию, но все равно получаю эту ошибку.

Почему так происходит? Как правильно решить проблему?

Адит Рамия
источник

Ответы:

176

Я боролся с этим же вопросом несколько дней. Это можно решить, изменив свойства безопасности доступа пользователей к папке файловой системы, на которую отображается ваш сайт. Но IIS_IUSRS - не единственная учетная запись, которую вы должны авторизовать.

  • В консоли управления IIS в части «Проверка подлинности» конфигурации вашего сайта измените строку «Анонимная проверка подлинности» и проверьте, что учетная запись установлена ​​как «Определенный пользователь» (моя - IUSR).
  • Предоставьте разрешение на чтение и выполнение в папке вашего сайта учетной записи, указанной как конкретный пользователь.

ИЛИ

  • В консоли управления IIS в разделе «Проверка подлинности» конфигурации вашего сайта измените строку «Анонимная проверка подлинности», выбрав «Идентификатор пула приложений» вместо «Определенный пользователь».
Groch
источник
6
Я обнаружил, что анонимная аутентификация с помощью «Application Pool Identity» работает, но по какой-то причине не смог заставить его работать с IUSR. Спасибо.
fortboise 09
5
Логика заключается в том, что по умолчанию сайт использует анонимную аутентификацию, а IUSR является анонимной учетной записью. Таким образом, IIS использует учетную запись IUSR для доступа к файловой системе (физический путь к веб-сайту), что может работать не всегда (поскольку многие из ваших файловых систем не принимают IUSR). Это причина 401.3. Изменив доступ к файловой системе (предоставьте этой учетной записи доступ к файлам) или изменив анонимную учетную запись на идентификатор пула (идентификатор пула находится в IIS_IUSRS, который обычно имеет доступ к файлам), IIS должен иметь достаточно разрешений для доступа к файлам.
Lex Li
61

Вот что у меня сработало.

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

Чтобы настроить анонимный сервер на наследование от удостоверения пула приложений, выполните следующие действия.

  • Откройте диспетчер IIS (inetmgr)
  • На левой панели выберите корневой узел (имя хоста сервера)
  • На средней панели откройте апплет «Аутентификация».
  • Выделите «Анонимная аутентификация»
  • На правой панели выберите «Изменить ...» (должно открыться диалоговое окно).
  • выберите "Удостоверение пула приложений"
баррипикер
источник
9
# 3) ИСПРАВЛЕНА МОЯ ПРОБЛЕМА: в IIS на корневом узле сервера установите анонимного пользователя для наследования от удостоверения пула приложений. (Это была та часть, с которой я боролся)
Рави Рам
Я знаю, что вы не должны писать комментарии «спасибо», но я чувствую, что должен выразить свою благодарность. Я никак не мог понять это.
Джонни Кук
@RaviRam: Пожалуйста, объясните шаги, которые вы выполнили. Шаг за шагом для новичка. Что вы имеете в виду под «IIS, в корневом узле сервера, установите анонимного пользователя для наследования от удостоверения пула приложений». Пожалуйста, помогите.
Unbreakable
@RaviRam - запустите команду inetmgr.exe, появится экран администрирования IIS. Отсюда следуйте инструкциям, изложенным в моем ответе. Скорее всего, вам нужно будет запустить команду от имени администратора. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker
Как упоминалось в другом ответе, я обнаружил, что вам не нужно изменять настройки анонимной аутентификации на корневом уровне - вы также можете изменить этот параметр на уровне сайта или виртуального каталога
Джейсер,
17

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

Поскольку вы имеете дело со статическим контентом ...

В папке, которая действует как корень вашего веб-сайта - если вы щелкните правой кнопкой мыши> свойства> безопасность, появится ли в списке «Пользователи»? если нет, нажмите «Добавить ...» и введите его, не забудьте нажать «Применить», когда закончите.

Joelmdev
источник
3

Попробуйте это решение:

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

Также проверьте, есть ли у пользователя, запускающего пул приложений IIS, доступ для чтения к этой папке / файлу.

Посмотри на это:

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

c-chavez
источник
1

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

Крис
источник
Слишком много времени потратил на эту же проблему. Просто здесь, чтобы посочувствовать. Я закончил здесь поиском IIS и доступом к EFS, но ваш ответ подсказал мне основную причину моей проблемы - расширенный zip-файл с Mac. В моем конкретном сценарии проблема заключалась в том, что ASP.NET Core, размещенный в процессе в IIS, не запускался - нет сообщений журнала событий, журналов stdout и т. Д. Доступ через localhost выдавал сообщение об ошибке, что web.config недействителен, но не показывает источник. Очевидно, файл был доступен, но содержимое не читалось.
Аарон
1
  1. Создайте новый сайт, щелкните правой кнопкой мыши папку «Сайты», затем нажмите «Добавить сайт».
  2. Введите название сайта.
  3. Выберите физический путь
  4. Выберите IP-адрес
  5. Изменить порт
  6. Нажмите ОК
  7. Перейти к пулам приложений
  8. Выберите пул сайтов
  9. Щелкните правой кнопкой мыши на кнопке Advanced 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

Пожалуйста, включите следующие элементы в Windows 2012 R2

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

user2907940
источник
0

Если вы работаете с аутентификацией пула приложений (вместо IUSR), что вам следует, то этот список проверок, выполненный Джин Сан, - лучшее, что я мог найти для работы с ошибкой 401 в IIS:


Откройте диспетчер IIS, перейдите к своему веб-сайту или папке приложения, где он развернут.

  1. Откройте дополнительные настройки (они находятся на правой панели действий).
  2. Запишите имя пула приложений и закройте это окно.
  3. Дважды щелкните значок аутентификации, чтобы открыть настройки аутентификации.
  4. Отключить проверку подлинности Windows
  5. Щелкните правой кнопкой мыши "Анонимная проверка подлинности" и выберите "Изменить".
  6. Выберите переключатель "Удостоверение пула приложений" и нажмите "ОК".
  7. Выберите узел Пулы приложений в дереве диспетчера IIS слева и выберите имя пула приложений, которое вы записали на шаге 3.
  8. Щелкните правой кнопкой мыши и выберите Дополнительные настройки.
  9. Разверните параметры модели процесса и выберите ApplicationPoolIdentity из раскрывающегося списка «Встроенная учетная запись», затем нажмите OK.
  10. Нажмите кнопку ОК еще раз, чтобы сохранить и закрыть страницу дополнительных настроек пула приложений.
  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. часто упускаются из виду и редко упоминаются в сети.

Jpsy
источник