ロールの信頼とアクセス権限 - Amazon Cognito

ロールの信頼とアクセス権限

これらのロールが異なる点は、それらの信頼関係です。未認証ロールの信頼ポリシーの例を次に示します。

{ "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 トークンの発行者) のフェデレーティッドユーザーに、このロールを引き受ける許可を与えます。さらに、ポリシーでは、ID プールに一致させるためにトークンの aud が制限されます (この場合は ID プール ID)。最後に、このポリシーは、Amazon Cognito GetOpenIdToken API オペレーションによって発行されたトークンの複数の値からなる amr クレームの配列メンバーの 1 つが unauthenticated 値を含みます

Amazon Cognito がトークンを作成すると、トークンの amrunauthenticated またはauthenticated のいずれかに設定します。amrauthenticated の場合、トークンには、認証中に使用されるすべてのプロバイダーが含まれます。これにより、amr 条件を次のように変更するだけで、Facebook 経由でログインしたユーザーのみを信頼するロールを作成できます。

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

ロールで信頼関係を変更するときや、ID プール間でロールの使用を試みるときは注意が必要です。ID プールを正しく信頼するようにロールが設定されていない場合は、STS の結果から次のような例外が表示されます。

AccessDenied -- Not authorized to perform sts:AssumeRoleWithWebIdentity

このメッセージが表示された場合は、ID プールと認証タイプに適切なロールがあることを確認します。