Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
JWT与传统Session认证的优缺点:
传统session简便,使用JSSESIONID来验证用户。容易被拦截,在分布式系统中容易出现负载均衡问题,同时用户增多服务器压力大。在多节点部署时,sessionid需要共享。
JWT针对以上问题有优化。
简介:
自包含:
jwt是跨语言的。‘
不需要在服务端保存会话信息。
JWT结构:
1、标头(header)
令牌类型,所使用签名算法。
{
“alt": "HS256"
"typ":"JWT"
}再进行base64编码。
2、有效荷载(payload)
包含申明,关于数据和其他数据的申明。不要放敏感信息。同样是使用base64编码的。
{
"sub": "123455",
"name":”john",
"admin":true
}
3、签名(signature)
使用密钥进行hs256编码。包含了前两部分信息。