【问题标题】:How to get AWS AccessToken from Cognito, using Dev Authenticated Identities如何使用 Dev Authenticated Identities 从 Cognito 获取 AWS AccessToken
【发布时间】:2020-01-14 05:43:25
【问题描述】:

我正在使用带有Developer Authenticated Identities Authflow Setup 的 Cognito 身份池 - 选择此身份验证流程是因为我们出于某些业务原因无法使用 Cognito 用户池。因此,我自己使用带有身份验证端点的 API 网关实现了一个用户身份提供程序服务,该端点会触发一个 Lambda 函数。

所以我通过运行生成了一个临时的 AccessKeySecretKey cognitoidentity.getOpenIdTokenForDeveloperIdentity 和之后的 cognitoidentity.getCredentialsForIdentity 并获得了临时 AWS 凭证(临时 AccessKeySecretKey)。

现在我想生成一个AccessToken,以便在我使用 IAM 授权的 AWS API Gateway 上验证我的请求(因此它需要一个 AccessToken 来授权请求​​)。

我的问题是 - 如何生成 AccessToken

【问题讨论】:

    标签: aws-lambda amazon-cognito aws-sts


    【解决方案1】:

    我认为您不需要生成 AccessToken。看看the API Gateway IAM Auth docs

    注意:要手动验证使用其他工具或环境发送到 API Gateway 的请求,您必须使用 Signature Version 4 签名流程。有关详细信息,请参阅 API Gateway REST API 参考中的Signing Requests

    点击上面的链接,你会看到:

    Amazon API Gateway 要求您通过签署请求来验证您发送的每个请求。要签署请求,您需要计算数字签名 [...]

    也看看这个问题,这是关于做上面的签名:Integrating an ID Pool with API Gateway

    我自己没有这样做,但如果您必须从前端手动执行上述操作,我会感到非常惊讶。应该有一个客户端可以用来为您处理签名,就像 Postman 在上面的 AWS 文档中的示例中所做的那样。 IE。您向客户端提供 IAM 凭证,客户端会在您要求时发出 API 请求,使用您提供的 IAM 凭证自动处理签名。例如,AWS Amplify seems to be able to do this for you

    【讨论】:

    • 嘿,首先感谢您的回复,我问了这个问题,因为如果您查看 AmplifyJS 框架身份验证步骤,您会看到它返回 AccessToken 和 IDToken(请参阅我的问题所附的图片)。获得 AccessToken 后,您可以在附加了 AWS_IAM 身份验证的 API 网关上对请求进行身份验证。当然,将 Authorization 标头中的 AccessToken 作为bearer ${AccessToken} 传递比对请求进行签名更简单。
    • 我不确定这对您是否准确,因为您使用的是 dev-auth。我会假设文档中的 AccessToken 来自用户池或与 ID 池集成的第 3 方身份验证提供程序。因为(如果我错了,请纠正我)您没有使用其中任何一个,我希望您需要使用您的 IAM 凭证(AccessKey 和 SecretKey)访问 API Gateway,而不是 AccessToken
    猜你喜欢
    • 2020-05-18
    • 2020-07-13
    • 2018-01-15
    • 2021-11-19
    • 2020-12-01
    • 2018-09-18
    • 2019-12-23
    • 2017-05-27
    • 2016-03-06
    相关资源
    最近更新 更多