Docker容器内Keycloak访问宿主机报redirect_uri错误如何解决
问题修复方案
1. 优先检查Keycloak客户端白名单配置
Invalid parameter: redirect_uri 报错绝大多数是Keycloak侧的客户端重定向白名单未配置对应地址导致的:
- 打开Keycloak管理后台
http://localhost:28080/auth,使用管理员账号admin/admin登录 - 切换到你应用对接的Realm(默认内置Realm为master)
- 左侧菜单栏选择「Clients」,点击你应用使用的对应客户端ID进入配置页
- 找到「Valid Redirect URIs」配置项,填入
http://host.docker.internal:9090/dasboard/*后保存即可生效
2. 校验重定向地址匹配规则
请确认应用发起认证请求时携带的redirect_uri参数,和你填写的白名单规则完全匹配:
- 注意拼写校验:你指定的跳转路径是
dasboard,请确认是否是dashboard的拼写错误,单词少写字母h会导致匹配完全失效 - 协议、域名、端口、路径前缀必须完全对齐,比如白名单配置的是http协议,请求携带的
redirect_uri是https协议也会触发报错
3. 可选:验证宿主机域名解析有效性
你docker-compose中已经配置了extra_hosts: - "host.docker.internal:host-gateway",新版Docker(Windows/Mac/Linux 20.10+)默认可以正常解析,如果是旧版Linux Docker,可以进入容器验证解析是否正常:
docker exec -it local_keycloak ping host.docker.internal
如果解析失败,可以将host-gateway替换为宿主机的实际物理IP,例如"host.docker.internal:192.168.3.20"(替换为你自己的宿主机IP即可)
内容的提问来源于stack exchange,提问作者Kristjan Bulič
相关产品推荐
相关产品推荐

