JWT简介
JWT:Json Web Token,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换
使用起来就是,由服务端根据规范生成一个令牌(token),并且发放给客户端。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。
作用:类似session保持登录状态 的办法,通过token来代表用户身份。
JWT生成
JWT校验
一些问题
token到底生成什么样最好?(规则),每个用户要唯一
token返回给客户端之后,服务端还要保存吗?
校验token时,怎么保证数据并没有被黑客拦截并篡改?(安全)
oken颁发给客户端之后,要不要有过期时间?
多次登录生成的token都是一样的吗?都是可用的吗?
JWT规则详解
一个JWT实际上就是一个字符串,它由三部分组成:头部、载荷与签名 header.payload.signature
一个正常的token为: eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOjYyNywiZXhwIjoxNTcwMDE0ODg1fQ.vPbQh4syxNCzkKXKPSM93LzzLqoJdzPDNeKz8tz9cFM4NzhIOdPrJcH2DG-9-9MCUufCgrAhhGjuo85GKV4bOQ
JWT令牌的优点
jwt基于json,非常方便解析
可以再令牌中自定义丰富的内容,易扩展(payload可以扩展)
通过签名,让JWT防止被篡改,安全性高
资源服务使用JWT可不依赖认证服务即可完成授权
问题解答
a、token到底生成什么样最好?(规则),每个用户要唯一
三部分组成:头部、载荷与签名 header.payload.signature
b、token返回给客户端之后,服务端还要保存吗?
服务端不需要保存
c、校验token时,怎么保证数据并没有被黑客拦截并篡改?(安全)
signature中有私钥来进行签名,可以保证安全性
d、token颁发给客户端之后,要不要有过期时间?
需要设置token过期时间
e、多次登录生成的token都是一样的吗?都是可用的吗?
可以再payload加上时间戳,来保证每次生成的token都不一样,都是可用的