单点登录分布式 JWT 加密算法
JWT(Json web token)是通过HMAC算法或者RSA的公钥密钥签名生成携带用户信息的token,将token存放在客户端中(可以存储在cookie,localstorage和sessionStorage中),客户端每次发送请求,都携带token,服务端通过解密来获取用户信息。
官方网站 https://jwt.io/ 案例 单点登录SSO
优点:
-
token包含用户的基本信息,避免再次查库;
-
token存储在客户端,不占用服务器资源。
缺点:
token经过base64编码,可以被解码,因此不能包含用户敏感信息(用户权限、密码等);服务器无存储,因此不能做登录失效处理,除非更改服务器密钥。
- 头部:主要是描述签名算法;
- 负载:主要是描述加密对象的信息,主要描述是加密对象的信息,如用户的id等,也可以加些规范里面的东西,如iss 签发者,exp 过期时间,sub 面向的用户;
- 签名:主要是把前面两部分进行加密,防⽌别⼈拿到token进行base解密后篡改token。
注意
- 防止加密 jwt token 被盗用篡改(保护密钥)
- 负载禁止存放非常敏感的数据内容
- 尽量采用非对称加密算法
推荐指数:
真诚点赞 诚不我欺~