Keycloak Refresh Token прибывает в NULL в случае выхода из API? - PullRequest
0 голосов
/ 04 февраля 2019

Я использую keycloak 4.8.3 и wildfly-14.0.1 в моем приложении Java.Возникла проблема при удалении сеанса из Servelet Filter.Ниже приведены подходы, которые я попробовал.

Подход 1: Я использую HttpServletRequest.logout(), чтобы удалить сеанс из keycloak. Этот подход не работает для меня, и я получаю refresh-token, равныйNULL

Подход 2: Но когда я запускаю вызов покоя, используя команду curl с предоставленным токеном доступа.

curl -X POST -k -H 'Content-Type: application/x-www-form-urlencoded' \
-i 'https://authserver/auth/realms/{realm}/protocol/openid-connect/logout' \
--data 'username=abc&password=def&client_id=client-id&grant_type=refresh_token&client_secret=a682049d-587c-4c38-a594-814f08b0ca7&refresh_token=<refresh_token>'

Этот подход2 работает нормально.

Я не уверен, почему в случае с Java я получаю токен обновления NULL?Ниже приведен код

    KeycloakSecurityContext keycloakSecurityContext = (KeycloakSecurityContext)httpRequest.getAttribute( KeycloakSecurityContext.class.getName() ); 
    if(keycloakSecurityContext instanceof RefreshableKeycloakSecurityContext) { 
    RefreshableKeycloakSecurityContext ksc = (RefreshableKeycloakSecurityContext)keycloakSecurityContext; 
    RefreshToken refreshToken = ksc.getRefreshToken(); 
    RefreshToken refreshTokenDecoded = TokenUtil.getRefreshToken(refreshToken);
...