兑换cognito open id token时rolesessioname应该设置成什么?

what should rolesessioname be set to when redeeming cognito open id token?

我正在尝试使用 cognito.getOpenIdTokenForDeveloperIdentitysts.assumeRoleWithWebIdentity

将来自 cognito 的开放 ID 令牌交换为有效的 aws 令牌

对于 sts.assumeRoleWithWebIdentity 调用,我应该将 属性 所需的 RoleSessionName 设置为什么?我在打开 id 调用期间没有在任何地方设置它。

这只是一个任意字符串吗?有最佳实践吗?

RoleSessionName 参数用于区分唯一的 "end-user sessions" 或可能比角色凭据允许的最长时间更长的单个会话的延续。

A​​WS 账户、凭证和 RoleSessionName 的组合用于唯一标识单个 "end-user session"。在 2 个不同的 AWS 账户之间使用相同的 RoleSessionName 是安全的,不会交叉匹配会话。

由于会话不会在 AWS 账户之间交叉匹配,因此始终使用常量值可能是安全的。但是,如果同一用户同时使用您的应用程序两次,可能会出现意想不到的副作用。

随机生成的字符串(如 GUID)是一个很好的起点,在许多情况下就足够了。

但是,在某些情况下您需要重新使用 RoleSessionName。例如,假设您正在使用 S3 分段上传上传一个非常大的文件。分段上传要求所有部分都由同一 "owner" 上传。 AWS 账户甚至凭证(IAM 用户)都不是 "owner enough"。他们还必须使用相同的 RoleSessionName。

当您 "assume role" 时,您的凭据有一个到期日期。如果您的上传时间超过该到期日期,您将需要再次 "assume role" 并重新使用 RoleSessionName。这告诉 AWS 以下上传与之前的上传属于同一会话。