使用 STS 和 API 网关的经过身份验证的用户

Authenticated users with STS and API Gateway

如果我的用户向 STS 发送请求以请求凭据:

AWS.config.credentials = new AWS.WebIdentityCredentials({
  RoleArn: 'arn:aws:iam::{id}:role/{role}',
  WebIdentityToken: idToken,
  RoleSessionName: VALUE
});

稍后,当用户向私有 API 网关端点发送请求时,通过使用 RoleSessionName 我可以知道发出请求的人是谁。但是我们如何才能避免其他用户使用相同的 RoleSessionName 来冒用他的身份呢?

使用 STS 和 IAM 角色对用户进行身份验证的最佳方式是什么?

RoleSessionName 只是假定会话的标识符。它不应该用作区分调用者的机制。

在这种情况下,假定的角色是 "effective" 校长。如果您希望 API 根据用户的不同表现不同,请为每个用户使用独特的角色。

RoleSessionName 是区分每个用户的方法。不能为每个用户创建单独的角色,因为每个帐户最多只能有 1000 个角色。我认为此 API 调用并不意味着在客户端用于身份验证目的。它只是为了在服务器端为已通过身份验证的用户提供角色。