JSON Web Key 高级获取存储
项目描述
贾瓦斯
Python JSON Web Key 高级获取存储
JWT、JWS、JWK简介
这个 Python 模块提供 JSON Web Token 解码和验证。JWT 的有效性基于 JSON Web 签名 (JWS)。使用相应的 JSON Web 密钥 (JWK) 验证签名。许多身份提供商发布 JSON Web 密钥以在 Internet 上将其签名验证为 JSON 文档(这些称为 JWKS)。一个 JWT 可能包含多个声明(请参阅RFC 7519)。jwkaas 将根据当前时间检查exp和nbf声明。aud和iss声明将根据初始化时是否指定此信息进行验证(请参阅下面的用法)
jwkaas 简介
Python 模块 jwkaas 提供了验证 JWT 并对其进行解码以从 JWT 获取信息的功能。它包括获取和存储验证签名所需的 JWKS。
用法
该功能由 JWKaas 类提供。在初始化时,必须指定预期的受众和发行者。仅当值与相应的令牌声明aud和iss匹配时,才会接受 JWT 。JWKS 可以由可以下载 JWKS json 的 url 指定,和/或由包含 JWKS json 的文件指定。如果两个源都包含具有相同密钥 ID (kid) 的密钥,则 url 中的密钥将位于文件中的密钥之前。初始化示例:
my_jwkaas = JWKaas('https://my.audience'",
'https://my.iam.server/issueing/the/token',
jwks_url='https://my.iam.server/well-known/keys.jwks')
验证和解码 JWT 由 JWKaas.get_token_info 完成,如下所示:
token_info = my_jwkaas.get_token_info(token)
if token_info is not None:
logging.info("Token info: %s", token_info)
else:
logging.info("Token is invalid")
将 jwkaas 与用于 Python 的 Connexion OpenAPI First 框架一起使用
JWKaas 还提供 JWKaas.get_connexion_token_info。这将返回使用Connexion使用的范围键扩展的 token_info 。范围的值将从scp声明中复制,这是 Azure AD 用来指定范围的声明。其他 IAM 服务器可能会使用另一个声明来指定范围,这些当前尚未实现。
致谢
jwkaas 是围绕PyJWT构建的,它是RFC 7519的 Python 实现。
测试
运行```python -m 鼻子
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。