python - 使用 AWS ALB/Cognito 进行身份验证

标签 python amazon-web-services cookies amazon-cognito aws-application-load-balancer

我正在尝试通过 Python 的 ALB 进行授权。据我了解,ALB 在让您访问该网站之前会查找“AWSELBAuthSessionCookie”cookie。我自己登录应用程序时(使用用户名和密码)也看到了这些 cookie。问题是,如果我想从 python 程序向网站/api 验证自己的身份,我该如何获取这些 cookie 的值。以前有人这样做过吗?

最佳答案

我遇到了完全相同的问题,只能使用 API 网关使其工作,因为它们允许在请求的授权 header 中通过 JWT 进行授权。这可以在 Python 中轻松完成,例如

import boto3
import requests

client = boto3.client(
    "cognito-idp", 
    region_name="<aws region of the cognito app client>"
)

response = client.initiate_auth(
    ClientId="<cognito app client ID>",
    AuthFlow="USER_PASSWORD_AUTH",
    AuthParameters={
        "USERNAME": "<username>",
        "PASSWORD": "<password>",
        "SECRET_HASH": "<secret hash>",
    },
)

token = response["AuthenticationResult"]["AccessToken"]

headers = {"Authorization": f"Bearer {token}"}
requests.get("<api gateway url>", headers=headers)

但是,我还需要允许通过 Cognito UI 进行授权。因此,我不得不同时使用 ALB 和 API 网关。

虽然这解决了使我的应用程序可从浏览器(即人类)和代码(即机器)使用的问题,但它引入了许多我必须使用的额外 AWS 组件。而且,作为不利的副作用,API 的请求负载限制为 10MB,无法增加。这对我来说是另一个问题。

我知道已经过去一年了,但如果您已经解决了这个问题,请随时分享您的解决方案。

关于python - 使用 AWS ALB/Cognito 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66386678/

相关文章:

python - 如何更改 Artist_axis 刻度标签的位置?

python - 将列表的值更改为函数参数

node.js - API Gateway 二进制支持 .wav 文件

amazon-web-services - CloudFormation lambda函数给出本地代码

c# - 有没有办法清除 CookieContainer?

python - 使用 Python 和 Gtk+ 3 导入错误

python - QSplitter Handlebars

amazon-web-services - 添加带有 Internet 网关的公共(public)子网和带有 NAT 的私有(private)子网时,RDS 公共(public)访问丢失

javascript - 将 PHP 数据作为 cookie 返回给前端

cookies - 使用 canopy 访问 httponly cookie