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

基于JWT实现多独立认证跨域应用免登SSO的方案及安全问题咨询

现有自定义JWT跳转方案的安全注意事项
  • 强制完整校验JWT核心字段:除了校验签名合法性、用户邮箱有效性之外,必须额外校验iss(签发方)、aud(接收方)、exp(过期时间)三个字段,防止第三方滥用共享密钥签发无效JWT,也避免过期JWT被重放攻击。exp有效期建议控制在1~5分钟内,仅满足单次跳转场景的时间要求即可。
  • 规避JWT泄露风险:不要将JWT放在URL路径参数中,路径会被浏览器历史、服务器日志、代理节点日志留存,建议改为放在URL hash段(例如app.domain1.com/connect#{JWT}),hash段不会被发送到服务端,仅前端SPA可读取。同时要求JWT必须为一次性使用,校验通过后立刻标记失效,禁止重复校验。
  • 账户匹配校验:必须确保两个应用中存储的用户邮箱均为已完成邮箱验证的可信状态,防止某一应用内未验证他人邮箱的用户生成JWT,跳转后直接登录进对方应用的他人账户。如果邮箱可信度不足,需额外增加用户确认步骤,禁止直接自动登录。
  • 规避CSRF风险:api.domain1.com的JWT校验接口必须遵循原有API的CSRF防护规则,不要为该接口开安全特例。可额外增加Referer请求头校验作为辅助防护手段。
  • 密钥安全管理:优先使用非对称加密算法(RSA/EC)生成JWT签名,签发方持有私钥,校验方仅持有公钥,无需共享敏感密钥。如果使用对称加密算法,共享密钥必须单独安全存储,禁止硬编码在代码库中,密钥泄露会导致整个跨站登录机制完全失效。
  • JWT payload禁止携带敏感信息:JWT payload仅为base64编码,未做加密处理,任何人拿到都可直接解码读取,仅可存放身份校验必要字段,禁止存放密码、手机号、身份证号等敏感信息。
更合适的可选方案

如果希望尽可能遵循标准协议,不需要额外部署中心IDP,可选择以下两种方案,安全性和成熟度均高于自定义JWT方案:

  • 双向信任OAuth2方案:无需部署统一身份提供商,仅需要两个应用互相配置为对方的受信任OAuth客户端即可。例如用户从app.domain2.com跳转至app.domain1.com时,app.domain2.com作为提前注册的合法OAuth客户端,携带标准的客户端ID、重定向URI参数跳转,app.domain1.com识别到用户已登录状态后直接返回授权码,app.domain2.com使用授权码调用app.domain1.com的token接口获取用户唯一标识,匹配本地账户完成登录,全程符合OAuth2标准规范,有成熟的SDK可用,无需自行实现签名校验逻辑,安全风险更低。
  • 轻量SAML单向断言方案:如果仅需要单方向跳转免登(仅app.domain2.com跳app.domain1.com,不需要反向跳转),可以使用轻量SAML断言实现,完全符合身份认证的标准规范,各编程语言均有成熟的校验SDK,不需要自行造轮子,适配两个应用独立账户体系的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:18:04