【问题标题】:Python and Flask for authentication with Amazon Cognito用于使用 Amazon Cognito 进行身份验证的 Python 和 Flask
【发布时间】:2018-11-20 21:52:48
【问题描述】:

这是最终目标:使用 Amazon Cognito 用户池编写支持登录/身份验证的 Flask 应用程序。这两个框架对我来说都是相当新的。

我使用保证无服务器身份验证从 Cognito 获取 JWT 访问令牌。但是,我不确定如何或需要什么来验证令牌是否有效。 我已经阅读了本网站上的一些答案以及以下链接:

https://aws.amazon.com/premiumsupport/knowledge-center/decode-verify-cognito-json-token/ https://aws.amazon.com/blogs/mobile/integrating-amazon-cognito-user-pools-with-api-gateway/

第一个链接提示:

要验证 Amazon Cognito JWT 的签名,首先搜索密钥 ID 与 JWT 的密钥 ID 匹配的密钥。然后,使用库来解码令牌并验证签名。

我从提供的链接中检索了公钥的 JWK,但我不确定如何使用它。我可以使用哪些库来解码令牌,记住我在 Python 环境中工作?我查看了flask-jwt-extended,但提供的类和方法似乎并不能解决我的确切问题。我应该重写 flask-jwt-extended 中的类和函数以获得预期的效果吗?

或者如果我以错误的方式处理这个问题,有什么建议或建议吗?

【问题讨论】:

    标签: python amazon-web-services flask jwt aws-cognito


    【解决方案1】:

    我最终主要解决了这个问题,但如果其他人好奇,我使用 PyJWT 库解码 Cognito 返回的 JWT 令牌。对 flask-jwt-extended 进行了相当深入的研究,但提供的方法并未涵盖我正在寻找的功能。

    jwt.algorithms.RSAAlgorithm.from_jwk 可用于解码 JWK 以获取其公钥

    【讨论】:

    • 我被困在一个更基本的问题上——你是如何在你的应用程序中检索 JWT 的?我尝试使用来自 flask_jwt 的 jwt_required() 来装饰我的处理程序,但是在从 cognito 到我的登陆 URL 的重定向上出现错误“flask_jwt.JWTError:需要授权。请求不包含访问令牌”。那种听起来像是在 Cognito 方面可能配置错误的东西,但我对这个话题不够了解,我不确定。
    猜你喜欢
    • 2019-06-29
    • 2020-08-15
    • 2017-01-13
    • 2019-06-19
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多