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是否可信

你可能感兴趣的:(JWT)