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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:01:14