Ошибка 401.3 не разрешена, если НЕ используется олицетворение - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь получить доступ к старомодному веб-сервису asmx, расположенному в IIS, и бьюсь головой об ошибке 401.3. Я знаю, что есть много ресурсов, но большинство из них используют олицетворение и добавляя разрешения для авторизованного пользователя в файловую систему, чего я хочу избежать.

Мой сценарий - это, по сути, веб-служба IIS, работающая с AppPool, который запускается как определенная учетная запись службы (DOMAIN \ username + password). Эта учетная запись службы имеет полный контроль над папкой, и для аутентификации Anonymous установлено использование идентификатора AppPool.

Это все хорошо и работает, но теперь я хотел защитить свой веб-сервис, добавив аутентификацию Windows. Я сделал это и добавил простой <deny users="?" /> в раздел авторизации. Что происходит сейчас, так это то, что когда я подключаюсь к серверу, у меня запрашивают имя пользователя и pwd, я предоставляю его, а затем получаю ошибку 401.3.

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

У меня вопрос: зачем аутентифицированному пользователю нужен доступ к папке? Разве папка не используется как удостоверение пула приложений? Олицетворение отключено, поэтому я ожидаю, что это будет правильным поведением.

1 Ответ

1 голос
/ 14 июня 2019

зачем аутентифицированному пользователю нужен доступ к папке?

Модуль FileAuthorization требует, чтобы аутентифицированный пользователь имел права доступа к файлу.

Разве папка не используется как удостоверение пула приложений

Да, но вышеупомянутый модуль также проверяет аутентифицированного пользователя. Вы упомянули, что у вас есть Anonymous, настроенный на использование AppPoolIdentity, поэтому я ожидаю, что в вашем случае это будет правдой.

Олицетворение отключено, поэтому я ожидаю, что это будет правильным поведением.

Это не зависит, так как модуль FileAuthorization запускается в любом случае.

По рекомендации по устранению неполадок можно получить трассировку ProcMon, и я подозреваю, что вы увидите некоторые AccessDenied. Найдите и посмотрите, какие разрешения требуются для какого процесса, и посмотрите, выполняет ли он олицетворение (для этой проверки). Это скажет вам, какое разрешение отсутствует / отсутствует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...