Rails Devise omniauth_openid_connect跨主机端点配置咨询
omniauth_openid_connect 跨主机端点配置方案
核心原理
omniauth_openid_connect 底层依赖的openid_connect客户端库,对client_options下的端点字段做了兼容处理:
- 填
/xxx格式的相对路径时,会自动和全局配置的scheme、host、port拼接成完整URL - 填
https://开头的完整绝对URL时,会直接使用该地址,跳过全局host拼接逻辑
配置前注意
你当前配置中开启了discovery: true,该模式下gem会主动请求身份提供商的OpenID Connect发现文档,自动覆盖所有手动填写的端点配置,要手动指定跨主机端点必须先关闭该配置。同时原配置中issuer字段末尾缺少语法逗号,配置时需要补上避免报错。
正确配置示例
config.omniauth :openid_connect, { name: :openid_connect, scope: [:openid], issuer: "oauth.provider.com", response_type: :code, discovery: false, # 关闭自动发现,避免手动配置被覆盖 client_options: { port: 443, scheme: "https", host: "oauth.provider.com", authorization_endpoint: "/authorize", # 同域端点继续用相对路径即可 token_endpoint: "https://oauth-secured.provider.com/token", # 跨域端点直接填完整绝对URL identifier: 'CLIENT_ID', secret: 'CLIENT_SECRET', redirect_uri: "https://myapp.com/users/auth/openid_connect/callback", }, }
验证方式
配置完成后触发登录流程,抓包确认两个请求地址符合预期即可:
- 授权跳转请求指向
https://oauth.provider.com/authorize - 授权码换令牌的POST请求指向
https://oauth-secured.provider.com/token
内容的提问来源于stack exchange,提问作者svelandiag
相关产品推荐
相关产品推荐

