敌军bug 2022-11-30 10:45 采纳率: 33.3%
浏览 20

在JWT基础做单点登录

原有的多个系统使用的JWT登录,各个系统的jwt内容还不一样,怎么做多个系统的单点登录
  • 写回答

1条回答 默认 最新

  • dp_shiyu 2022-11-30 12:04
    关注

    跟进您当前的需求分析,我理解为当前有多个系统均采用了JWT登录,但其携带数据的签证信息不一致,而需要实现多个系统的单点登录。
    单点登录的签证应当被其它的应用服务所承认,并且JWT具有私钥和不同的携带业务信息,首先,你得确定一个签署通道,为您的业务系统建立一个统一的签证通道,并提供统一服务确认签证是否有效并反馈携带信息(当然,这没有把JWT的优势体现出来)。

    如果JWT签证信息并不影响业务,那么设置一个主服务,统一处理登录之后的签证并设定对应的缓存(redis)等,这种模式下JWT的无状态也显得挺无力的,当其他应用携带签证访问时,可以到统一服务里面调取,调取之后亦可以设置一个缓存,免得每次都得调取。

    上面这种还有一种解决方式,那就是拿每个独立子服务的签证去统一服务换统一签证(统一签证因为可以换取源签证),这个统一的签证是所有子服务所认可的,有点类似与 accessToken 和 freshToken 的赶脚。这种修改对源业务逻辑影响不大。

    如 内网穿透 兄 提到的 使用三方SSO服务也是可行的。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日