如何验证使用 moto mock cognitoidp 生成的 JWT 令牌

问题描述 投票:0回答:2

我正在尝试在 python 应用程序中测试我的服务器端对 cognito JWT 令牌的处理。我正在使用 Moto 创建一个认知用户池,在池中创建一个用户,对用户进行身份验证,然后取回 JWT。一切正常,直到我想验证 JWT 以便它可以用于访问服务器上的某些内容。

验证 JWT 的正常过程的一部分是从 Cognito 用户池下载公共 JWK 文件,并使用它来验证令牌的签名。似乎没有下载 JWK 文件的 Moto 实现,那么如何验证使用 Moto 生成的令牌?

unit-testing mocking jwt amazon-cognito moto
2个回答
0
投票

Moto 有用于测试代币合法性的测试 - 并参考存储库中的

jwks.json
文件。

这里

   path = "../../moto/cognitoidp/resources/jwks-public.json"

您可以使用此文件验证您的令牌(使用 moto 生成)吗?我还没弄清楚怎么办。我注意到既有这个公共文件(用于验证),也有一个私有文件(我猜是在生成令牌时使用的)。


0
投票

可能有帮助:

使用

requests
获取密钥:

    region = "us-west-2"
    cognito_userpool_id = "your_userpool_id"
    keys_url = f"https://cognito-idp.{region}.amazonaws.com/{cognito_userpool_id}/.well-known/jwks.json"

    response = requests.get(keys_url).json()

    keys_array response["keys"]

如果您的域代码不使用

requests
下载密钥(可能使用 urllib),您可以模拟该请求并返回上述代码的结果

注意:我个人遇到了

Token was not issued for this audience
错误。但这可能与项目有关。

© www.soinside.com 2019 - 2024. All rights reserved.