Проверка подлинности IIS Windows, отклонение некоторых пользователей - PullRequest
3 голосов
/ 20 марта 2012

У нас есть очень простая настройка веб-службы 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, но дает другую ошибку отказа в доступе ).

Что дальше

Вы говорите мне - есть ли у кого-то опыт, куда мне следует обратиться для диагностики этой проблемы?

1 Ответ

1 голос
/ 06 декабря 2012

Кажется, это очень редкая проблема, которая преследует вас в течение многих лет (команды разработчиков инфраструктуры, разработчики и Microsoft не смогли ее локализовать). Что касается комментариев, кажется, что определенные пароли могут иметь эффект, поэтому попробуйте там.

...