python-jose:Python 中的 JOSE 实现 文章目录python-josePython 中的 JOSE 实现python-josePython 中的 JOSE 实现mpdavis/python-jose 是一个在 Python 中实现 JOSE 规范的库目前获得 1,752 个 Star。python-jose 实现了 JOSE 规范的核心组件包括 JSON Web Signature (JWS)、JSON Web Encryption (JWE)、JSON Web Key (JWK) 和 JSON Web Algorithms (JWA)。这些技术组合在一起可以用来对内容进行加密和签名。虽然 JOSE 规范中完整的算法排列组合数量很大但实际应用中大多数项目只会用到其中一小部分。这个项目提供了三种不同的加密后端用户可以根据项目需求和环境条件进行选择。cryptography 后端这是项目推荐的后端方案使用 pyca/cryptography 库完成所有加密操作。如果系统中同时安装了多个后端这个后端会被优先选择使用。安装方式pip install python-jose[cryptography]选择这个后端后系统中仍会遗留 rsa、ecdsa 和 pyasn1 这几个未使用的依赖。建议在生产环境中检查并清理这些不必要的依赖。pycryptodome 后端使用 pycryptodome 库完成所有加密操作是另一个可选的加密后端方案。安装方式pip install python-jose[pycryptodome]安装后 rsa 会作为未使用的依赖保留在系统中。native-python 后端使用 python-rsa 和 python-ecdsa 进行加密操作。这个后端始终会被安装到系统中但如果存在其他后端其他后端会优先被使用。安装方式pip install python-jose这个后端有一个限制它无法处理证书相关的操作。由于 setuptools 的复杂性即使安装时指定了其他后端native-python 后端仍然会被一并安装。因此开发者需要在生产环境中手动移除不必要的依赖保持环境的整洁。安装与使用最推荐的安装方式是使用 cryptography 后端pip install python-jose[cryptography]python-jose 的 API 设计简洁。以下是一个生成和解析 JWT token 的基础示例fromjoseimportjwt# 编码生成 tokentokenjwt.encode({key:value},secret,algorithmHS256)# 解码验证 tokenjwt.decode(token,secret,algorithms[HS256])encode 方法接收 payload、密钥和算法三个参数返回编码后的 JWT 字符串。decode 方法则用于验证和解码 token需要指定允许的算法列表。这两个方法构成了使用这个库的核心流程。这个项目最初基于 PyJWT 的实现发展而来。文档托管在 ReadTheDocs 上包含详细的 API 说明和用法示例。代码覆盖率由 Codecov 持续追踪CI 流程通过 GitHub Actions 运行。对于需要在 Python 项目中进行 JWT 签名、验证或其他 JOSE 相关操作的开发者python-jose 提供了一套功能较为完整的解决方案。需要在 Python 项目中进行 JWT 签名、验证或其他 JOSE 相关操作的开发者python-jose 提供了一套功能较为完整的解决方案。