Amazon Cognito のアイコン

Amazon Cognito

Web・モバイルアプリケーションの認証・認可とユーザー管理を提供するサービス

何ができるか

Amazon Cognito は、Web アプリケーションやモバイルアプリケーションにユーザーのサインアップ、サインイン、アクセス制御の機能を追加するサービスです。ユーザープールでユーザーの登録・認証を管理し、ID プールで認証済みユーザーに AWS リソースへのアクセス権限を付与します。Google、Facebook、Apple などのソーシャルログインや、SAML ベースの企業 ID プロバイダーとの連携もサポートしています。

どのような場面で使うか

Web アプリケーションにメールアドレスとパスワードによるサインアップ・サインイン機能を実装する場面や、Google アカウントでのソーシャルログインを追加する場面で活用されています。また、認証済みユーザーにのみ S3 バケットや API Gateway のエンドポイントへのアクセスを許可するアクセス制御の実装にも利用されます。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。

身近な例え

テーマパークの入場ゲートに例えるとわかりやすいでしょう。来場者 (ユーザー) はゲートで年間パスポートを提示するか (既存ユーザーのサインイン)、新規にチケットを購入します (サインアップ)。ゲートを通過すると、チケットの種類に応じてアクセスできるエリアが決まります (認可)。Cognito はこの入場ゲートの役割を担い、誰がどのリソースにアクセスできるかを管理します。

Cognito とは

Amazon Cognito は、アプリケーションの認証 (本人確認) と認可 (アクセス権限の付与) を管理するサービスです。ユーザー登録、ログイン、パスワードリセット、多要素認証 (MFA) などの機能を、自前で実装することなく利用できます。数百万ユーザーまでスケールするフルマネージドサービスで、セキュリティのベストプラクティスが組み込まれています。

ユーザープールと ID プール

Cognito には 2 つの主要コンポーネントがあります。ユーザープールは、ユーザーの登録・認証を管理するユーザーディレクトリです。サインアップ、サインイン、パスワードリセット、MFA などの機能を提供し、認証成功時に JWT トークンを発行します。ID プールは、認証済みユーザーに一時的な AWS 認証情報を付与し、S3 や DynamoDB などの AWS リソースに直接アクセスできるようにします。

ソーシャルログインと企業 ID 連携

Cognito は外部の ID プロバイダーとの連携をサポートしています。Google、Facebook、Apple、Amazon などのソーシャル ID プロバイダーを設定すると、ユーザーは既存のアカウントでサインインできます。企業向けには、SAML 2.0 や OpenID Connect (OIDC) に対応しており、Active Directory や Okta などの企業 ID プロバイダーとの SSO (シングルサインオン) を実現できます。

はじめかた

Cognito を使い始めるには、Cognito コンソールでユーザープールを作成します。サインイン方法 (メールアドレス、電話番号、ユーザー名) やパスワードポリシーを設定し、アプリクライアントを作成します。フロントエンドアプリケーションには Amplify ライブラリを使うと、数行のコードでサインアップ・サインインの UI を組み込めます。無料利用枠として、月間 50,000 アクティブユーザーまで無料で利用できます。

注意点

  • ユーザープールの設定 (サインイン属性、MFA の種類など) は作成後に変更できない項目がある。要件を十分に検討してから作成すること
  • 無料利用枠は月間 50,000 MAU (月間アクティブユーザー) まで。ソーシャルログインや SAML 連携のユーザーは別料金体系となる
  • JWT トークンの有効期限はデフォルトで 1 時間。アプリケーション側でトークンのリフレッシュ処理を実装すること

さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。