Как работает refresh_token в аутентификации OAuth2? - PullRequest
0 голосов
/ 12 февраля 2020

Это чисто теоретический вопрос. Я на работе к Angular интерфейсу, который связан с Spring Boot Rest Service. Процесс авторизации осуществляется через OAuth2 и использует сервер Keycloack.

Я уже реализовал в своем приложении ту часть, которая запрашивает токен доступа у Keycloak, и я попытался также получить его в Postman. Все работает правильно. Теперь я видел, что в Почтальоне я получаю токен доступа, значение expires_in (и это ясно), а также refresh_token, refresh_expires_in и session_state. Эти 3 последние значения для меня не очень понятны. Я пытаюсь понять это. Итак, до сих пор, если я правильно понял:

1) Мой Angular интерфейс отправляет учетные данные пользователя на сервер аутентификации (в моем случае, Keycloack) для получения токена, срок действия которого истекает в данном time.

2) Когда мой Angular Frontend запрашивает какой-либо сервис для бэкэнда сервисов, он отправляет сам запрос (ссылка, параметр и т. д.), а также токен.

3) Бэкэнд службы проверит токен и предоставит моему веб-интерфейсу нужный ресурс.

4) Токен доступа может быть обновлен до истечения срока действия, это цель refre sh token и refre sh time .

Прав ли я до сих пор? А теперь я прочитал некоторый учебник (также в Stack Overflow), но на самом деле я не понял, как эти 3 значения выше и система refre sh работает. С конкретной точки зрения, как это работает?

1) Истечение срока действия токена не связано с истечением срока действия сеанса. Есть 2 разных и независимых понятия. Я прав?

2) Материально, как происходит процесс обновления токена и как и когда это происходит? Автоматически каждую X секунду, или когда сервер проверяет, что токен действителен, или во время каждого входа в систему запускается обновление?

3) Чтобы обновить токен доступа, также refre sh токен должен быть отправлен на сервер приложений. Правильно?

4) Какова цель session_state, который я вижу в ответе токена через Почтальона?

Я прочитал несколько уроков, но еще немного запутался в некоторых аспектах. И, прежде чем приступить к реализации, я бы прекрасно понял концепции.

1 Ответ

2 голосов
/ 12 февраля 2020

В сеансе есть несколько этапов:

  • Вход пользователя в систему для получения токенов
  • Использование токенов доступа для вызова API
  • Срок действия токена доступа и клиента получает ответ 401
  • Клиент обрабатывает 401, получая новый токен доступа с refre sh токен
  • Ссылка sh токен в конце концов истекает и сбой обновления токена доступа
  • Пользователь должен войти снова

Главное, чтобы понять сообщения - моя визуальная запись может помочь вам понять это - эта запись предназначена для настольного приложения, но сообщения в значительной степени то же самое.

Из интереса ваше приложение Angular, вероятно, не должно использовать токены refre sh и использовать вместо него решение по обновлению токенов доступа SPA *1022*.

...