0

Google サインインを使用する iOS アプリケーションがあり、Google トークン ID を使用して AWS を認証したいと考えています。

Cognito の IAM と ID プールにロールを作成しました。Dynamo でテーブルをクエリしようとすると、私は得ています

'Not authorized to perform sts:AssumeRoleWithWebIdentity'

Google クライアント 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  "
  )}

このエラーが発生する理由と、これを修正するための解決策を理解したいと思います。

4

1 に答える 1

0

Cognito が sts:AssumeRoleWithWebIdentity 呼び出しを行うように、Enhanced Authflow を試すことをお勧めします。

認証フローのドキュメントへの参照: http://docs.aws.amazon.com/cognito/devguide/identity/concepts/authentication-flow/

Cognito の基本認証フローは次のとおりです: GetId -> GetOpenIdToken (Cognito の Open Id トークン) -> AssumeRoleWithWebIdentity (Cognito の Open Id トークンを渡す)。

AWS コンソールで ID プールを作成すると、拡張フローまたは基本フローのいずれかで動作するようにデフォルトのポリシーが設定されます。DynamoDB アクセスと統合したい他のサービスのポリシーを追加するだけです。

于 2015-11-07T16:50:29.823 に答える