はじめに

このハンズオンでは Cognito ユーザプールの API を直接操作します。実際のアプリケーション開発では SDK を使って呼び出すことも多いですが、構成によっては API を直接呼び出すケースもあります。

まずは、Cognito には複数のサービスと API があるため、それらを紹介します。

Cognito には、ユーザプールID プール の 2 つのサービスがあります。

ユーザプール は独自のユーザディレクトリを持っており、ユーザを登録して認証することができます。ユーザには JWT 形式の Cognito トークンを発行され、アプリケーションの API へのアクセスに利用することができます。外部 ID プロバイダでのログインに基づいてトークンを発行することもできます。

ID プール では、独自に認証はせず Cognito ユーザプールあるいは外部 ID プロバイダでのログインに基づき、AWS 一時クレデンシャルを発行します。ユーザは AWS の各種サービスの API にアクセスできるようになります。

ユーザプールでは、Cognito Identity Provider APICognito Auth API の 2 つの API が提供されています。

Cognito Identity Provider API は、Cognito ユーザプール独自の API で InitiateAuth などの API があります。Cognito Auth API は OAuth / OIDC の仕様をベースとした API で Hosted UI も利用することになります。

さらに、Cognito Identity Provider API で提供されている各 API は、非 Admin API をブラウザなどのクライアントから直接呼び出す使い方とAdmin API をサーバから IAM 権限を使って呼び出す使い方があります。

Auth API も複数の使い方があります。OAuth 2.0 をベースにしたフローで、トークンを発行する前に認可コードを使ったステップがある Authorization Code Grant と認可コードは使わずすぐにトークンが発行される Implicit Grant があります。

全体を整理すると以下のとおりです。本ハンズオンでは Cognito Identity Provider API の 非 Admin API を呼び出しを 3章 で、Cognito Auth API の Authorization Code Grant の呼び出しを 4章 で行います。

本ハンズオンの対象者

  • これから Cognito ユーザプールの詳細を理解していきたい方
  • アプリに Cognito ユーザプールを組み込もうとされている開発者の方

Cognito の機能全般を知りたい方は Blackbelt - Amazon Cognito 資料 を見て頂くことをおすすめします。

本ハンズオンをすすめる上での前提条件

  • インターネットにアクセスできる
    • プロキシの利用が必要な環境の場合:curl コマンドでは追加のパラメータ設定が必要です。
    • 認証付きプロキシの利用が必要な環境の場合:curl コマンドで追加のパラメータ設定をすることで一部の認証方式に対応できますが、認証方式によっては対応できない可能があります。
  • Administrator Access 権限以上を持つ AWS ユーザーが利用できる
  • Chrome/FireFox の最新版のブラウザが利用できるPCで作業できる
  • 登録は必要ですが無料でも利用できるサービス Postman を利用できるか、 curl コマンドを利用できる
  • 登録無しで利用できる jwt.io を利用できる

本ハンズオンでは Postman を使って Cognito ユーザプールの API 呼び出しを行います。

必要なスキル

  • HTTP の基礎を理解

ハンズオンを進めるリージョン

特に指示がない場合は、東京リージョンをご利用ください。Amazon Cognito と Amazon API Gateway が利用できる他のリージョンでもかまいませんが、一部資料を読み替える必要があります。どのリージョンでサービスが提供されているかは、こちらのリストを参照ください。

本ハンズオンを実施すると、AWS の利用料金が発生します。新規に作成されたアカウントで実施される場合は無料利用枠の範囲ですが、それ以外の場合は料金が発生する場合があります。本ハンズオンの最後のステップにて作成したリソースの削除方法をご案内しているので、忘れずに削除してくだい。