1条回答 默认 最新
dp_shiyu 2022-11-30 12:04关注跟进您当前的需求分析,我理解为当前有多个系统均采用了JWT登录,但其携带数据的签证信息不一致,而需要实现多个系统的单点登录。
单点登录的签证应当被其它的应用服务所承认,并且JWT具有私钥和不同的携带业务信息,首先,你得确定一个签署通道,为您的业务系统建立一个统一的签证通道,并提供统一服务确认签证是否有效并反馈携带信息(当然,这没有把JWT的优势体现出来)。如果JWT签证信息并不影响业务,那么设置一个主服务,统一处理登录之后的签证并设定对应的缓存(redis)等,这种模式下JWT的无状态也显得挺无力的,当其他应用携带签证访问时,可以到统一服务里面调取,调取之后亦可以设置一个缓存,免得每次都得调取。
上面这种还有一种解决方式,那就是拿每个独立子服务的签证去统一服务换统一签证(统一签证因为可以换取源签证),这个统一的签证是所有子服务所认可的,有点类似与 accessToken 和 freshToken 的赶脚。这种修改对源业务逻辑影响不大。
如 内网穿透 兄 提到的 使用三方SSO服务也是可行的。
解决 无用评论 打赏 举报