JWT

JWT(JSON Web Token)是一个开放的行业标准,它定义了一种简洁的,自包含的协议格式,用于在通信双方传递json对象,传递的信息经过数字签名可以被验证和信任。JWT可以使用HMAC算法或使用RSA的公钥/私钥对来签名,防止被篡改

JWT令牌的优点

1.JWT基于json,非常方便解析

2.可以在令牌中自定义丰富的内容,易于扩展

3.通过非对称加密算法及数字签名技术,JWT防止篡改,安全性高

JWT令牌结构:

JWT令牌由Header、PAyload、Signature三部分组成,每部分中间使用点(.)分隔,比如

xxxxx.yyyyy.zzzzz

1.Header

头部包括令牌的类型(即JWT)及使用的哈希算法(如HMAC、HA256、RSA)

{“alg”:"HS256","typ":"JWT"}

2.Payload

负载,内容也是一个json对象,他是存放有效信息的地方,它可以存放jwt提供的现成字段

例如:iss(签发者),exp(过期时间戳),sub(面向的用户)

{"sub","1234567890","name":"456","admin":"true"}

3.Signture

第三部分是签名,此部分用于防止jwt内容被篡改。这个部分使用base64url将前两部分进行编码,编码后使用点(.)连接组成字符串,最后使用header中声明签名算法进行签名

一个例子:

HMACSHA256(

base64UrlEncode(header)+ "."+base64UrlEncode(payload)+"."+secret)

base64UrlEncode(header):JWT第一部分

base64UrlEncode(payload):JWT第二部分

secret:签名所使用的私钥

JWT三部分只有第三部分是加密的,通过数字签名机制,我们既可以保证数据完整性,也可以对数据来源进行身份验证。

什么是签名?

签名是数字签名,发送方将消息原文使用摘要算法生成摘要,再使用私钥对摘要进行加密,生成数字签名。

传输是数字签名,发送方将信息原文使用摘要算法生成摘要,再用私钥对摘要进行加密,生成数字签名

1.发送方使用私钥对内容进行数字签名

2.将内容附带数字签名发送给对方

3.对方收到内容和数字签名,使用公钥进行验签(相当于解密过程的过程),如果发现不一致则说明传输过程被篡改

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容