You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak 22.0.5中OpenID Connect的redirect_uri验证不一致问题

Keycloak 22.0.5 PKCE模式下token请求redirect_uri无效问题解决

问题根源

Keycloak对授权请求和token请求的redirect_uri校验逻辑存在差异:授权阶段允许通配符匹配,但token阶段要求精确匹配客户端配置中的有效重定向URI。你配置的是http://localhost:8000/*,但token请求用的是精确的http://localhost:8000,两者不匹配导致报错。

解决步骤

1. 更新客户端重定向URI配置

在Keycloak客户端的访问设置中,添加精确匹配的http://localhost:8000到有效重定向URI列表,或者直接将原有配置改为http://localhost:8000(如果不需要路径通配)。

2. 修正授权请求的冗余参数

你的授权请求中错误添加了grant_type=pkce参数——PKCE是authorization_code流程的扩展,授权请求不需要该参数,正确请求格式如下:

GET localhost:2137/realms/SpringKeycloak/protocol/openid-connect/auth?
    client_id=login-user
    &redirect_uri=http%3A%2F%2Flocalhost%3A8000
    &state=af08ea5a-9d4d-4850-9491-483809f2c991
    &response_type=code
    &scope=openid
    &code_challenge=Jqd4T8zNX438YOgW-99eFp_7fbMkDb1Tyu0TtU41x3A
    &code_challenge_method=S256

3. 确保token请求的正确性

  • grant_type必须保持为authorization_code(PKCE不是独立的授权类型,只是该流程的扩展)
  • 确认code_verifier与授权请求的code_challenge严格对应(S256算法下,verifier的SHA-256哈希经过base64url编码后需等于challenge)
  • 请求的Content-Type必须设置为application/x-www-form-urlencoded

额外检查项

  • 客户端的Access Type需设置为public(PKCE专为无客户端密钥的公共客户端设计)
  • 确保token请求的redirect_uri与授权请求中的完全一致(包括编码、末尾斜杠等细节)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:05:05