一、什么是单点登录?
单点登录是一种统一认证和授权机制,指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的系统,不需要重新登录验证。
单点登录一般用于互相授信的系统,实现单一位置登录,其他信任的应用直接免登录的方式,在多个应用系统中,只需要登录一次,就可以访问其他互相信任的应用系统。
随着时代的演进,大型web系统早已从单体应用架构发展为如今的多系统分布式应用群。但无论系统内部多么复杂,对用户而言,都是一个统一的整体,访问web系统的整个应用群要和访问单个系统一样,登录/注销只要一次就够了,不可能让一个用户在每个业务系统上都进行一次登录验证操作,这时就需要独立出一个单独的认证系统,它就是单点登录系统。
二、单点登录的优点
1.方便用户使用。用户不需要多次登录系统,不需要记住多个密码,方便用户操作。
2.提高开发效率。单点登录为开发人员提供类一个通用的验证框架。
3.简化管理。如果在应用程序中加入了单点登录的协议,管理用户账户的负担就会减轻。
三、JWT 机制
JWT(JSON Web Token)它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证JWTToken的正确性,只要正确就通过验证。
数据结构:
JWT包含三个部分:Header头部,Payload负载和Signature签名。三个部门用“.”分割。校验也是JWT内部自己实现的 ,并且可以将你存储时候的信息从token中取出来无须查库。
JWT执行流程:
JWT的请求流程也特别简单,首先使用账号登录获取Token,然后后面的各种请求,都带上这个Token即可。具体流程如下:
-
客户端发起登录请求,传入账号密码;
-
服务端使用私钥创建一个Token;
-
服务器返回Token给客户端;
-
客户端向服务端发送请求,在请求头中携带Token;
-
服务器验证该Token;
-
返回结果。
四、具体实现参考
1、新建project项目
2、新建sso的maven服务项目1
3、添加jwt相关配置信息、jwt配置类、jwt验证util类
4、新建登录测试的controll、service的login方法
5、新建sso-project的maven服务项目2,验证token
6、新增服务2过滤器
7、新增服务2测试testA方法
五、验证方式
1、http://localhost:8080/login获取token
2、http://localhost:8081/testA?token=xxxxx验证服务跳转
六、参考代码
参考以上传资源