

# Amazon Cognito ユーザープールをオーソライザーとして使用して REST API へのアクセスを制御する
<a name="apigateway-integrate-with-cognito"></a>

[IAM ロールとポリシー](permissions.md)または [Lambda オーソライザー](apigateway-use-lambda-authorizer.md) (以前のカスタムオーソライザー) の代わりに、[Amazon Cognito ユーザープール](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html)を使用して、Amazon API Gateway の API にアクセスできるユーザーを制御します。

API で Amazon Cognito ユーザープールを使用するには、`COGNITO_USER_POOLS` タイプのオーソライザーを作成してから、そのオーソライザーを使用する API メソッドを構成する必要があります。API がデプロイされた後、クライアントはまずユーザーをユーザープールに署名し、ユーザーの [ID またはアクセストークン](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html)を取得してから、トークンの 1 つ (通常はリクエストの `Authorization` ヘッダーに設定されている) で API メソッドを呼び出す必要があります。API 呼び出しは、必要なトークンが提供され、提供されたトークンが有効な場合にのみ成功します。そうでない場合、クライアントは認証された認証情報を持たないため呼び出しを許可されません。

ID トークンは、サインインされたユーザーの ID リクエストに基づいて API 呼び出しを承認するために使用されます。アクセストークンは、指定されたアクセス保護されたリソースのカスタムスコープに基づいて API 呼び出しを承認するために使用されます。詳細については、「[ユーザープールのトークンの使用](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-with-identity-providers.html)」および「[リソースサーバーおよびカスタムスコープの管理](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-define-resource-servers.html)」を参照してください。

API 用の Amazon Cognito ユーザープールを作成および設定するには、次のタスクを実行します。
+ Amazon Cognito コンソール、CLI/SDK、または API を使用して、ユーザープールを作成するか、別の AWS アカウントが所有するものを使用します。
+ API Gateway コンソール、CLI/SDK、または API を使用して、選択したユーザープールで API Gateway オーソライザーを作成します。
+ API Gateway コンソール、CLI/SDK、または API を使用して、選択した API メソッドでオーソライザーを有効にします。

 ユーザープールを有効にして API メソッドを呼び出すには、API クライアントで次のタスクを実行します。
+  Amazon Cognito CLI/SDK、または API を使用して、選択したユーザープールにユーザーをサインインし、ID トークンまたはアクセストークンを取得します。SDK の使用方法の詳細については、「[AWS SDK を使用した Amazon Cognito のコード例](https://docs.aws.amazon.com/cognito/latest/developerguide/service_code_examples.html)」を参照してください。
+  クライアント固有のフレームワークを使用して、デプロイされた API Gateway API を呼び出し、`Authorization` ヘッダーに適切なトークンを指定します。

API 開発者は、クライアント開発者に、ユーザープール ID、クライアント ID、および場合によってはユーザープールの一部として定義されている関連クライアントのシークレットを提供する必要があります。

**注記**  
ユーザーが Amazon Cognito の認証情報を使用してサインインし、IAM ロールのアクセス許可を使用するための一時的な認証情報を取得するには、[Amazon Cognito フェデレーテッドアイデンティティ](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html)を使用します。API リソースエンドポイントの HTTP メソッドごとに、認可タイプ、カテゴリ `Method Execution` を `AWS_IAM` に設定します。

このセクションでは、ユーザープールの作成方法、API Gateway API をユーザープールと統合する方法、ユーザープールと統合された API を呼び出す方法を説明します。

**Topics**
+ [REST API 用の Amazon Cognito ユーザープールを作成する](apigateway-create-cognito-user-pool.md)
+ [REST API と Amazon Cognito ユーザープールを統合する](apigateway-enable-cognito-user-pool.md)
+ [Amazon Cognito ユーザープールと統合された REST API を呼び出す](apigateway-invoke-api-integrated-with-cognito-user-pool.md)
+ [API Gateway コンソールを使用して REST API 用のクロスアカウントの Amazon Cognito オーソライザーを設定する](apigateway-cross-account-cognito-authorizer.md)
+ [CloudFormation を使用して REST API の Amazon Cognito オーソライザーを作成する](apigateway-cognito-authorizer-cfn.md)