SSO单点登录,jwt生成token的认识
什么叫做单点登录
把一个总的系统拆分成无数个小的子系统,即一个系统登录,访问其他系统都无需登录。
单点登录的实现原理
登录成功后返回token令牌,前端将token令牌放到head请求头里面,每次访问带上token。
TOKEN生成的方式之JWT(JSON WEB TOKEN)
1.首先引入 jwt所依赖的资源(基于spingboot)
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.10.3</version>
</dependency>
2.生成 jwt的三点明确, head,payload , sign。其中 head 可以不写
Calendar instance = Calendar.getInstance();
instance.add(Calendar.DAY_OF_WEEK,7);
String token = JWT.create()
//设置token的失效时间
.withExpiresAt(instance.getTime())
//设置token的payload
.withClaim("name", "xiaom")
.withClaim("age", "123")
//设置 sign 注意这里的 12!e2 为密钥,验证token的时候需要
.sign(Algorithm.HMAC256("12!e2"));
3.验证token
// 注意这里验证token的时候需要 生成时候的密钥。建议 生成token的时候 ,存入数据库里面
JWTVerifier build = JWT.require(Algorithm.HMAC256("12!e2")).build();
// 获取单个你存入payload的内容
Claim value = verify.getClaim("name");
// 获取你全部存入payload的内容
Map<String, Claim> claims = verify.getClaims();