Keycloak Gatekeeper обновляет токен, но не добавляет его к запросу - PullRequest
0 голосов
/ 08 ноября 2019

Куда мне нужно отправить запрос на обновление токена доступа? Потому что, если я отправляю запрос в службу ресурсов, у меня возникает исключение с истекшим сроком действия токена, даже если привратник обновляет токен.

Я хочу обновить токен доступа, используя токен обновления. Документация привратника гласит: «Если запрос на токен доступа содержит токен обновления и для параметра --enable-refresh-tokens установлено значение true, прокси автоматически обновит для вас токен доступа». - https://www.keycloak.org/docs/latest/securing_apps/index.html#refresh-tokens

И действительно, когда срок действия токена истек, привратник обновляет токен доступа и внедряет его где-то в ответе, но когда запрос перенаправляется службе ресурсов, у меня возникает ExpiredJwtException, поскольку в обновленном токене нет новогозапрос. И в неудачном ответе я вижу, что вместо нового есть старый токен. Однако если на стороне службы ресурсов возникает ошибка тайм-аута, и привратник возвращает свой собственный ответ пользователю, я вижу, что токены доступа и обновления обновляются.

Вот журналы привратника:

1.5732098220167706e+09  info    keycloak-gatekeeper/middleware.go:154   accces token for user has expired, attemping to refresh the token   {"client_ip": "172.18.0.1:36270", "email": "demo@demo1.com"}
1.5732098220504465e+09  info    keycloak-gatekeeper/middleware.go:206   injecting the refreshed access token cookie {"client_ip": "172.18.0.1:36270", "cookie_name": "kc-access", "email": "demo@demo1.com", "refresh_expires_in": 3600, "expires_in": 59.949554727}
1.573209822050499e+09   debug   keycloak-gatekeeper/middleware.go:226   renew refresh cookie with new refresh token {"refresh_expires_in": 3600}
1.5732098220505428e+09  debug   keycloak-gatekeeper/middleware.go:367   access permitted to resource    {"access": "permitted", "email": "demo@demo1.com", "expires": -5.050542554, "resource": "/*"}
1.573209851051063e+09   info    keycloak-gatekeeper/middleware.go:90    client request  {"latency": 29.036757293, "status": 500, "bytes": 44, "client_ip": "172.18.0.1:36270", "method": "GET", "path": "/ping"}
...