Обновление OAuth2 Access Token - PullRequest
       69

Обновление OAuth2 Access Token

0 голосов
/ 26 апреля 2018

Я создаю веб-приложение, которое будет состоять из серверной части и веб-интерфейса. Я хочу ввести auth между этими двумя частями, и я намерен использовать для этого OAuth2.

Часть интерфейса будет действовать как клиент OAuth, а серверная часть будет служить поставщиком OAuth, поэтому сервер будет выдавать токен доступа и обновления.

Мой план состоит в том, чтобы, конечно, хранить токен обновления на стороне сервера и хранить токен доступа на стороне интерфейса (и отправлять токен доступа с каждым запросом в качестве параметра заголовка). Допустим, токен доступа длится 24 часа, а токен обновления - 3 месяца.

Мой вопрос: когда (и как) я должен обновить токен доступа, который хранится на стороне интерфейса? (Я спрашиваю об этом, потому что хочу обновить его до истечения срока его действия; не хочу сталкивать пользователя с потоком входа в систему, если в этом нет необходимости)

  1. Должен ли я возвращать новый токен доступа после каждого успешного запроса и сохранять его на стороне внешнего интерфейса (не очень хорошая идея)
  2. Должен ли я возвращать новый токен доступа, если срок действия существующего только истекает - возможно, необходимо проверить на стороне внешнего интерфейса, возвращается ли новый токен доступа через параметры заголовка и заменяет ли он старый.
  3. Должен ли я хранить токен доступа и обновления на стороне внешнего интерфейса, а если срок действия токена истек, то получить новый, используя токен обновления
  4. Что-то еще?

Я не уверен, что является лучшей практикой.

1 Ответ

0 голосов
/ 27 апреля 2018

№ 3 - лучший случай, я думаю. Если вы храните оба токена (access_token & refresh_token) на внешней стороне, используя cookie, вы можете легко проверить из запроса метод getCookie.

проверить токен доступа из запроса

  1. if (isAccessTokenExpired) проверить токен обновления из запроса
  2. if (isRefreshTokenExpired) LoginRequiredException (пользовательское исключение и что-то сделать)
  3. иначе обновите оба токена (продлите время или создайте новый токен) и ответьте setCookie
  4. иначе просто продолжай.
...