如何将接收到的(承载)访问令牌传递给生成的 REST 客户端,以调用安全的 API-Gateway 端点
Posted
技术标签:
【中文标题】如何将接收到的(承载)访问令牌传递给生成的 REST 客户端,以调用安全的 API-Gateway 端点【英文标题】:How to pass received (bearer) access token to generated REST Client in order to invoke secured API-Gateway Endpoint 【发布时间】:2021-05-12 09:11:04 【问题描述】:我对 AWS 及其 Cognito 和 API-Gateway 服务相当陌生。 我在 AWS 中创建了一个特定于 Cognito 的用户池和一个特定于 AWS 的 API-Gateway API,其中一些 API-Endpoints 可以通过 REST API 调用进行访问。 API-Gateway“授权者”设置为“Cognito”。 之后,我使用 AWS-Console 特定的导出功能导出了 Swagger 文档/OpenAPI2.0,并使用 Swagger Editor 生成了 Python REST 客户端 API。
生成的 REST 客户端 SDK 生成特定于模型的“GET”函数,例如。 g.:
# create an instance of the API class
api_instance = swagger_client.DefaultApi()
user_id = 'user_id_example' # str |
try:
api_response = api_instance.user_get(user_id)
pprint(api_response)
except ApiException as e:
print("Exception when calling DefaultApi->user_get: %s\n" % e)
为了从函数调用api_instance.user_get(user_id)
中得到正确的结果
我需要以某种方式将访问令牌传递给该函数。
现在的问题是,如何将访问令牌(在用户登录后成功获得)传递给 Python REST 客户端 API,以调用具有“Cognito”授权方的 API-Endpoint 函数设置好了吗?
我看到了许多示例如何使用 Postman 或 CURL 实现这一点,但这不是我想要的。我想使用生成的 REST API 客户端在 AWS API-Gateway 中调用我的“Cognito”受保护的 API-Endpoint。我认为,在调用生成的 REST 客户端函数之前,必须有一种方法可以将接收到的访问令牌放入 HTTP 请求调用中的“授权”标头中。
非常感谢任何帮助。
【问题讨论】:
对于您的执行流程来说,this 是不是更好的选择? @amitd:感谢您的意见。但这与我的问题不符。重点是利用 AWS 控制台生成的 API-GW 开发工具包。必须有一种简单的方法将访问令牌传递给生成的函数。 【参考方案1】:我不确定我是否正确理解了您,但这可能会对您有所帮助。
import requests
endpoint = ".../api/ip"
data = "ip": "1.1.2.3"
headers = "Authorization": "Bearer MyBearerAuthTokenHere"
print(requests.post(endpoint, data=data, headers=headers).json())
#编辑 如果不是,则不需要将响应解析为 json。这只是一个示例。
【讨论】:
我已经更新了我的问题。希望,现在更容易理解了。以上是关于如何将接收到的(承载)访问令牌传递给生成的 REST 客户端,以调用安全的 API-Gateway 端点的主要内容,如果未能解决你的问题,请参考以下文章
如何在websocket javascript客户端中传递授权承载访问令牌
如何使用 jwt 公钥在 Spring Boot 中验证承载访问令牌