1.什么是JWT
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
2.相比与传统的session有什么优点
Session: 每个用户经过应用认证之后,应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。
JWT:它是基于token的鉴权机制,不需要在服务端保留用户的信息,就不用考虑用户在哪一台服务器登录,可以实现单点登录,增强了扩展性。
3.JWT组成
1.header:要对其进行base64加密。
2.payload:存放有效信息的部分。
公共的声明可以添加任何的信息,一般添加用户的相关信息或其他业务需要的必要信息.但不建议添加敏感信息。
私有声明是提供者和使用者所共同定义的声明,不能存放敏感信息。
3.signature:最重要的令牌绝对不能告诉别人,要不然直接gg,非常关键。