У меня вопрос по поводу Keycloak 4.8.3.
Я использую адаптер безопасности Spring для защиты нашего веб-приложения с помощью Keycloak и включенной функции входа в систему: запомнить меня.
Пользователь входит в систему из браузера и перенаправляет обратно в веб-приложение.
Затем наше веб-приложение вызывает внутреннюю точку REST-API, защищенную Keycloak, с помощью KeycloakRestTemplate, поскольку нам также необходимо авторизовать эти вызовы.используя того же пользователя веб-приложения.
Дело в том, что я хочу использовать токен авторизации для другого метода службы REST-API.
Через некоторое время вызов REST-APIпроисходит сбой со следующим сообщением об ошибке:
ERROR RefreshableKeycloakSecurityContext Refresh token failure status: 400 {"error":"invalid_grant","error_description":"Session doesn't have required client"}
, а файл журнала keycloak содержит следующее предупреждение:
17:25:51,929 WARN [org.keycloak.events] (default task-1) type=REFRESH_TOKEN_ERROR, realmId=EHotel, clientId=IBE, userId=f:8db533c4-9733-48d4-8b30-28a50954b7ad:khaendel, ipAddress=192.168.1.76, error=invalid_token, grant_type=refresh_token, refresh_token_type=Refresh, refresh_token_id=9fba841f-54bb-4c81-8f7b-6a7e1c5ab92e, client_auth_method=client-secret
Я не могу предсказать, когда именно это произойдет, предположительно через 15 минут или послечас.Срок действия токена устанавливается следующим образом: бездействие сеанса SSO: 15 минут макс. Сеанс SSO: 15 минут бездействия сеанса SSO, я помню: 1 день макс. Сеанс SSO, я помню: 1 день срок службы токена доступа: 5 минут
Что означаетсообщение об ошибке (сеанс не требует клиента) означает и
что я делаю не так?
Обнаружена удаленная отладка. Похоже, что на сервере keycloak задействован кэш сеанса клиента (InfinispanUserSessionProvider), который через некоторое время теряет информацию.
Я ожидал использовать токен keycloak для аутентификации другогоСервис REST-API с тем же пользователем, что и наше защищенное веб-приложение.Но токен обновления не может быть использован до тех пор, пока сеанс единого входа из-за сообщения об ошибке.