Amazon Cognito

Web やモバイルアプリケーションにユーザー認証・認可機能を追加するフルマネージドサービスで、ソーシャルログインや SAML 連携にも対応する

概要

Amazon Cognito は、アプリケーションにユーザーのサインアップ、サインイン、アクセス制御の機能を追加するためのフルマネージドサービスです。ユーザープールはユーザーディレクトリとして機能し、メールアドレスやパスワードによる認証、MFA、パスワードポリシーの設定、カスタム認証フローの実装が可能です。Google、Facebook、Apple、Amazon などのソーシャル ID プロバイダーや、SAML 2.0、OpenID Connect に対応した企業の ID プロバイダーとの連携もサポートします。ID プールは認証済みユーザーに一時的な AWS 認証情報を付与し、S3 や DynamoDB などの AWS リソースへの直接アクセスを可能にします。月間アクティブユーザー (MAU) 50,000 人までの無料枠があり、小規模なアプリケーションでは実質無料で利用できます。

Cognito のユーザープールと ID プール

Cognito にはユーザープールと ID プールの 2 つの主要コンポーネントがあり、それぞれ異なる役割を担います。ユーザープールは認証 (Authentication) を担当し、ユーザーの登録、ログイン、パスワードリセット、MFA、メール/SMS 検証などの機能を提供します。認証に成功すると JWT (JSON Web Token) が発行され、API Gateway や ALB でのリクエスト認証に使用できます。ID プールは認可 (Authorization) を担当し、ユーザープールや外部 ID プロバイダーで認証されたユーザーに対して、IAM ロールに基づく一時的な AWS 認証情報を付与します。これにより、フロントエンドアプリケーションから S3 バケットへの直接アップロードや、DynamoDB テーブルへの直接アクセスが可能になります。両者を組み合わせることで、認証から AWS リソースへのアクセス制御までを一貫して管理できます。

Azure AD B2C との比較

Azure で Cognito に対応するサービスは Azure AD B2C (Azure Active Directory B2C) です。両者ともコンシューマー向けの認証サービスですが、設計思想に違いがあります。Cognito はユーザープールと ID プールの 2 つのコンポーネントで構成されるのに対し、Azure AD B2C は単一のサービスとしてユーザーフローとカスタムポリシーで認証フローを定義します。カスタマイズ性では、Azure AD B2C の Identity Experience Framework (カスタムポリシー) が XML ベースで非常に柔軟な認証フローを構築できるのに対し、Cognito は Lambda トリガーを使ったカスタマイズが中心です。料金面では、Cognito は MAU 50,000 人まで無料、それ以降は MAU あたり 0.0055 ドルです。Azure AD B2C は MAU 50,000 人まで無料、それ以降は MAU あたり 0.01625 ドル (Premium P1) で、Cognito の方が約 3 分の 1 の単価です。