CTS-KB

AWS Cognito

あまぞんこぐにと

Cognito Amazon Cognito
#AWS Cognito #Cognito #AWS #認証 #認可 #SaaS #IAM #OAuth #OIDC

AWS が提供するマネージド認証・認可サービス。ユーザープール(認証)と ID プール(認可)を組み合わせ、Web / モバイルアプリにサインアップ・サインイン・ソーシャルログイン・MFA を短期間で実装できる。

概要

Cognito は Web / モバイルアプリにユーザー管理と認証・認可を組み込むための AWS マネージドサービス。独自の認証基盤を構築する代わりに、Cognito を使うことでサインアップ・ログイン・パスワードリセット・多要素認証(MFA)・ソーシャルログインを短期間で実装できる。

OAuth 2.0 / OpenID Connect (OIDC) / SAML 2.0 に準拠しており、標準プロトコルで既存システムと連携可能。

2 つのコンポーネント

コンポーネント役割
ユーザープール認証基盤。ユーザー登録・サインイン・MFA・パスワードポリシー管理。JWT (ID/Access Token) を発行
ID プール認可基盤。認証済みユーザーに一時的な AWS 認証情報を払い出し、S3/DynamoDB 等への直接アクセスを許可

ユーザープールだけで認証を完結できるケースが多く、ID プールは AWS リソースへの直接アクセスが必要なときに併用する。

主な機能

  • ユーザー管理 — サインアップ / サインイン / パスワードリセット / アカウント確認(メール・SMS)
  • ソーシャルログイン — Google / Facebook / Apple / Amazon / SAML IdP 連携
  • MFA — SMS・TOTP・WebAuthn
  • ホスト型 UI — ログイン画面をカスタマイズなしで利用可能
  • Lambda トリガー — サインアップ前/後・認証前/後にカスタム処理を挿入
  • ユーザー属性のカスタマイズ — 組織 ID・ロール等の独自属性を JWT に埋め込み

CTS での活用例

CTS-EC など Angular + .NET の動的 SaaS で認証基盤として採用。主な理由:

  • AWS との親和性 — S3 / CloudFront / Lambda / API Gateway との統合が容易
  • IAM ロール連携 — ID プール経由で一時的な AWS 認証情報を払い出し、S3 への直接アクセスを制御
  • 運用負荷の低さ — ユーザーデータの保管・冗長化・バックアップを AWS に委譲
  • コスト効率 — 月間アクティブユーザー 5 万人まで無料枠

他の認証 SaaS との比較

サービス提供元強み弱み
AWS CognitoAWSAWS 統合が深い、IAM 連携、無料枠広いUI カスタマイズが限定的、ドキュメントが難解
Auth0Okta開発者体験が良い、ドキュメント充実、SDK 豊富従量課金、ユーザー数が増えるとコスト増
ClerkClerkモダンな UI、Next.js/React との親和性高い新興サービス、エンタープライズ機能はこれから
Firebase AuthGoogleFirebase エコシステムと統合、クイックスタートGoogle Cloud 依存、エンタープライズ IdP 連携が弱い

実装上の注意点

1. JWT の検証は必須

Cognito が発行する ID Token / Access Token は JWT 形式。バックエンド(.NET / Node.js 等)で署名検証 + 期限チェックを必ず実装する。検証なしで信頼すると、JWT 偽造・権限昇格のリスク。

2. リフレッシュトークンの扱い

  • デフォルト有効期限は 30 日(カスタマイズ可能)
  • ブラウザストレージに保管する場合は XSS 対策を徹底(HttpOnly Cookie 推奨)

3. MFA の必須化

管理者系ユーザーには MFA をユーザープール設定で強制する。任意設定だと有効化しないユーザーが残る。

4. Lambda トリガーの冪等性

サインアップ後の処理(DB への初期レコード作成等)は冪等に設計する。Cognito は稀にトリガーを重複実行することがある。

関連用語

外部リソース