在Cognito中使用授权码授予进行后续API调用。

0

【以下的问题经过翻译处理】 我打算建立一个Web应用程序,并且我正在使用Cognito进行身份验证。我对Cognito不太熟悉,到目前为止一直使用隐式授权流程。据我所知,使用隐式授权时,App客户端会在回调URL中返回嵌入的访问令牌,通常需要提取并将其存储在浏览器的cookie中,以便进行后续的API调用。

现在,当使用授权码授权时,我理解认证后会在回调URL中返回一个代码,稍后将其发送到Cognito,Cognito返回访问令牌和ID令牌。然而,我不清楚在这个过程中如何使用这些令牌进行后续的API调用。

例如,在微服务Web应用程序中,用户在登陆后想要使用服务A或服务B,这些服务有自己的API网关端点,某种程度上,用户需要持久/存储的令牌来使用这些端点。

1 回答
0

【以下的回答经过翻译处理】 嗨,隐式授权的问题本质上是您的回调接收访问令牌作为查询字符串参数。这代表了安全风险,除了测试项目外,应避免在生产工作负载中使用。

使用身份验证授权,您的回调将不会收到用户池生成的访问令牌,而是授权代码。您的应用程序必须将该授权代码用作对 Cognito TOKEN 端点 (https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html) 的 HTTP Post 请求的一部分。

上述 POST 调用的响应将包含如下响应:

{ "access_token":"eyJra1example", "id_token":"eyJra2example", "refresh_token":"eyJj3example", “令牌_type”:“不记名”, “过期_in”:3600 }

从那里,您可以将这些令牌存储在 DynamoDB 加密数据库中.html>),您的应用程序可以在调用 HTTP REST API 网关时在授权标头中将其作为 Bearer 令牌传递。

您的应用程序负责在过期时重新发布新令牌(通过刷新令牌),而 api 网关负责通过 Cognito 授权方。本指南应该可以帮助您完成:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

希望能帮助到你!

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则