SSO
有状态的会话:用户登录后,在server端保存用户信息,用户每次登录后使用用户登录的信息,和server端的信息进行对比校验;
无状态会话:用户登录后,server端不保存用户信息,而是在用户第一次登录的时候生成tocken,下发给用户,用户每次访问server端都要带上tocken,server端对tocken进行校验;生成tocken的时候可以使用私钥,私钥在网络中不传输只有server端有保存,每次用私钥对用户传过来的tocken进行校验;
无状态会话方案:
有状态方案:session共享方案-1:
有状态方案:session共享方案-2:
第一个方案的主要问题在于session共享需要时间,无法保证各个server的session同步,针对这个问题可以将session拿出来统一存放
有状态方案:session共享方案-3:流量定向分发
这个方案的核心就是将用一个用户的访问下发到同一个server,这样就不存在server端session共享的问题,但是缺点是有可能会造成流量倾斜,出现用户的请求都下发到相同的server上
无状态JWT方案:
这个方案的关键是server端的密文不能泄露,具体的做法:
1 通过配置管理服务统一管理密文配置,开发环境和生产环境使用不同的密文,生产环境的配置禁止开发和测试人员拉取;
2 对代码进行统一的检查,定义好规则,禁止在日志中打印密文;