使用 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 调用并不意味着在客户端用于身份验证目的。它只是为了在服务器端为已通过身份验证的用户提供角色。
如果我的用户向 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 调用并不意味着在客户端用于身份验证目的。它只是为了在服务器端为已通过身份验证的用户提供角色。