Keycloak配置Google身份提供商失败报错问题求助
解决Keycloak配置Google身份提供商redirect_uri错误完整步骤
你遇到的报错为Google OAuth校验环节重定向URI不匹配,按照以下步骤逐一排查配置即可解决:
1. Keycloak侧Google身份提供商配置校验
- 进入Keycloak对应Realm的「身份提供商」页面,选择你创建的Google提供商条目
- 完整复制页面上显示的重定向URI值,不要遗漏任何字符,包含后缀的
/broker/google/endpoint部分 - 确认填写的客户端ID、客户端密钥与Google Cloud后台获取的完全一致,无多余空格、漏字符问题
- 默认权限范围保持
openid email profile即可,无特殊需求不要自行修改 - 可选打开「存储令牌」「存储令牌响应」开关,方便后续排查问题
2. Google Cloud后台OAuth配置校验
- 进入Google Cloud控制台对应项目的「API和服务」→「凭据」页面
- 找到你创建的OAuth 2.0客户端ID,进入编辑页面
- 在「已授权的重定向URI」板块,粘贴上一步从Keycloak复制的完整重定向URI,保存配置
- 配置修改后需要等待5-10分钟生效,刚修改完成立刻测试会不生效
- 额外检查:OAuth同意屏幕的发布状态需要设置为「正式版」,如果保持「测试版」状态,只有你提前添加到测试名单的Google账号可以登录,其余账号会触发权限报错
3. Node.js适配器与Keycloak部署配置校验
由于同环境下GitHub身份提供商可正常运行,适配器基础配置没有问题,只需核对以下两点:
- 调用Keycloak登录接口时不要手动覆盖
redirect_uri参数,保持Keycloak适配器的默认生成逻辑即可 - 若Keycloak通过反向代理部署,必须确保Keycloak的
hostname配置和实际对外访问的域名完全一致,避免出现Keycloak内部识别域名为localhost:8080、实际访问域名为自定义域名的情况,该问题会导致生成的重定向URI和Google后台配置的不匹配:- Docker部署的Keycloak需要在启动时添加环境变量:
KC_HOSTNAME=你的实际域名 KC_HOSTNAME_STRICT=false KC_PROXY=edge - 二进制部署的Keycloak需要修改
conf/keycloak.conf文件中的hostname配置为实际域名
- Docker部署的Keycloak需要在启动时添加环境变量:
- 公网部署的Keycloak必须使用HTTPS协议,Google仅允许本地测试的localhost地址使用HTTP协议的重定向URI
4. 最终验证
- 等待Google后台配置生效后,清除浏览器缓存,使用隐私模式窗口测试登录
- 若仍有报错,可复制Google跳转登录页的完整地址,提取其中
redirect_uri参数的取值,和Keycloak显示的重定向URI、Google后台配置的重定向URI做比对,三者必须完全一致,协议、域名、端口、路径均不能有差异
内容的提问来源于stack exchange,提问作者VIVID
相关产品推荐
相关产品推荐

