用户通过身份验证后的keycloak - CODE_TO_TOKEN_ERROR

min*_*rse 11 openid keycloak

我正在使用nodeJS keycloak适配器,到目前为止,我的客户端应用程序重定向到keycloak登录.

尝试登录时,我在keycloak日志中收到错误,如下所示:

12:07:12,341 WARN [org.keycloak.events](默认任务-30)type = CODE_TO_TOKEN_ERROR,realmId = myrealm,clientId = client-test,userId = xxx,ipAddress = xxx.xxx.xxx.xx,error = invalid_code ,grant_type = authorization_code,code_id = xxx,client_auth_method = client-secret

发送回我的快速应用程序的错误消息显示为"无法获取授权代码".

有人能说清楚这意味着什么吗?我只能认为我在我的realm\client\user设置中错误地配置了一些东西.

谢谢

Adr*_*ras 8

我找到了解决方案.看来,如果您按照本指南操作:https://www.ibm.com/developerworks/library/se-oauthjavapt3/index.html,您将看到当您交换访问令牌的访问代码时(/ realms/{realm -name}/protocol/openid-connect/token)您需要添加redirect_uri在请求访问代码时使用的相同内容.它现在对我有用.

希望能帮助到你,

阿德里安

  • 你好,Adrian,你能解释一下在哪里添加redirect_uri吗?我将其作为查询参数添加到我用来获取访问令牌的 url 中,但错误保持不变。 (2认同)

Nir*_*han 8

重定向 URL 应完全相同。我使用以下重定向网址来获取代码http://example.com/frontend/。当获取令牌时,我使用以下 URLhttp://example.com/对两个调用使用相同的 URL 解决了问题。


Sco*_*ott 1

这通常意味着发送回 Keycloak 以将代码交换为令牌的代码无效或丢失。首先查看用户的 type=LOGIN 日志消息,并确保该消息中的代码与登录消息上的 code_id 匹配,并且与 CODE_TO_TOKEN_ERROR 上的 code_id 匹配。