如何从使用临时saml凭证创建的AmazonSecurityTokenServiceClient中获取GetSessionToken?

时间:2019-03-21 18:53:31

标签: amazon-web-services amazon-s3 amazon-iam aws-sts

这就是我要做的事-

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);

1 个答案:

答案 0 :(得分:0)

不可能使用AssumeRoleWithSAML返回的凭据来调用GetSessionToken。从AWS doc

  

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