Обновить токен с Keycloak - PullRequest
       107

Обновить токен с Keycloak

0 голосов
/ 19 ноября 2018

Я использую JWT для аутентификации клиента в Keycloak :

 POST /token.oauth2 HTTP/1.1
 Host: as.example.com
 Content-Type: application/x-www-form-urlencoded

 grant_type=authorization_code&
 code=vAZEIHjQTHuGgaSvyW9hO0RpusLzkvTOww3trZBxZpo&
 client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3A
 client-assertion-type%3Ajwt-bearer&
 client_assertion=eyJhbGciOiJSUzI1NiJ9.
 eyJpc3Mi[...omitted for brevity...].
 cC4hiUPo[...omitted for brevity...]

Я получаю:

assess_token
refresh_token
token_type
expires_in

Когда я пытаюсь обновитьтокен я отправляю refresh_token сам, предоставляю тип refresh_token и получаю:

{ "error": "unauthorized_client", "error_description": "INVALID_CREDENTIALS: Invalid client credentials" }

когда я указываю client_id я получаю:

{ "error": "invalid_client", "error_description": "Parameter client_assertion_type is missing" }

Если я укажу client_assertion_type, я получу сообщение об ошибке, что client_assertion само по себе отсутствует, поэтому я буквально должен предоставить параметры, которые я указал при получении токена доступа.

Как на самом деле должен работать этот процесс обновления?

1 Ответ

0 голосов
/ 19 ноября 2018

Это вполне может быть ограничение или политика, определенные Keycloak. RFC7523 (JWT для аутентификации клиента) действительно позволяет включить учетные данные клиента, когда присутствует аутентификация JWT. Это выделено из 3.1. Обработка авторизационного гранта

Авторизационные гранты JWT могут использоваться с клиентом или без него. аутентификация или идентификация. Будь или не клиент аутентификация необходима в сочетании с авторизацией JWT Предоставить, а также поддерживаемые типы аутентификации клиента, являются Политические решения по усмотрению сервера авторизации. Однако если в запросе присутствуют учетные данные клиента, сервер авторизации ДОЛЖЕН проверить их.

Таким образом, даже если Keycloak поддерживает аутентификацию клиента JWT , может потребоваться учетные данные клиента в запросе на обновление маркера. Но также, это может быть ограничением от их конца.

Кроме того, обновление токена определяется с помощью RFC6749 - Среда авторизации OAuth 2.0 . В соответствии с разделом 6 запрос на обновление токена должен содержать учетные данные клиента, если клиент является конфиденциальным клиентом (просто клиент, который был создан с идентификатором и паролем). Если то, что вы увидели, не является ограничением, тогда предположите, что Keycloak придерживается RFC6749 и требует, чтобы вы отправили учетные данные клиента в запросе обновления токена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...