一般的な Amazon Cognito シナリオ
このトピックでは、Amazon Cognito を使用するための 6 つの一般的なシナリオについて説明します。
Amazon Cognito の主な 2 つのコンポーネントは、ユーザープールと ID プールです。ユーザープールは、ウェブおよびモバイルユーザーにサインアップとサインインオプションを提供するユーザーディレクトリです。アイデンティティプールは、他の AWS のサービス へのアクセス権をユーザーに付与する一時的な AWS 認証情報を提供します。
ユーザープールは、Amazon Cognito のユーザーディレクトリです。アプリケーションユーザーは、ユーザープール経由で直接サインインするか、またはサードパーティーの ID プロバイダー (IdP) 経由でフェデレーション方式で認証を行うことができます。ユーザープールは、Facebook、Google、Amazon、Apple 経由のソーシャルサインイン、および OpenID Connect (OIDC) と SAML IdP から返されるトークンの処理のオーバーヘッドを管理します。ユーザーが直接またはサードパーティーを通じてサインインするかどうかにかかわらず、ユーザープールのすべてのメンバーには、SDK を通じてアクセスできるディレクトリプロファイルがあります。
ID プールを使用すると、ユーザーは Amazon S3 や DynamoDB などの AWS のサービスにアクセスするための一時的な AWS 認証情報を取得できます。ID プールは、匿名ゲストユーザーに加えて、サードパーティー IdP 経由のフェデレーションもサポートしています。
トピック
ユーザープールを使用して認証する
ユーザーがユーザープールを使用して認証できるようにすることが可能です。アプリケーションユーザーは、ユーザープール経由で直接サインインするか、またはサードパーティーの ID プロバイダー (IdP) 経由でフェデレーション方式で認証を行うことができます。ユーザープールは、Facebook、Google、Amazon、Apple 経由のソーシャルサインイン、および OpenID Connect (OIDC) と SAML IdP から返されるトークンの処理のオーバーヘッドを管理します。
認証が正常に行われると、ウェブまたはモバイルアプリが Amazon Cognito からユーザープールトークンを受け取ります。これらのトークンは、アプリケーションが AWS のその他サービスにアクセスできるようにする AWS 認証情報の取得に使用できる他、サーバー側のリソースや Amazon API Gateway へのアクセスを制御するために使用することも可能です。
詳細については、「ユーザープール認証フロー」および「ユーザープール JSON ウェブトークン (JWT) の理解」を参照してください。

ユーザープールトークンを使用するバックエンドリソースへのアクセス
ユーザープールへのサインインが正常に行われると、ウェブまたはモバイルアプリが Amazon Cognito からユーザープールトークンを受け取ります。サーバー側のリソースへのアクセスを制御するには、これらのトークンを使用します。また、ユーザープールグループを作成して許可を管理したり、異なるタイプのユーザーを表したりすることもできます。グループを使用して、リソースをアクセス制御する方法の詳細については、「ユーザープールにグループを追加する」を参照してください。

ユーザープールのドメインを設定した後、Amazon Cognito が、アプリにサインアップおよびサインインページを追加できるようにするホストされたウェブの UI をプロビジョニングします。この OAuth 2.0 認証基盤を使用することで、独自のリソースサーバーを作成でき、ユーザーは保護されたリソースにアクセスできるようになります。詳細については、「リソースサーバーを使用したスコープ、M2M、および API」を参照してください。
ユーザープール認証の詳細については、「ユーザープール認証フロー」および「ユーザープール JSON ウェブトークン (JWT) の理解」を参照してください。
ユーザープールと共に API Gateway と Lambda を使用してリソースにアクセスする
ユーザーが API Gateway 経由で API にアクセスできるようにすることが可能です。API Gateway は、正常に行われたユーザープール認証からのトークンを検証し、これらのトークンを Lambda 関数などのリソース、または独自の API へのアクセス権をユーザーに付与するために使用します。
ユーザープール内のグループは、グループメンバーシップを IAM ロールにマップすることによって、API Gateway でアクセス許可を制御するために使用できます。ユーザーがメンバーとなっているグループは、アプリユーザーのサインイン時にユーザープールより付与される ID トークンに含まれます。ユーザープールグループの詳細については、「ユーザープールにグループを追加する」を参照してください。
Amazon Cognito オーソライザーの Lambda 関数による検証のために、API Gateway へのリクエストでユーザープールトークンを送信することができます。API Gateway の詳細については、「Amazon Cognito ユーザープールをオーソライザーとして使用して REST API へのアクセスを制御する」を参照してください。

ユーザープールと ID プールを使用して AWS のサービスにアクセスする
ユーザープールの認証が正常に行われると、アプリケーションが Amazon Cognito からユーザープールトークンを受け取ります。これらは、ID プールを使用した AWS の他のサービスへの一時的なアクセス権と交換できます。詳細については、「サインイン後にアイデンティティプールを使用して AWS のサービス にアクセスする」および「Amazon Cognito アイデンティティプールの使用開始方法」を参照してください。

サードパーティーで認証を行い、ID プールを使用して AWS サービスにアクセスする
ユーザーが ID プール経由で AWS のサービスにアクセスできるようにすることが可能です。ID プールには、サードパーティー ID プロバイダーによって認証されたユーザーからの IdP トークンが必要です (匿名ゲストの場合は何も必要ありません)。ID プールは、AWS の他のサービスへのアクセスに使用できる一時的な AWS 認証情報を付与します。詳細については、「Amazon Cognito アイデンティティプールの使用開始方法」を参照してください。

Amazon Cognito を使用して AWS AppSync リソースにアクセスする
Amazon Cognito ユーザープールの正常な認証からのトークンを使用して、AWS AppSync リソースへのアクセスをユーザーに許可できます。詳細については、「AWS AppSync デベロッパーガイド」の「AMAZON_COGNITO_USER_POOLS authorization」を参照してください。
ID プールから受け取った IAM 認証情報を使用して AWS AppSync GraphQL API へのリクエストに署名することもできます。「AWS_IAM authorization」を参照してください。
