带有弹簧靴的钥匙斗篷CODE_TO_TOKEN_ERROR

时间:2019-09-25 10:25:51

标签: spring-boot authentication integration keycloak

将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

2 个答案:

答案 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

中阅读更多内容
相关问题