跳转到主要内容

JWT令牌和Zope组件架构(ZCA)的包装器。

项目描述

https://github.com/gocept/gocept.webtoken/workflows/tests/badge.svg https://coveralls.io/repos/github/gocept/gocept.webtoken/badge.svg

此库帮助您使用Zope组件架构(ZCA)与JWT令牌。

此包与Python 2.7、3.6到3.8版本的Python兼容。

版权所有(C)2015-2020 gocept gmbh & co kg

保留所有权利。

本软件受Zope公共许可证第2.1版(ZPL)的条款约束。应随本分发提供ZPL副本。本软件“按原样”提供,并放弃所有明示或暗示的保证,包括但不限于标题保证、适销性保证、侵权保证以及特定用途适用性保证。

安装

此包需要cryptography,需要一些安装注意。请参阅其安装文档以获取更多信息。

用法

CryptographicKey 工具

gocept.webtoken 使用类gocept.webtoken.CryptographicKeys的全局工具,为不同目的提供加密密钥。它从磁盘加载一组公钥和私钥。它接受密钥文件的文件系统路径和密钥名称列表

>>> import gocept.webtoken
>>> import pkg_resources
>>> path_to_keys = pkg_resources.resource_filename(
...     'gocept.webtoken', 'testing/keys')
>>> keys = gocept.webtoken.CryptographicKeys(
...     path_to_keys, ['key1'])

对于每个名称,必须在keys_dir内部存在具有相同名称的私钥文件和一个公钥文件(具有.pub后缀)。

该实用程序需要在ZCA中进行注册,无论是通过zcml文件还是通过

>>> import zope.component
>>> zope.component.provideUtility(keys)

创建令牌

使用create_web_token 函数创建带有签名的Web令牌。您需要注册在CryptographycKey实用程序中的私钥名称。它通过其名称和后缀-private进行引用

>>> expires_in = 300  # The token is valid for 300 seconds
>>> payload = {'your': 'data'}
>>> result = gocept.webtoken.create_web_token(
...     'key1-private', 'issuer', 'subject', expires_in, payload)
>>> sorted(result.keys())
['data', 'token']

令牌位于token键下,而令牌中编码的数据位于data键下。

创建Bearer授权头

您可以从由create_web_token返回的token_dict或直接从令牌创建Bearer授权头

>>> gocept.webtoken.create_authorization_header(b'<TOKEN>')
('Authorization', 'Bearer <TOKEN>')

从Bearer授权头中提取令牌

从包含您请求的头的字典或HTTP授权头的值中提取令牌

>>> request_headers = dict(Authorization='Bearer <TOKEN>')
>>> b'<TOKEN>' == gocept.webtoken.extract_token(request_headers)
True

解码令牌

使用decode_web_token 函数解码带有签名的Web令牌。您需要注册在CryptographycKey实用程序中的公钥名称。它通过其名称和后缀-public进行引用

>>> result = gocept.webtoken.decode_web_token(
...     result['token'], 'key1-public', 'subject')

请注意,主题必须与创建令牌时给出的主题匹配。

结果包含令牌中编码的所有数据。您可以在data键下找到有效载荷。

>>> {'your': 'data'} == result['data']
True

gocept.webtoken

4.0 (2023-08-21)

  • 停止支持Python 2.7,3.5,3.6。

  • 添加对Python 3.9,3.10,3.11的支持。

3.1.post1 (2020-04-08)

  • 从setup.py中删除错误的python_requires

3.1 (2020-04-08)

  • 迁移到Github。

  • 使用Python 3.8和PyPy3进行测试。

  • 停止使用Python 3.5进行测试。

3.0 (2018-11-14)

  • 将许可证从ZPL更改为MIT。

  • 添加对Python 3.7的支持。

  • 停止支持Python 3.4。

  • 将主题检查改为可选,因为某些系统(如Keycloak)使用随机的uuid作为主题,而解码器不知道该主题。

  • 添加必需的audience参数,用于解码由Keycloak生成的令牌。

2.0 (2018-01-08)

  • 停止支持Python 3.3,但添加对3.6的支持。

  • 通过不再使用绝对路径,使setup.py与较新的setuptools版本兼容。

1.2.1 (2015-10-08)

  • 修复extract_token以接受任何从collections.Mapping派生的对象。

1.2 (2015-10-08)

  • 添加了创建Bearer授权头和从中提取令牌的辅助函数。

  • 正式支持Python 3.5。

1.1 (2015-10-01)

  • 缩短了CryptographicKeyscreate_web_tokendecode_web_token的导入,现在可以直接从gocept.webtoken导入。

  • 添加了文档。

1.0 (2015-10-01)

  • 支持Python 3.3和3.4。

  • 初始版本,从内部使用的包中提取。

项目详情


下载文件

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

源代码分发

gocept.webtoken-4.0.tar.gz (16.8 kB 查看哈希值)

上传时间 源代码

构建分发

gocept.webtoken-4.0-py2.py3-none-any.whl (17.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持