Я хотел сообщить, как я поступаю, что, как мне кажется, дает мне все, что я хочу с точки зрения решения / ответа на мой исходный вопрос.
Токен доступа к Keycloak включает в себя: «sub», «auth_time» и «session_state».
{
"sub": "ae384e77-7588-444b-9c4f-3dc920750e1f",
"auth_time": 1590555910,
"session_state": "2d735372-1a5a-43de-8a6c-1a45deebf20b",
}
Я могу использовать подпрограмму для запроса REST API администратора Keycloak с помощью https://my-domain.com/auth/admin/realms/demo/users/{{sub}}/sessions
, который дает список вроде:
[
{
"id": "2d735372-1a5a-43de-8a6c-1a45deebf20b",
"username": "20000",
"userId": "ae384e77-7588-444b-9c4f-3dc920750e1f",
"ipAddress": "52.62.57.52",
"start": 1590555910000,
"lastAccess": 1590555910000,
"clients": {
"4eb676c2-94c3-4bac-a423-94a7bf57ece0": "demo"
}
}
]
Затем я могу выбрать из возвращенного списка сеансов, совпадающих от id
до session_state
из токена доступа (nb, start
из списка сеансов соответствует auth_time
из токена доступа.
Это дает мне то, что мне нужно. Я могу передать исходное session_state клиенту и запросить от keycloak, соответствующий этому session_state :)
Я обновлю, если я возникают проблемы.