角色信任和权限 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

角色信任和权限

这些角色的区别在于其信任关系。下面是未经身份验证角色的示例信任策略:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } } } ] }

此策略向来自 cognito-identity.amazonaws.com(OpenID Connect 令牌的发布者)的联合身份用户授予代入该角色的权限。此外,策略限制令牌的 aud (在此示例中为身份池 ID) 匹配身份池。最后,策略指定的由 Amazon Cognito GetOpenIdToken API 操作发布的令牌的多值 amr 声明的数组成员之一具有值 unauthenticated

当 Amazon Cognito 创建令牌时,它将令牌的 amr 设置为 unauthenticatedauthenticated。如果 amrauthenticated,则令牌包括身份验证期间使用的所有提供商。这意味着,您可以创建一个角色,它只信任通过 Facebook 登录的用户,这只需将 amr 条件更改为如下所示即可:

"ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "graph.facebook.com" }

在更改角色的信任关系或尝试跨身份池使用角色时,请务必谨慎。如果您未正确配置角色来信任身份池,则 STS 结果中会出现类似以下内容的异常:

AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity

如果您看到此消息,请仔细检查身份池和身份验证类型是否具有正确的角色。