0

这就是我想要做的-

var role = new AmazonSecurityTokenServiceClient(aws_access_key_id, aws_secret_access_key, aws_session_token, Amazon.RegionEndpoint.USWest2);

role.AssumeRole(new AssumeRoleRequest
{
    DurationSeconds = 3600,
    RoleArn = rolearn,
    RoleSessionName = sessionname
});

GetSessionTokenResponse sessionTokenResponse = role.GetSessionToken(new GetSessionTokenRequest
{
    DurationSeconds = 7200
});

现在我的“角色”是使用我通过 saml 获得的临时凭据创建的。而且似乎由于 GetSessionToken 为您提供了临时凭据,因此需要使用长期凭据创建“角色”。我似乎找不到解决方法。

本质上,我正在尝试使用具有某些权限的假定 IAM 角色创建一个 AmazonS3Client。如果我设法 GetSessionToken,这就是我计划做的事情-

var newcreds = sessionTokenResponse.Credentials;
var sessionCredentials = new SessionAWSCredentials(newcreds.AccessKeyId, newcreds.SecretAccessKey, newcreds.SessionToken);
AmazonS3Client newclient = new AmazonS3Client(sessionCredentials, Amazon.RegionEndpoint.USWest2);
4

1 回答 1

0

无法使用 AssumeRoleWithSAML 返回的凭据调用 GetSessionToken。来自 AWS文档

AssumeRoleWithSAML 创建的临时安全凭证可用于对任何 AWS 服务进行 API 调用,但以下例外:您不能调用 STS 服务的 GetFederationToken 或 GetSessionToken API 操作。

于 2019-03-28T16:45:51.813 回答