权限中心本次设计采用JWT(Json Web Token)无状态开发标准,用于实现用户的登陆授权
采用JWT的优势在于,通过将用户令牌存放到Header头中,可以减少开销,同时不存在跨域问题
---------------------------------------------JWT详解---------------------------------------
1.关于JWT令牌的组成结构
JWT的Token令牌由三部分组成,分别为标头(Header)、有效荷载(Payload)和签名(Signature)、在传输时,会使用Base64进行加密编码,使用 . 进行连接
- Header:存储算法和令牌类型,如下
{
"alg":"HS256", //签名使用的算法
"typ":"JWT" //表示令牌的类型
}
- Payload:储存一些字段信息
{
//JWT提供了7个默认字段:iss发行人; exp到期时间; sub主题; aud用户; nbf在此之前不可用; iat发布时间; jti用于标识JWT
"sub" : "header01", //一般我们只会使用sub字段,然后添加上我们自定义的字段
"name" : "user01",
"role" : "admin"
}
- Signature:签名,本质就是对上面两个进行二次加密并且储存的过程(secret是一个密钥 )
HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)
2. JWT的几种类型
- nonsecure JWT:未经过签名,不安全的JWT
- JWS:经过签名的JWT
- JWE:payload部分经过加密的JWT
3.JWT开发标准在java中的使用
------------未完待续-------------