Amazon Cognito ユーザープールをオーソライザーとして使用して REST API へのアクセスを制御する
IAM ロールとポリシーまたは Lambda オーソライザー (以前のカスタムオーソライザー) の代わりに、Amazon Cognito ユーザープールを使用して、Amazon API Gateway の API にアクセスできるユーザーを制御します。
API で Amazon Cognito ユーザープールを使用するには、COGNITO_USER_POOLS
タイプのオーソライザーを作成してから、そのオーソライザーを使用する API メソッドを構成する必要があります。API がデプロイされた後、クライアントはまずユーザーをユーザープールに署名し、ユーザーの ID またはアクセストークンを取得してから、トークンの 1 つ (通常はリクエストの Authorization
ヘッダーに設定されている) で API メソッドを呼び出す必要があります。API 呼び出しは、必要なトークンが提供され、提供されたトークンが有効な場合にのみ成功します。そうでない場合、クライアントは認証された認証情報を持たないため呼び出しを許可されません。
ID トークンは、サインインされたユーザーの ID リクエストに基づいて API 呼び出しを承認するために使用されます。アクセストークンは、指定されたアクセス保護されたリソースのカスタムスコープに基づいて API 呼び出しを承認するために使用されます。詳細については、「ユーザープールのトークンの使用」および「リソースサーバーおよびカスタムスコープの管理」を参照してください。
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 のコード例」を参照してください。 -
クライアント固有のフレームワークを使用して、デプロイされた API Gateway API を呼び出し、
Authorization
ヘッダーに適切なトークンを指定します。
API 開発者は、クライアント開発者に、ユーザープール ID、クライアント ID、および場合によってはユーザープールの一部として定義されている関連クライアントのシークレットを提供する必要があります。
注記
ユーザーが Amazon Cognito の認証情報を使用してサインインし、IAM ロールのアクセス許可を使用するための一時的な認証情報を取得するには、Amazon Cognito フェデレーテッドアイデンティティを使用します。API リソースエンドポイントの HTTP メソッドごとに、認証タイプ、カテゴリ Method Execution
を AWS_IAM
に設定します。
このセクションでは、ユーザープールの作成方法、API Gateway API をユーザープールと統合する方法、ユーザープールと統合された API を呼び出す方法を説明します。
トピック
- REST API 用の Amazon Cognito ユーザープールオーソライザーを作成するためのアクセス許可を取得する
- REST API 用の Amazon Cognito ユーザープールを作成する
- REST API と Amazon Cognito ユーザープールを統合する
- Amazon Cognito ユーザープールと統合された REST API を呼び出す
- API Gateway コンソールを使用して REST API 用のクロスアカウントの Amazon Cognito オーソライザーを設定する
- AWS CloudFormation を使用して REST API の Amazon Cognito オーソライザーを作成する