You need to enable JavaScript to run this app. Keycloak授权码流程调用token接口返回invalid_grant错误如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak授权码流程调用token接口返回invalid_grant错误如何解决?

Keycloak授权码兑换token返回Code not valid问题原因及解决方案
  • PKCE校验未通过:当前Keycloak新版本对公开类型客户端默认强制开启PKCE(Proof Key for Code Exchange)校验。你手动拼接的授权请求URL未携带code_challenge、code_challenge_method参数,后续兑换token时也未传递code_verifier参数,导致服务端校验不通过返回code无效。官方测试应用会自动生成PKCE校验参数并在请求中携带,因此可以正常兑换token。
    修复方案:可以在myclient客户端的「高级」配置页中,关闭「PKCE强制开启」选项;也可以按照PKCE规范生成code_verifier和code_challenge,发起授权请求时携带code_challenge和code_challenge_method参数,兑换token时携带code_verifier参数。
  • 授权码已过期:Keycloak默认授权码有效期仅为60秒,手动复制code、拼接curl命令的耗时很容易超过该有效期,导致code失效。
    修复方案:尽量缩短从拿到回调code到执行curl命令的时间,也可以临时在对应realm的「令牌」配置页中调长授权码有效期方便测试。
  • 授权码已被使用:Keycloak的授权码是一次性凭证,只要发起过一次兑换请求无论成功失败,该code都会立即失效,不可重复使用。
  • redirect_uri不匹配:兑换token时传递的redirect_uri必须和发起授权请求时传递的redirect_uri完全一致,包括末尾的斜杠、参数都不能有差异,即使你配置了通配符的重定向地址也需要遵守该规则,请检查两处的redirect_uri是否完全相同。
  • code提取错误:部分浏览器或复制操作可能会误截断code末尾的字符,或者带上多余的转义字符,导致传递的code和实际发放的code不一致。

内容的提问来源于stack exchange,提问作者Nishant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 01:36:01