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

如何将收到的(承载)访问令牌传递给生成的REST客户端,以便调用安全的API网关endpoint

谷梁裕
2023-03-14

我对AWS及其Cognito和API网关服务相当陌生。我在AWS中创建了一个特定于Cognito的用户池和一个特定于AWS的API网关API,其中一些APIendpoint可以通过REST API调用访问。API网关“Authorizer”设置为“Cognito”。之后,我导出了Swagger文档/OpenAPI2。0使用AWS控制台特定的导出函数,并使用Swagger编辑器生成Python REST客户端API。

生成的REST客户端SDK生成了特定于模型的“GET”函数,例如:

# 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”授权器的APIendpoint函数?

我看过很多关于如何通过邮递员或卷发来实现这一点的例子,但这不是我想要的。我想用生成的REST API客户端调用AWS API网关中受“Cognito”保护的APIendpoint。我假设,在调用生成的REST客户端函数之前,必须有一种方法将收到的访问令牌放入HTTP请求调用中的“Authorization”头。

非常感谢您的帮助。

共有1个答案

东郭翰音
2023-03-14

我不确定我是否正确地理解了你,但这可能会对你有所帮助。

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。这只是一个示例。

 类似资料:
  • 我正在尝试调用我已被指示的API: 这需要一个授权头:承载访问令牌。 我有承载访问令牌,并尝试通过邮递员,并通过C#使用WebRequest,没有任何效果。 在Postman中,我将方法设置为GET,将授权设置为No Auth,在Headers选项卡上,我尝试添加一个标题,如下所示: 标头:“授权” 值:“我的令牌” 我也尝试过 标题:“Bearer”值:“mytoken” 也 标头:“授权” 值

  • 我正在尝试使用swagger codegen maven插件(版本3.0.0)生成的ApiClient,从我的Spring Boot应用程序中使用OAuth2安全的REST API。身份验证服务器(keycoat)提供了一个JWT和刷新令牌,但我不知道如何最好地处理bean中的令牌。现在我的豆子看起来像这样: 问题是:获取令牌和处理刷新令牌的最佳方法是什么? 编辑:为了获得令牌,我想使用客户端ID

  • 我正在尝试使用spotipy python库构建一个应用程序来访问spotify api。 我的oauth代码看起来是这样的,除了用正确的auth参数初始化客户端之外,它似乎是有效的。 ... 向用户发送网址。在用户说她/他已经授予权限后:从Web服务器获取身份验证代码并用于生成令牌。 self.auth_token如下所示: 然后我像这样初始化 spotipy 客户端模块: 然后我尝试以下方法:

  • 我有两个站点,一个用户登录并管理他们的帐户的站点和一个没有UI的站点,只不过是一个存储和检索内容的API。这两个站点都使用相同的Owin ASP. Net Idreal 2.0设置。UI站点使用cookie的原因很明显,API站点使用承载令牌。我需要能够使用当前用户身份验证从UI站点调用API方法/url。简而言之,我需要在UI站点中生成一个有效的承载令牌,以便在进行Rest API调用时添加到H

  • 我已经通过使用在线Swagger Codigen为该API生成了一个Python客户端库https://generator.swagger.io/.该API使用承载身份验证: 但是,生成的Python客户端中的类没有字段。 使用生成的客户端库时,如何填充承载访问令牌? codegenendpoint具有和参数——我是否需要以某种方式配置这些参数?

  • 我想使用各种字段,如客户令牌,客户ID等在每个会话中创建的沃森助手v2使用nodejs。 我可以直接在createSession函数中传递它,还是需要创建一个实体或意图,以便它传入Watson Assistant?