Должен ли я обновить токен доступа на API - PullRequest
0 голосов
/ 16 ноября 2018

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

Каков наилучший способ обновления токена авторизации в случае, если пользователь изменил свой пароль или адрес электронной почты?

Я не использую OAuth, но в заголовке есть обычный токен на предъявителя . Идея состоит в том, чтобы хранить на стороне клиента дополнительный токен обновления , при каждом изменении почты или пароля мы действительно аннулируем его токен доступа. После этого пользователь может сделать запрос с токеном обновления, чтобы получить новый токен доступа

1 Ответ

0 голосов
/ 16 ноября 2018

В зависимости от вашего бэкэнда (Ruby on Rails, NodeJS и т. Д.) Могут быть разные подходы. Это отличный пост в блоге (предупреждение: в этом посте используется некий красочный язык), в котором рассматриваются некоторые проблемы с аутентификацией, в частности сброс пароля.

Если честно, вы уверены, что вам вообще нужен токен обновления?

Почему бы просто не выдать новый токен Bearer с использованием обновленных учетных данных для текущего активного сеанса (тот, который отправил запрос на изменение адреса электронной почты / пароля)?

Случай 1: аутентифицированный сеанс пользователя

Пользователь имеет активные сеансы и обновляет свой пароль или электронную почту в одном из этих сеансов

  • сделать недействительными сеансы, которые мы не использовали для обновления пароля / электронной почты
  • нет оснований предполагать, что учетная запись была взломана (они уже вошли в систему, при условии, что срок действия ваших токенов авторизации истекает в разумные сроки)
  • выдать новый токен на предъявителя с использованием обновленных учетных данных (пароль / адрес электронной почты)
  • рекомендация: отправьте электронное письмо на счет подтверждение смены пароля

Случай 2: забытый пароль

Пользователь вышел из системы и запросил изменение пароля (не то, что вы просили об этом специально, но также и то, почему токен обновления не требуется, даже если используется специальный сеанс):

  • отправить ссылку для сброса
  • пользователь щелкает эту ссылку, которая создает специальный сеанс, в котором они вошли в систему и можете обновить свой пароль
  • пользователь обновляет свой пароль, делает недействительными все другие сеансы (если есть), выдает новый действующий токен авторизации для текущего сеанса на основе обновленных учетных данных
  • рекомендация: заставьте их обновить пароль, прежде чем предпринимать какие-либо другие действия

Надеюсь, это ответит на ваш вопрос!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...