【问题标题】:Keycloak with spring boot CODE_TO_TOKEN_ERROR带有弹簧启动 CODE_TO_TOKEN_ERROR 的 Keycloak
【发布时间】:2020-01-25 12:31:42
【问题描述】:

将 keycloak 与 spring-boot 应用程序集成,但在尝试登录时出现以下错误。需要帮助解决“CODE_TO_TOKEN_ERROR”。

在 keycloak 服务器日志中:

2019-09-25 15:38:25,040 WARN  [org.keycloak.events] (default task-19) type=CODE_TO_TOKEN_ERROR, realmId=Test-App, clientId=test-web-app, userId=null, ipAddress=127.0.0.1, error=invalid_client_credentials, grant_type=authorization_code

在 spring boot 应用程序日志中:

2019-09-25 15:38:25.042 ERROR 3666 --- [nio-8081-exec-1] o.k.adapters.OAuthRequestAuthenticator   : failed to turn code into token
2019-09-25 15:38:25.042 ERROR 3666 --- [nio-8081-exec-1] o.k.adapters.OAuthRequestAuthenticator   : status from server: 400
2019-09-25 15:38:25.042 ERROR 3666 --- [nio-8081-exec-1] o.k.adapters.OAuthRequestAuthenticator   :    {"error":"unauthorized_client","error_description":"Client secret not provided in request"}

application.properties 文件:

keycloak.auth-server-url = http://localhost:8080/auth
keycloak.realm = Test-App
keycloak.resource = test-web-app
keycloak.credentials.secret = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
keycloak.ssl-required = external
keycloak.use-resource-role-mappings = true
keycloak.public-client = true

keycloak.security-constraints[0].authRoles[0] = ROLE_USER
keycloak.security-constraints[0].securityCollections[0].patterns[0] = /hello/*

server.port = 8081

【问题讨论】:

  • 只是发布日志条目,你的配置不是一个真正的问题

标签: spring-boot authentication integration keycloak


【解决方案1】:

通过将以下参数添加到body 部分的x-www-form-urlencoded 部分,从邮递员向http://localhost:8080/auth/realms/{realm-name}/protocol/openid-connect/token URL 发出POST 请求。

标题:

Content-Type: application/x-www-form-urlencoded

身体参数:

client_id:new-realm-app
username:username
password:password
grant_type:password
client_secret:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

生成了一个 access_token。就是这样。。

它对我有用...

【讨论】:

    【解决方案2】:

    您需要删除此属性 keycloak.public-client = true,公共客户端仅在客户端是在浏览器客户端中运行的客户端时使用,如 javascript 应用程序(Angular 或反应)。当您使用此属性时,keycloak 不会在身份验证请求中发送客户端 ID 和凭据。 如果您有 Spring Boot 服务,则需要使用机密或仅承载客户端。 你可以在keycloak documentation阅读更多内容

    【讨论】:

      猜你喜欢
      • 2015-01-22
      • 2018-11-05
      • 2021-04-13
      • 2021-11-30
      • 2018-09-08
      • 2023-04-04
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多