Я пытаюсь авторизовать пользователя с помощью потока предоставления кода в Keycloak для приложения Quarkus. Вот конфигурация Quarkus
# OIDC Configuration
quarkus.oidc.auth-server-url=http://localhost:8180/auth/realms/quarkus
quarkus.oidc.client-id=web-application
quarkus.oidc.credentials.secret=ca21b304-XXX-XXX-XXX-51d38ef5da02
quarkus.oidc.application-type=web-app
quarkus.oidc.authentication.scopes=email
В конфигурации клиента для "веб-приложения" включен только стандартный поток (для потока кода)
![web app configuration](https://i.stack.imgur.com/PxXqn.png)
- У меня есть доступ http://localhost:8080/
- Я перенаправлен на Keycloak (URL выглядит хорошо при
scope=openid+email&response_type=code&client_id=web-application
- Я вхожу в систему с примером учетной записи пользователя
- Я перенаправлен обратно с кодом
- Тогда я получаю исключение в Quarkus
Caused by: org.keycloak.authorization.client.util.HttpResponseException: Unexpected response from server: 401 / Unauthorized / Response from server: {"error":"unauthorized_client","error_description":"Client not enabled to retrieve service account"}
at org.keycloak.authorization.client.util.HttpMethod.execute(HttpMethod.java:95)
at org.keycloak.authorization.client.util.HttpMethodResponse$2.execute(HttpMethodResponse.java:50)
at org.keycloak.authorization.client.util.TokenCallable.obtainAccessToken(TokenCallable.java:121)
at org.keycloak.authorization.client.util.TokenCallable.call(TokenCallable.java:57)
at org.keycloak.authorization.client.resource.ProtectedResource.createFindRequest(ProtectedResource.java:276)
at org.keycloak.authorization.client.resource.ProtectedResource.access$300(ProtectedResource.java:38)
at org.keycloak.authorization.client.resource.ProtectedResource$5.call(ProtectedResource.java:205)
at org.keycloak.authorization.client.resource.ProtectedResource$5.call(ProtectedResource.java:202)
at org.keycloak.authorization.client.resource.ProtectedResource.find(ProtectedResource.java:210)
Ошибка в Keycloak:
09:58:25,420 WARN [org.keycloak.events] (default task-30) type=CLIENT_LOGIN_ERROR, realmId=quarkus, clientId=web-application, userId=null, ipAddress=172.17.0.1, error=invalid_client, grant_type=client_credentials, client_auth_method=client-secret
Вопрос: Почему Quarkus пытается использовать "grant_type = client_credentials"? Он должен использовать grant type = "authorization_code". Это похоже на ошибку в Quarkus, но, возможно, есть флаг.