Обзор настройки
Я настроил Keycloak на использование JWT- основанная на аутентификации клиента. Вот соответствующие настройки:
Аутентификация клиента: включена, при этом клиент переведен в конфиденциальный режим.
Алгоритм подписи: в Keycloak установлен на RS256.
Вкладка «Учетные данные»: аутентификатор клиента настроен на используйте подписанный JWT.
Клиенту, с которым я работаю, для аутентификации требуется следующий заголовок JWT:
Код: Выделить всё
{
"alg": "RSA-OAEP-256",
"cty": "JWT",
"enc": "A256GCM",
"kid": "po6QKfVcfFpGOyWOGMKsvmOFugOHXId6w5kyo6vw1W8"
}
Keycloak успешно расшифровывает входящий JWT, и я могу получить доступ к расшифрованным данным в keycloakSession. Однако когда Keycloak пытается перенаправить обратно клиенту с кодом авторизации, я получаю сообщение об ошибке, указывающее, что клиент недействителен или учетные данные клиента недействительны.

Код: Выделить всё
after a success context i get this error 2024-11-01 17:39:27,252 DEBUG [org.keycloak.authentication.AuthenticationProcessor] (executor-thread-8) AUTHENTICATE CLIENT
2024-11-01 17:39:27,252 DEBUG [org.keycloak.authentication.ClientAuthenticationFlow] (executor-thread-8) client authenticator: client-secret
2024-11-01 17:39:27,252 DEBUG [org.keycloak.authentication.ClientAuthenticationFlow] (executor-thread-8) client authenticator: client-jwt
2024-11-01 17:39:27,252 ERROR [org.keycloak.services] (executor-thread-8) KC-SERVICES0025: Error when validating client assertion: org.keycloak.jose.jws.JWSInputException: java.lang.IllegalArgumentException: Parsing error
at org.keycloak.jose.jws.JWSInput.(JWSInput.java:59)
at org.keycloak.authentication.authenticators.client.JWTClientAuthenticator.authenticateClient(JWTClientAuthenticator.java:111)
at
Как настроить Keycloak для правильной обработки этого зашифрованного JWT на протяжении всего потока OpenID Connect, включая финальный перенаправить на клиента? Потребуется ли специальный аутентификатор Keycloak для полной поддержки шифрования RSA-OAEP-256/A256GCM на протяжении всего процесса или существует другой подход для предотвращения ошибки «Неверный клиент» в конце?
Подробнее здесь: https://stackoverflow.com/questions/791 ... alid-clien