Gluu OpenID Connect使用IP作为结束会话端点时用户无法登出问题
校验逻辑说明
OIDC 核心规范明确要求身份提供商(IDP)的 issuer 标识符必须全局唯一,且所有流程请求、返回的 ID Token 中的 iss 字段必须与 IDP 配置的 issuer 完全匹配。你遇到的校验是Gluu 作为合规 OIDC IDP 的标准实现逻辑:
你之前用域名请求时,ID Token 中的 iss 字段值为 https://my-gluu-server.com,和域名端点的 issuer 匹配,登出请求可以正常处理;当你改用 IP 地址请求端点时,Gluu 识别到当前访问地址的 issuer 与 ID Token 中的 iss 不一致,会直接拒绝处理登出请求,因此用户在 Gluu 侧的会话没有被清除,就会出现不用重新登录就能访问私有页面的问题。
兼容IP和域名的可行方案
下面是可落地的3种方案,按需选择即可:
- 方案1:配置Gluu issuer别名(最符合规范的方案)
直接在Gluu管理后台添加IP为合法issuer别名:- 登录Gluu管理面板,进入
Configuration > OxAuth Configuration配置页 - 找到
issuerAliases配置项,将https://10.10.10.10添加到列表中 - 保存配置后重启oxauth服务生效,后续Gluu会将该IP识别为合法的issuer地址,正常处理IP端点的登出请求
- 登录Gluu管理面板,进入
- 方案2:修改客户端服务器hosts绑定(改动最小的方案)
无需修改Gluu侧配置,只要在部署.NET客户端的服务器上修改hosts文件,添加一行映射:
客户端仍然使用原来的域名作为end_session_endpoint,请求时会自动解析到目标IP,完全规避issuer不匹配的问题10.10.10.10 my-gluu-server.com - 方案3:反向代理统一Host头(多访问入口场景适用)
如果有多个域名/IP都需要访问Gluu,可以在Gluu前加一层反向代理,所有访问请求经过代理时,统一将Host头设置为Gluu配置的主域名my-gluu-server.com,保证Gluu拿到的Host永远和配置的issuer一致,不会出现匹配失败的问题。
注意事项
配置完成后需要确认你使用的.NET客户端的OIDC配置中,对应的post_logout_redirect_uri已经添加到Gluu对应客户端的允许登出重定向地址列表中,避免出现重定向被拦截的问题。
内容的提问来源于stack exchange,提问作者Fordy
相关产品推荐
相关产品推荐

