当前位置: 首页 > 知识库问答 >
问题:

在Python中对API网关的请求中使用AWS Cognito访问令牌

柯唯
2023-03-14

我已经能够为我的Aws Cognito用户获取访问令牌(使用这个)。但我不知道如何使用它为带有Cognito authorizer的Api网关生成经过身份验证的请求。有人能分享一个示例片段吗?

共有3个答案

鄢开诚
2023-03-14

我的答案假设你有Cognito Authorzer,而不是Lambda Authorzer。创建Cognito授权程序时,在令牌源字段中给出授权令牌的名称。例如,auth_token

要调用授权人访问的API资源,需要当前登录用户的IdToken

在lambda函数的帮助下,您可以通过获取IdTokenAccessToken刷新令牌来组织用户登录。IdToken和AccessToken活不长。您可以创建一个lambda函数,该函数向用户池发送一个刷新令牌,并作为响应返回新的IdToken。在这里阅读更多关于这些东西的信息。

因此,您有了一个新的IdToken,以及Cognito授权人所需的令牌的名称。在我的示例中,它是auth_令牌。

import requests 
import json

CustomHeader = {'auth_token': "very-long-id-token"} 
r = requests.post(
    "https://xxx.execute-api.us-east-1.amazonaws.com/beta/user/function-for-auth-users-only",
    data=json.dumps({"whatever_you_need": "your_value"}),
    headers=CustomHeader) 
print(r.json())
班景龙
2023-03-14

在发出API网关请求时,将从Cognito用户池获得的访问或id令牌放入身份验证头中

倪培
2023-03-14

问题应该出在API网关和Cognito用户池配置中。您可以在标头请求中使用id令牌而不是访问令牌,如果API网关和Cognito用户池有基本配置,它应该可以工作。

如果您更喜欢使用访问令牌,您必须在API网关和Cognito用户池的配置中检查一些细节:Cognito中应该有一个资源服务器,同时应该在API网关的方法请求中与资源服务器一致地定义OAuth作用域。在这个问题中,您可以找到关于这个配置的一个很好的解释:AWS API网关-使用带有Cognito用户池授权器的访问令牌?

我建议你这最后的方式,并使用访问令牌。

关于请求头,只需放置“授权”:您的\u访问\u令牌。当您在API网关中创建了授权者时,请检查是否已在令牌源中添加了“Authorizarion”。

 类似资料:
  • 我遵循以下文件:https://account-d.docusign.com/oauth/token 我正在为回调API尝试以下操作: 等 上面是url调用的回调函数,看起来像这样:https://account-d.docusign.com/oauth/auth?response_type=code 然而,我得到了“坏请求”,请求。查询代码是正确的,我不确定组合。 我错过了什么?

  • 我更倾向于使用Lambda和Java8来设置,但是使用node.js的示例也有助于理解如何实现这一点。

  • 我想获取JWT Access令牌用于Docuse,我尝试使用以下代码获取访问令牌,之后我通过访问令牌创建信封,我得到一个错误 “调用创建信封时出错: { ”错误代码“: ”AUTHORIZATION_INVALID_TOKEN“,”消息“:”提供的访问令牌已过期、已吊销或格式不正确。 我从这个链接DocuSign JWT访问令牌请求以上代码,在用户提到的工作代码,请告诉我我犯了什么错误,注意:我正

  • 客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求: grant_type 必需的。值必须设置为“client_credentials”。 scope 可选的。如3.3节所述的访问请求的范围。 客户端必须如3.2.1所述与授权服务器进行身份验证。 例如,客户端使用传输层安全发起如

  • 客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求: grant_type 必需的。值必须设置为“password”。 username 必需的。资源所有者的用户名。 password 必需的。资源所有者的密码。 scope 可选的。如3.3节所述的访问请求的范围。 如果客户端类

  • 客户端通过使用按附录B“application/x-www-form-urlencoded”格式在HTTP请求实体正文中发送下列UTF-8字符编码的参数向令牌端点发起请求: grant_type 必需的。值必须被设置为“authorization_code”。 code 从授权服务器收到的授权码。 redirect_uri 必需的,若“redirect_uri”参数如4.1.1节所述包含在授权请求