这就是我要做的事-
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);
答案 0 :(得分:0)
不可能使用AssumeRoleWithSAML返回的凭据来调用GetSessionToken。从AWS doc:
由AssumeRoleWithSAML创建的临时安全凭证可以 用于通过以下方式对任何AWS服务进行API调用 例外:您不能调用STS服务的GetFederationToken或 GetSessionToken API操作。