JWT

简介

JWT(json web token)是一种基于json的,在网络上声明某种主张的令牌(token)。JWT定义了一种紧凑且自包含的方式,用于作为JSON对象在各方之间安全地传输信息。一般使用对称加密(HMAC算法)或非对称加密(RSA)进行签名。

结构

JWT一般包含三个部分: 头部信息(Header),消息体(Payload), 签名(Signature)

头信息 Header

头信息由两部分组成: alg 和typ
"{'alg': 'HS256', 'typ': 'jwt'}"

alg 指定了加密方式,HMAC-SHA256或者RSA
typ 指定了类型,是否为jwt

消息体 Payload

消息体包含了jwt的意图,可以包含多个字段
消息体一般会进行base64编码
"{'mobile_number': '17300000000', 'name': 'whj'}"

签名 Signature

对密钥和对header与payload组成的字符串进行签名

key = 'secret_key'
unsign_token = Base64.encode64(header) + '.' + Base64.encode64(payload)
signature = HMAC-SHA256(key, unsign_token)

总体组成

token = Base64.encode64(header) + '.' + Base64.encode64(payload) + '.' + Base64.encode64(signature) 

JWT常常被用作保护服务端的资源(resource),客户端通常将JWT通过HTTP的Authorization header发送给服务端,服务端使用自己保存的key计算、验证签名以判断该JWT是否可信

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容