是否可以承担与Cognito用户池iam-role1
中Cognito用户cognito-group1
的Cognito组cognito-user1
关联的IAM角色cognito-user-pool1
?
我的配置:
认知用户池cognito-user-pool1
:
cognito-user1
属于cognito-group1
cognito-group1
已分配给iam-role1
。认知身份池cognito-identity-pool1
:
cognito-user-pool1
iam-role1
IAM:
iam-role1
具有访问S3 ReadOnly的策略此代码允许我向Cognito用户池进行身份验证:
AmazonCognitoIdentityProviderClient provider = new AmazonCognitoIdentityProviderClient();
CognitoUserPool userPool = new CognitoUserPool("user-pool-id", "client-id", provider);
CognitoUser user = new CognitoUser("cognito-user1", "client-id", userPool, provider);
InitiateSrpAuthRequest authRequest = new InitiateSrpAuthRequest()
{
Password = "cognito-password1"
};
AuthFlowResponse authResponse = await user.StartWithSrpAuthAsync(authRequest);
然后从链接到认知用户池cognito-identity-pool1
的认知身份池cognito-user-pool1
获取凭据:
CognitoAWSCredentials credentials = user.GetCognitoAWSCredentials("identity-pool-arn", RegionEndpoint.USEast1);
using (var client = new AmazonS3Client(credentials))
...
答案 0 :(得分:0)
通过Cognito用户池cognito-user-pool1
对用户进行身份验证时,id令牌包括cognito组和iam角色:
"cognito:groups": [
"cognito-group1"
],
"cognito:roles": [
"arn:aws:iam::xxx:role/iam-role1"
],
我们需要配置Cognito身份池,以便在验证用户身份后从令牌中选择角色:
我们还需要通过在IAM角色iam-role1
中编辑信任关系来允许Cognito身份池承担此角色:
{
"Version": "2012-10-17",
"Statement": [
...
{
"Effect": "Allow",
"Principal": {
"Federated": "cognito-identity.amazonaws.com"
},
"Action": "sts:AssumeRoleWithWebIdentity"
}
]
}