好久没有写点东西了,今天抽空回忆了一下公司单点登录的方案,我们公司采用的是票据的模式通过jwt实现的单点登录,梳理了一下流程,主要分为2个部分,1、拉取登录信息 2、从token中获取登录的凭据
1、拉取登录信息,这部分主要是为了前端通过账号密码登录时候获取各个系统信息的token,整体流程如下
用户通过颁发token的接口
获取到一个包含各个系统信息的token,之后在调用其他的的接口时,都要带上该token
2、从token中获取登录的凭据,这部主要是为获取不同系统登陆后返回的信息,整体流程如下
当用户请求对应系统模块的接口时,会从请求的token中解析出对应系统的登录凭据,如果为获取到凭据,获取凭据过期,则返回和前端约定好的异常(即用户过期),让用户重新登录
最后总结:
1、不同系统可能登录的机制不一样,过期时间也不一样,各个系统都是token的还好解决,存在过期时间,但是一些系统登录成功后返回只是一个cookie,那么你就需要知道对应系统cookie的过期时间,将登录信息做到缓存中,
这样可以增加一个过期时间,如果不知道什么时候过期,那就需要增加对应的业务重登逻辑
2、整体的流程和jwt的认证是差不多,只是将其他系统的登录信息放入了jwt的token中,掌握好jwt其实就能理解
3、最后因为token的信息很容易被破解,所以中间传输的token最好再次进行加解密