不同账号实现单点登录
我理解的单点登录的逻辑示意图:

为了确保所有信任的系统保持同一个登录状态,那么就要求它们使用同一套校验机制。
对此使用的方法就是将校验方式单独拎出来作为一个服务,它负责接收各个信任的系统发出的校验请求,在校验成功后,生成类似于tokenID:token的键值对保存在本地的缓存(类似于redis)进行持久化。
返回给请求方一个认证结果,如果成功的话就是返回tokenID(Guid),告诉请求方,认证成功了。
也就是说,实际上至少有2个服务器(校验服务器:server1;正式服务器: server2,server3……),其中server2,server3……是提供正式服务的服务器,它们之间互相信任;server1上只部署了身份校验的服务,server1仅用于处理server2,server3……这些系统提交上来的校验请求,并返回tokenID。
当客户登录,输入账密后,server2,server3……这些提供正式服务的系统就会先根据账号在它们的缓存中查看是否已经分配了tokenID:
1、如果没有,那么就是初次登录,直接将账密发送给校验服务器server1进行登录校验,这时候server1会通过配置的校验方式(接口或者直接访问数据库用户表)进行校验判断;
2、如果有,那么就是重复登录,直接将账密和tokenID发送给校验服务器server1进行登录校验,这时候server1将通过tokenID从其缓存中获取token,然后校验token和账密信息,返回登录结果;
逻辑判断示意图:

以上只是我的个人理解,仅供参考。
另外,接收到tokenid后,server2及其互信集团通过将其添加到url中实现后续的无账号登录,
浙公网安备 33010602011771号