gpt4 book ai didi

amazon-web-services - 使用AWS STS获取临时凭证:Web身份 token 在哪里?

转载 作者:行者123 更新时间:2023-12-01 22:15:57 28 4
gpt4 key购买 nike

我的用户通过连接到Cognito的微服务登录到我的应用程序(该请求通过API网关代理)

他们获得了 session token 。

登录后,他们需要将一些文件放入S3。

我想使用STS为他们提供临时凭据,但要调用sts.AssumeRoleWithWebIdentity,我需要一个Web身份 token 。

如何获得带有 session token 作为输入的Web身份 token ?

我编写了一个临时的lambda(节点),该Lambda在使用用户名和密码登录后返回STS凭据:

const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
const cognitoidentity = new AWS.CognitoIdentity();
cognitoidentityserviceprovider.initiateAuth(...) //AuthFlow: 'USER_PASSWORD_AUTH'
cognitoidentity.getId(...)
cognitoidentity.getCredentialsForIdentity(...)

在登录和上传文件之间可能需要一段时间,我不希望用户每次都提交用户名/密码。也没有AuthFlow接受 session token 。

我猜想API网关可能返回有用的东西,但我在文档中没有找到任何东西:
https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference

最佳答案

首先进行一些检查:

  • 让经过身份验证的身份验证用户在iam角色下“伪装”,为此,我们使用trust relationships,以便快速使用,您可以重复使用分配给您的cognito身份池的iam角色。
  • 授予该IAM角色access to s3 bucket
  • 一个策略

    完成后:

    再次运行 cognitoidentity.getCredentialsForIdentity(...),它将首先通过sts,因此您不必调用sts假设角色api。如果成功,则响应应具有 AccessKeyIdSecretKeySessionToken。这些是 到期的AWS凭证,可以访问s3 ,一小时后将消失(除非设置)。将它们用作普通 session 身份验证。
    creds = new SessionAWSCredentials(AccessKeyId, SecretKey, SessionToken);
    s3Request = CreateAmazonS3Client(creds);

    关于amazon-web-services - 使用AWS STS获取临时凭证:Web身份 token 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60258712/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com