Я пытаюсь определить лучший способ обеспечить соблюдение правил истечения срока действия пароля в моем решении.
На стороне сервера предоставляется REST API для операций с настраиваемой активной службой токенов безопасности (своего рода). Клиентские приложения передают учетные данные пользователя на конечную точку REST, где пользователь проходит проверку подлинности на сервере. Ответ включает настраиваемый токен безопасности, представляющий пользователя, который затем передается другим методам API, чтобы можно было авторизовать вызов. Сервер не имеет состояния и не поддерживает никаких ссылок на информацию об удостоверениях или утверждениях (т.е. без сеанса).
У нас есть правила истечения срока действия пароля, которые применяются сервером. Таким образом, при аутентификации пользователя возможно, что срок действия его пароля истек. Мне нужно сообщить об этом клиенту, чтобы он мог сделать все необходимое, чтобы пользователь изменил свой пароль. (Есть еще одна конечная точка REST для смены пароля на сервере.)
Вопросы
Мне кажется, что аутентификация пользователя с просроченным паролем должна завершиться неудачей. Однако мне нужно знать личность пользователя, который меняет пароль при втором вызове API, поэтому должен ли я продолжать и возвращать токен, даже если срок действия пароля истек?
Как я должен сообщить клиенту, что требуется смена пароля? Я думал включить это как утверждение в токен, но это потребовало бы от меня повторного выпуска нового токена после изменения пароля или изменения исходного токена, что не разрешено. Другой моей мыслью был собственный код состояния HTTP, который я бы соответствовал значению «Требуется смена пароля».
Ответ на этот вопрос, вероятно, зависит от предыдущих двух, но я не хочу авторизовать пользователя с просроченным паролем, если токен передается каким-либо другим API (помимо смены пароля). Как лучше всего справиться с этим?