跳转到主要内容

JSON Web Tokens

项目描述

jot 是 [JSON Web Token (JWT)](http://tools.ietf.org/html/draft-jones-json-web-token-07) 规范的 Python 实现(草案)。

它支持通过 [JWS](http://tools.ietf.org/html/draft-jones-json-web-signature-04) 规范进行签名。目前仅支持 HMAC SHA-256/384/512。

它最终将通过 JWE 支持加密,遵循类似的 API。

明文 JWT

明文 JWT 未经签名或加密,仅接受一个与 JSON 兼容的对象作为参数。

>>> from jot import jwt
>>> msg = jwt.encode({'status': 'ready'})
>>> msg
'eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdGF0dXMiOiJyZWFkeSJ9.'
>>> jwt.decode(msg)
{'headers': {u'alg': u'none', u'typ': u'JWT'}, 'valid': True, 'payload':
{u'status': u'ready'}}

签名 JWT(JWS)

编码时,您需要提供表示您期望算法的对象、一个密钥以及可选的用于头部的密钥 ID。

>>> from jot import jwt, jws
>>> msg = jwt.encode({'status': 'ready'}, signer=jws.HmacSha(
bits=256, key='verysecret', key_id='client1'))
>>> msg
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImNsaWVudDEifQ.eyJzdGF0dXM
iOiJyZWFkeSJ9.DcKKQXXUjGP7pape8BgQ3AcQSPH8toWFLY2woIVUZ-w'

解码和验证时,您必须为每个可能的预期算法传递一个签名者对象。这可能只有一个。如果您期望只有一个特定的密钥,可以直接将其传递给签名者对象。

>>> jwt.decode(msg, signers=[jws.HmacSha(bits=256, key='verysecret')])
{'headers': {u'alg': u'HS256', u'typ': u'JWT', u'kid': u'client1'},
'valid': True, 'payload': {u'status': u'ready'}}

如果您期望多个密钥,可以传递一个键 ID 到密钥映射的字典。decode() 将使用 'kid'(键 ID)头部来选择正确的一个。

>>> jwt.decode(msg, signers=[jws.HmacSha(bits=256, keydict={'client1':
'verysecret', 'client2': 'evensecreter'})])
{'headers': {u'alg': u'HS256', u'typ': u'JWT', u'kid': u'client1'},
'valid': True, 'payload': {u'status': u'ready'}}

无效的密钥或在密钥字典中找不到的键 ID 将将 'valid' 属性翻转到 False

>>> jwt.decode(msg, signers=[jws.HmacSha(bits=256, keydict={'client1':
'notverysecret', 'client2': 'evensecreter'})])
{'headers': {u'alg': u'HS256', u'typ': u'JWT', u'kid': u'client1'},
'valid': False, 'payload': {u'status': u'ready'}}
>>> jwt.decode(msg, signers=[jws.HmacSha(bits=256, keydict={'client10':
'verysecret', 'client2': 'evensecreter'})])
{'headers': {u'alg': u'HS256', u'typ': u'JWT', u'kid': u'client1'},
'valid': False, 'payload': {u'status': u'ready'}}

如果 'valid' 为 False,则不应信任头部和有效载荷,但它们提供了一些信息。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

jot-0.2.tar.gz (5.2 kB 查看哈希值)

上传时间 源代码

由以下支持