【问题标题】:How can I test AWS Cognito protected APIs in Python?如何在 Python 中测试受 AWS Cognito 保护的 API?
【发布时间】:2022-01-26 21:49:48
【问题描述】:

我正在尝试测试一些受 Cognito 保护的 AWS API。我找到了有关如何获取 Json 令牌的第一部分,但我不知道如何正确使用令牌,以便在 API 上进行身份验证。

这是我的代码:

import boto3 as boto3;
import requests

username='test@gmail.com'
password='test1234567'

client = boto3.client('cognito-idp')
response =  client.initiate_auth(
    AuthFlow='USER_PASSWORD_AUTH',
    AuthParameters={
        "USERNAME": username,
        "PASSWORD": password,
    },
    ClientId='12121212121212',
)
token = response['AuthenticationResult']['AccessToken']

#print("Log in success")
#print("Access token:", response['AuthenticationResult']['AccessToken'])
#print("ID token:", response['AuthenticationResult']['IdToken'])


url = 'https://XXXXXXXX.execute-api.eu-west-1.amazonaws.com/Prod/incidents'
#print('url:', url)

#response = requests.get(url, headers={'authorization': token })
#print('GET:', response.status_code)

head = {'Authorization': token}
response = requests.get(url, headers=head)

print(response.content)

我收到以下错误消息:

b'{"message":"Authorization header requires \'Credential\' parameter. Authorization header requires \'Signature\' parameter. Authorization header requires \'SignedHeaders\' parameter. Authorization header requires existence of either a \'X-Amz-Date\' or a \'Date\' header. Authorization=

【问题讨论】:

    标签: python amazon-web-services aws-api-gateway amazon-cognito


    【解决方案1】:

    好的,所以我发现了问题,现在工作正常,有 2 个问题:

    • 端点错误 - AWS 未发送正确的错误消息 (!)
    • 请求必须与 response['AuthenticationResult']['IdToken'] 一起发送

    【讨论】:

      【解决方案2】:
      1. 请确保您在 API 网关中选择了 Cognito 或 IAM。从错误消息看来,您选择了 IAM 来保护 API。
      2. 检查您为 Cognito Authorizer 配置的 Authorization 标头名称。您需要在传递 Cognito 令牌时使用相同的标头名称。
      3. 如果您在 API Gateway 端配置了 OAuth 范围,则必须使用访问令牌。并且没有配置范围,那么您可以使用 ID 令牌进行授权。

      也就是说,您可以从 Postman 应用程序中尝试进行测试。

      【讨论】:

        猜你喜欢
        • 2016-09-22
        • 2020-04-18
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 2020-05-09
        • 2020-02-10
        • 2011-08-21
        相关资源
        最近更新 更多