У нас есть очень простая настройка веб-службы SOAP с использованием аутентификации Windows, открытая для всех пользователей:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
Выпуск
Однако некоторые учетные записи Windows получают 401 Forbidden
ошибок.
Что работает
- Выбранный список учетных записей всегда работает (независимо от NTLM / Kerberos, локального / внешнего сервера)
- Кажется, что все учетные записи работают при локальном доступе на веб-сервере
- Кажется, что все учетные записи работают при использовании IE (который, кажется, использует Kerberos)
Что не работает
- Большинство (но не все) учетных записей с внешнего сервера (который, похоже, использует NTLM)
Другие факты
- Не существует очевидной схемы, с которой учетные записи работают, а какие - нет (кажется произвольным).
- Новая учетная запись, идентичная существующей рабочей учетной записи, не работает.
- Какая учетная запись работает согласованно (т. Е. Она всегда будет работать или никогда не будет работать)
- Учетные записи, которые работают одинаково для всех сред (т. Е. Все серверы IIS принимают и отклоняют один и тот же набор учетных записей).
- Нет никакой разницы в перехваченном трафике между серверами, кроме разных токенов NTLM и ответа 401 вместо 200/202.
Что происходит технически
В частности, когда возникает проблема, как будто учетные данные пароля не могут быть проверены (я могу гарантировать, что они верны), согласно ошибке 4625 Audit Failure
в журнале безопасности:
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: FAILING_ACCOUNT_NAME_ALLCAPS
Account Domain: MYDOMAIN
Failure Information:
Failure Reason: Unknown user name or bad password.
Status: 0xc000006d
Sub Status: 0xc000006a
Похоже, что это приводит к блокировке учетной записи в AD (что имеет смысл, поскольку код 0x000006a
обычно отражает попытку ввода неверного пароля), хотя это поведение кажется несовместимым.
При трассировке неудачного запроса IIS показывает ошибку неизвестного имени пользователя / неверного пароля, а также ошибку 401.2
с кодом ошибки 3221225581
.
Я также могу принудительно вызвать «подлинные» ошибки 401
для рабочих учетных записей (отклоняя их в теге authorization
), и поведение отличается (т. Е. Он не помечает их как Unknown user name or bad password
, но дает другую ошибку отказа в доступе ).
Что дальше
Вы говорите мне - есть ли у кого-то опыт, куда мне следует обратиться для диагностики этой проблемы?