Это чисто теоретический вопрос. Я на работе к 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, который я вижу в ответе токена через Почтальона?
Я прочитал несколько уроков, но еще немного запутался в некоторых аспектах. И, прежде чем приступить к реализации, я бы прекрасно понял концепции.