一、导学
1. JWT 的特点:
自包含: 在JWT里面可以包含很多信息,可从服务器解析,而不仅仅是一串没有意义的字符串。
密签: 安全签名,防止别人篡改。
可扩展: 因为JWT可以包含有用的信息,所以其具有不俗的扩展性。
二、原理
如图:
三、实现
1. 流程:
访问应用A服务,会跳到认证服务器的登录页面,输入用户名和密码登录后,再访问应用B服务时不需要再登录了。
注1 : 怎么确定应用A和应用B是同一个用户呢? 答:根据同一个浏览器的sessionId相同,也就是应用A和应用B都用一个浏览器时,sessionId相同。
注2 :应用A和应用B可以拿到同一个用户的信息,但是拿到的JWT不同。
2. 代码结构:
说明 :
sso-client1 : 应用1
sso-client2 : 应用2
sso-parent : 顶层父工程(pom格式)
sso-server : 认证服务器
3. 源码地址:
因为涉及代码并不复杂,代码可见笔者的git仓库,在此博客中不再赘述 ↓