AWS Google登录-查询Dynamo数据库访问被拒绝错误



我有一个使用Google SignIn的iOS应用程序,我想使用Google Token ID验证AWS。

我在IAM中创建了角色,在Cognito中创建了身份池。当我试图在Dynamo中查询表时。我得到

'Not authorized to perform sts:AssumeRoleWithWebIdentity'

我有值得信赖的政策有我的谷歌客户端ID,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
      "Federated": "accounts.google.com"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
      "StringEquals": {
      "accounts.google.com:aud": #mygoogleclientid#
    }
  }
}
]}

错误

  Error: Error Domain=com.amazonaws.AWSSTSErrorDomain Code=0 "(null)" UserInfo=
  {
     Type=Sender, 
     Message=Not authorized to perform sts:AssumeRoleWithWebIdentity,
     Code=AccessDenied, __text=(
     "n    ",
     "n    ",
     "n    ",
     "n  "
  )}

我想了解我为什么会出现这个错误,以及解决这个问题的方法。

我建议您尝试增强的Authflow,这样Cognito将为您调用sts:AsseumeRoleWithWebIdentity。

此处引用身份验证流文档:http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/

以下是Cognito的基本身份验证流程:GetId->GetOpenIdToken(Cognito的Open Id令牌)->AssumeRoleWithWebIdentity(传递Cognito开放Id令牌)。

若您在AWS控制台中创建身份池,则默认策略设置为使用增强流或基本流。您只需要为DynamoDB访问和您想要集成的其他服务添加一个策略。

相关内容

  • 没有找到相关文章

最新更新