将keycloak与spring-boot应用程序集成在一起,但是在尝试登录时出现以下错误。在解决“ CODE_TO_TOKEN_ERROR”方面需要帮助。
在密钥隐藏服务器日志中:
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
在春季启动应用程序日志中:
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
答案 0 :(得分:0)
通过向http://localhost:8080/auth/realms/{realm-name}/protocol/openid-connect/token
部分的x-www-form-urlencoded
部分添加以下参数,向邮递员向body
URL发送POST请求。
标题:
Content-Type: application/x-www-form-urlencoded
Body Params:
client_id:new-realm-app
username:username
password:password
grant_type:password
client_secret:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
生成了一个access_token。就是这样。
对我有用...
答案 1 :(得分:0)
您需要删除此属性keycloak.public-client = true,仅当客户端是在浏览器客户端中运行的客户端(如javascript应用程序)(Angular或react)时,才使用public client。使用此属性时,keycloak不会在身份验证请求中发送客户端ID和凭据。 如果您有Spring Boot服务,则需要使用机密或仅承载客户端。 您可以在keycloak documentation
中阅读更多内容