Назад | Перейти на главную страницу

Доступ к веб-сервису не работает, когда пароль пользователя находится в периоде уведомления

У нас есть несколько локально установленных приложений .Net, которые обмениваются данными через веб-службы. Проверка подлинности в IIS выполняется с помощью проверки подлинности Windows, поэтому дополнительный вход в систему не требуется. Недавно мы начали замечать проблему, при которой пользователи получают сообщение о запрещенной ошибке IIS 403, когда их сброс пароля попадает в период уведомления об истечении срока действия пароля (на данный момент 7 дней).

Поскольку это иногда происходит в середине дня (вход в систему утром ОК, но пароль достигает <7 дней в течение дня), это становится сюрпризом, поскольку они не были предупреждены о смене пароля. Конечно, я ожидал, что они будут работать до истечения срока действия пароля.

Есть идеи, что здесь может происходить? Почему IIS отклоняет логин, если срок действия пароля еще не истек? Можем ли мы изменить это поведение?

Спасибо

\\ Грег

Вы, вероятно, увидите ошибку 403.18 в своих веб-журналах. Не настроена ли случайно страница с ошибкой для запуска из другого пула приложений? Взгляните сюда: http://blogs.msdn.com/b/rakkimk/archive/2006/09/01/735684.aspx

и здесь (который описывает очень похожую проблему): http://social.technet.microsoft.com/forums/en-US/exchangesvrgeneral/thread/0f96332b-5b53-42f6-8f12-7d0b79a0a636/

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

Проблема связана с уведомлениями IIS и PasswordChange. На всех серверах мы удалили файл / IISpwdadm. Это встроенная в IIS возможность, позволяющая интерактивным пользователям изменять свой пароль.

Очевидно, когда пароль наших пользователей перешел в период уведомления, веб-служба попыталась бы перенаправить их на /iispwdadm/anot.asp. Поскольку это находится за пределами пути веб-службы и в другом пуле приложений, возникла ошибка 403.

Решением было использование adsutil для изменения параметра changepasswordflags на 6, который отключал уведомления и функции смены пароля IIS.

cscript adsutil.vbs set w3svc/passwordchangeflags 6
cscript adsutil.vbs set w3svc/1/passwordchangeflags 6

Еще одно замечание: наши веб-службы находятся в пуле за BigIP. Все эти перенаправления направлялись на один сервер в пуле, поскольку исходный адрес был адресом пула. Это сделало поиск событий 403 в журналах немного сложным.

Еще раз спасибо DmitryK за то, что направили нас по правильному пути.