SSO单点登录
Session 跨域
在控制器中使用自定义代码修改多个域名(规则匹配或者白名单)的 cookie 使用同一个 UUID 达到跨域的效果。

Spring Session 共享
spring-session 技术是 spring 提供的用于处理集群绘画共享的解决方法,spring-session 技术是将用户 session 数据保存到三方存储容器如:mysql , redis 等。一般用于同域名下的多服务器集群 session 共享的问题,不能解决跨域 session 共享问题 ( 即不能解决单点登录的目标 )
Ningx Session 共享
通过 ip_hash 将用户与指定的服务器建立关联,保证用户每次都请求同一个服务器(服务器集群中固定的一台服务器)这样 session 是一直可用的(其他服务器中没有该用户的 session)
Token 机制
传统身份认证
token 身份认证
JSON Web Token ( JWT ) 机制
JWT 数据结构
JWT格式是:header.payload.signature 由3个部分构成,中间由英文点间隔 前后两个部分是必填项,中间的 payload 可以留空
header
数据结构:{"alg":加密算法名称,"typ":"JWT"} alg - 是加密算法定义内容,如:HMAC SHA256 或 RSA typ - 是token 类型,这里固定为 JWT
payload
在 payload 数据块中一般用于记录实体(通常为用户信息)或其他数据的。主要分为三个部分,分别是:已注册信息( registered claims ),公开数据( public claims ),私有数据( private claims )。payload 中常用信息有:iss(发行者),exp(到期时间),sub (主题),aud (受众)等 前面列举的都是已注册信息,公开数据部分一般都会在 JWT 注册表中增加定义,避免和已注册信息冲突,公开数据和私有数据可以由程序员任意定义。 注意:即使 JWT 有签名加密机制,但是 payload 内容都是明文记录,除非记录的是加密数据,否则不排除泄露隐私数据的可能。不推荐在 payload 中记录任何敏感数据。
signature
JWT 执行流程
基于JWT 机制的单点登录
实现
依赖

