Я изучаю Keycloak
и соответствующие протоколы OpenID & OAuth2
.
Все понятно, кроме одного: как поддерживать скользящий сеанс для вошедшего в систему пользователя. Может быть, я что-то неправильно понимаю.
Authorization Flow
в первую очередь перенаправляет пользователя на страницу входа в keycloak, после успешного входа пользователь перенаправляется на redirect url
с authorization code
.
- Используя этот код авторизации, серверное приложение подключается к серверу keycloak и обменивается кодом для
Access token
(также включая идентификатор клиента, секрет и т. Д.) И ID token
.
Access token
используется самим приложением на стороне сервера для извлечения подробностей с сервера Keycloak, таких как дополнительная информация пользователя, открытый ключ и т. Д. Таким образом, Access token
используется только приложениями.
- Серверные приложения устанавливают куки с полученным
ID token
. Теперь пользователь может получить доступ к защищенным ресурсам.
Всего у нас
Access token
хранится на стороне сервера и используется только приложениями или службами для получения дополнительной информации из Keycloak.
Refresh token
хранится на стороне сервера и используется только приложениями или службами для получения новых Access token
ID token
хранится в файлах cookie пользователя и используется для доступа к защищенным ресурсам системы.
Мой вопрос: как можно обновить ID token
? Рассмотрим следующий случай, когда пользователь вошел в систему и выполняет некоторые действия в системе, но внезапно истек срок действия токена. Как этот случай должен быть обработан?
Я реализовал свой собственный поток, называемый Sliding session
, поэтому токен обновляется при выполнении любого запроса, однако я не знаю, как обработать этот случай с помощью Keycloak.
Буду признателен за любую помощь по этому вопросу.