Good,True and Beautiful

Good Good Study, Day Day Up

导航

jwt token Example - Python

0 Pre

  1. Install Python3
  2. Install PyCrypto
  3. Install PyJWT

1 token

  1. 由三部分组成 header, payload, sign 并用逗号连接各部分
  2. header和payload用UTF8进行字符集编码
  3. 各部分都由url safe的Base64编码进行字符转换并且去掉末尾的padding用的=(如果存在)
  4. 一般采用 HS256 和 RS256 两种算法, 当然也还有其他的
  5. 一般情况下 header, payload是明文传输,因此不能进行输入敏感信息

2 coding

2.1 HS256

token=jwt.encode({'a':1}, 'key') # 默认 algorithm 为 HS256
print(token) # output: b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhIjoxfQ.Z4rGK-v6a2sWAUQdmALR3aYbXZviLr8j26a9ndx_bM4'
# header: 
# {
#  typ: "JWT",
#  alg: "HS256"
# }
payload=jwt.decode(token,'key') # 从header部分自动解析出 algorithm, payload 并用sign部分进行验证
print(payload) # output: {'a': 1}

2.2 RS256

import jwt
from Crypto.PublicKey import RSA
rsaobj = RSA.generate(1024) # 生成公私钥, 生产位数应该在2048以上
token = jwt.encode({'a':1}, rsaobj.exportKey(), 'RS256') # 用私钥签名, pem 格式
print(token)
payload = jwt.decode(d, rsaobj.publickey().exportKey()) # 用公钥验证, pem 格式
print(payload)

3 chrome tools

JWT Analyzer and Inspector

posted on 2017-04-19 23:59  Simple Love  阅读(577)  评论(0编辑  收藏  举报