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

Firebase集成Keycloak OIDC时出现INVALID_IDP_RESPONSE(invalid_grant,code not valid)错误排查求助

Firebase集成Keycloak OIDC时出现INVALID_IDP_RESPONSE(invalid_grant,code not valid)错误排查求助

我正在给Angular应用做Firebase Authentication和Keycloak(作为OIDC提供商)的集成,结果在Keycloak登录页重定向回Firebase时,碰到了这个错误:

INVALID_IDP_RESPONSE : Error getting access token from [Keycloak issuer URL], OAuth2 redirect uri is: [firebase-app].firebaseapp.com/__/auth/handler, response: OAuth2TokenResponse{params: error=invalid_grant&error_description=Code%20not%20valid, ...}

已完成的配置细节

Firebase OIDC提供商配置

我在Firebase里配置自定义OIDC提供商时,填了这些内容:

  • 颁发者(Issuer):https://<your-domain>/realms/<realm>
  • 配置了Keycloak提供的客户端ID和客户端密钥
  • 重定向URI:https://<firebase-app>.firebaseapp.com/__/auth/handler

Keycloak客户端配置

对应的Keycloak客户端我是这么配的:

  • 访问类型:confidential
  • 认证方式:客户端ID和密钥
  • 有效重定向URI已包含上述Firebase的重定向地址
  • OpenID Connect设置基本为默认值
  • 令牌端点:https://<your-domain>/realms/<realm>/protocol/openid-connect/token

这里有个细节:我没有显式让Keycloak客户端使用client_secret_post,而且Firebase的令牌交换逻辑我也没法控制。

前端登录流程实现

在Angular前端,我用Firebase Auth的signInWithRedirect启动登录流程,然后在登录组件的ngOnInit里调用getRedirectResult处理重定向后的结果。但重定向完成后,拿到的结果是{user: null, credential: null},完全没有有效的用户或凭证信息。

我想请教的问题

有没有大佬碰到过类似的情况?为什么Firebase从Keycloak拿令牌时会得到invalid_grant的响应?会不会和这些因素有关:

  • 重定向URI的配置细节问题?
  • 会话过期导致授权码失效?
  • 授权码被重复使用触发了Keycloak的校验?
  • 令牌端点的认证方式和Firebase的请求不匹配?

另外,Keycloak有没有什么特定的配置项是必须调整的,才能让Firebase顺利走完整个OIDC流程?

环境信息

  • Firebase(使用自定义OIDC提供商)
  • 自托管的最新版Keycloak
  • Angular前端,用@angular/fire包处理认证逻辑

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:38:11