Как обработать срок действия пароля в сервисе WCF - PullRequest
2 голосов
/ 20 апреля 2011

У меня есть приложение с классической архитектурой: UI <-> WCF <-> Бизнес уровень <-> Уровень данных <-> База данных.Для службы WCF я использую аутентификацию по имени пользователя и паролю.Эти имена пользователей пароли хранятся в базе данных приложения.Срок действия пароля настроен на регулярный срок действия (бизнес-требование).

У меня проблема с истечением срока действия пароля.Я выполнил операцию в моей службе WCF, которая отвечает за изменение пароля пользователя, но я не могу получить к нему доступ, когда срок действия пароля истек из-за сбоя аутентификации!

Как мне это сделать?Должен ли я создать специальную конечную точку со специальной аутентификацией для изменения пароля (например, допуск доступа, если пароль правильный, хотя срок его действия истек)?Это звучит как тяжелое решение для такой «маленькой» проблемы.

РЕДАКТИРОВАТЬ: возможно, я должен добавить еще немного контекста.Проверка выполняется в классе, реализующем UserNamePasswordValidator.В методе validate я проверяю, заблокирован ли пользователь, неверен ли пароль, был ли достигнут максимум попыток входа в систему (в этом случае я также блокирую пользователя) и истек ли срок действия пароля.Если один из них верен, аутентификация не пройдена.Может быть, это не самый лучший дизайн ...

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

Вы не указываете, как вы обрабатываете разрешения в вашем приложении, но пользователю, для которого истек срок действия пароля, следует разрешить вход в систему, но только получить разрешение на изменение своего пароля.То, что мы сделали в подобной ситуации, - это разрешили пользователю через UsernamePasswordValidator, но не предоставили ему никаких прав в AuthorizationPolicy.Поскольку все наши функции проверяют определенные разрешения, пользователь ничего не может сделать, кроме как изменить свой пароль.

1 голос
/ 28 февраля 2012

Срок действия пароля - это проблема авторизации, а не аутентификации. Если срок действия пароля истек, вы должны аутентифицировать пользователя как обычно, но вы должны временно не пройти все проверки авторизации, кроме той, которая позволяет пользователю сменить пароль.

Примечание: в методе аутентификации не требуется никаких изменений кода, потому что в момент, когда выполняется проверка аутентификации, старый пароль все еще действителен, и, следовательно, пользователь все еще аутентифицируется.

1 голос
/ 20 апреля 2011

всякий раз, когда пароль проверен, сначала проверьте срок действия пароля. Если срок действия пароля истина, отправьте клиенту исключение с определенным кодом ошибки / сообщением об ошибке, сообщив, что срок действия пароля истек. На стороне клиента проверьте ответ службы на наличие такого кода ошибки и перенаправьте пользователя на страницу смены пароля.

...