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

无需用户提示与固定redirect URI的SSO解决方案咨询

可行的标准方案有两类,均不需要你从零实现认证逻辑:

方案1:OAuth 2.0 动态客户端注册(RFC 7591)

这是完全匹配你需求的OAuth扩展标准,专门解决客户端域名/回调地址无法提前预置的场景:

  • 你可以提前给所有站点B的容器预置一个共享的注册密钥,站点B容器启动后,自动携带该密钥向站点A的客户端注册接口发起请求,提交当前实例的动态redirect_uri
  • 站点A验证请求携带的注册密钥合法后,自动为该站点B实例下发唯一的client_id和client_secret,完成注册,全程不需要人工介入
  • 后续站点B就可以按照标准OAuth 2.0授权码流发起认证,已登录站点A的用户不需要重复输入凭证
  • Django侧可以直接用django-oauth-toolkit实现该能力,该库已经原生支持RFC 7591,你只需要额外给注册接口加一个自定义权限校验逻辑,只有携带预置合法密钥的请求才能完成注册即可,不需要从零开发适配逻辑

方案2:JWT跨域身份断言

如果不想引入完整的OAuth客户端注册逻辑,可以用这套更轻量的标准方案:

  • 提前为每个站点B容器生成唯一的公私钥对,公钥预先同步到站点A存储,私钥保存在站点B容器内
  • 用户访问站点B时,站点B弹出一个站点A的固定域名校验窗口,站点A检测到用户已登录后,生成一个带签名的JWT,JWT payload中包含用户身份、有效期、允许访问的站点B公钥指纹
  • 站点A通过postMessage将JWT传给站点B窗口,站点B验证JWT的签名合法后,即可拿到当前用户的身份信息
  • 后续站点B调用站点A的API时,将该JWT放在Authorization请求头中,站点A验证JWT签名、有效期、站点B指纹匹配后,即可完成授权
  • 该方案完全不需要配置redirect_uri,同时因为JWT绑定了站点B的密钥,就算域名被冒用也无法完成身份校验,满足你不信任域名的要求

内容的提问来源于stack exchange,提问作者Ben Davis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:54:05