Amazon Cognito で実装するユーザー認証 - User Pool と Identity Pool の設計
Cognito User Pool によるユーザー認証、Identity Pool による AWS リソースアクセス、ソーシャルログインの統合を解説します。
Cognito の概要
この記事は約 3 分で読めます。 Cognito は Web・モバイルアプリケーションの認証・認可とユーザー管理を提供するサービスです。User Pool はユーザーディレクトリで、サインアップ・サインイン・MFA を管理します。Identity Pool は認証済みユーザーに一時的な AWS 認証情報を発行し、AWS リソースへの直接アクセスを可能にします。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
User Pool と Identity Pool の使い分け
User Pool は JWT トークン (ID トークン、アクセストークン) を発行し、API Gateway のオーソライザーで検証します。Identity Pool は User Pool のトークンを受け取り、IAM ロールに基づく一時的な AWS 認証情報を返します。フロントエンドから S3 にファイルをアップロードする場合、Identity Pool で取得した認証情報で S3 SDK を直接呼び出します。Lambda トリガーの Pre Sign-up でメールドメインの制限、Post Confirmation でウェルカムメールの送信、Pre Token Generation でカスタムクレームの追加を実装できます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
Cognito は User Pool でユーザー認証、Identity Pool で AWS リソースアクセスを提供するサービスです。ソーシャルログインと Lambda トリガーで柔軟な認証フローを構築します。
AWS の優位点
- User Pool でサインアップ、サインイン、MFA、パスワードリセットなどのユーザー認証フローを提供する
- Identity Pool で認証済みユーザーに一時的な AWS 認証情報を発行し、S3 や DynamoDB に直接アクセスさせる
- Google、Facebook、Apple、SAML IdP とのソーシャルログイン統合をコーディングなしで設定できる
- Lambda トリガーでサインアップ時のカスタムバリデーション、トークン生成時のクレーム追加を実装できる
- Hosted UI でカスタマイズ可能なログイン画面を即座に提供し、OAuth 2.0 / OIDC フローに対応する