Amazon Cognito
Web / モバイルアプリに認証 / 認可機能を追加する AWS マネージドサービス
Cognito とは
Amazon Cognito は、Web / モバイルアプリに認証 / 認可機能を追加する AWS マネージドサービスである。ユーザープール (認証) とアイデンティティプール (認可) の 2 つのコンポーネントで構成される。
ユーザープール vs アイデンティティプール
ユーザープールとアイデンティティプールの違いを以下にまとめる。
| コンポーネント | 役割 | 出力 |
|---|---|---|
| ユーザープール | 認証 (サインアップ、ログイン) | JWT (ID トークン, アクセストークン) |
| アイデンティティプール | 認可 (AWS リソースへのアクセス) | 一時的な AWS 認証情報 |
SAM での定義
SAM での定義の例を示す。
UserPool:
Type: AWS::Cognito::UserPool
Properties:
AutoVerifiedAttributes: [email]
Policies:
PasswordPolicy:
MinimumLength: 8
UserPoolClient:
Type: AWS::Cognito::UserPoolClient
Properties:
UserPoolId: !Ref UserPool
ExplicitAuthFlows: [ALLOW_USER_SRP_AUTH, ALLOW_REFRESH_TOKEN_AUTH]
API Gateway との統合
API Gateway との 統合の例を示す。
MyApi:
Type: AWS::Serverless::HttpApi
Properties:
Auth:
DefaultAuthorizer: CognitoAuth
Authorizers:
CognitoAuth:
JwtConfiguration:
issuer: !Sub https://cognito-idp.${AWS::Region}.amazonaws.com/${UserPool}
audience: [!Ref UserPoolClient]
Cognito vs 自前認証 vs Auth0
Cognito と自前認証 vs Auth0 の違いを以下にまとめる。
| 観点 | Cognito | 自前実装 | Auth0 |
|---|---|---|---|
| コスト | MAU 課金 (無料枠あり / プランは公式料金表を確認) | 開発コスト | 有料 |
| 管理負荷 | 低い | 高い | 低い |
| カスタマイズ | 中 | 高い | 中 |
| AWS 統合 | 標準で連携できる | 連携は自分で実装する | 連携は自分で実装する |
認証の自前実装はパスワードのハッシュ化、総当たり対策、トークン失効、多要素認証と守るべき項目が多く、セキュリティ事故の温床になりやすい。マネージドに寄せる判断は「作る楽しさ」より「破られたときの損害」で下すのが実務的だ。
つまずきやすい点
導入でつまずきやすいのは 3 点ある。第 1 に、標準のサインイン画面 (Hosted UI) は見た目のカスタマイズ幅が限られるため、デザイン要件が厳しい場合は自前フォーム + SDK の構成になる。第 2 に、ユーザープールは後からのリージョン移動や属性設計の変更に弱く、最初の設計 (サインインをメールにするかユーザー名にするか等) が長く残る。第 3 に、受け取った JWT はアプリ側で必ず署名検証が必要で、検証を省いた実装は認証を丸ごと無効化してしまう。検証には公式や実績あるライブラリを使うのが原則だ。
基礎から学ぶなら関連書籍が手がかりになる。
この記事は役に立ちましたか?
関連用語
JWT
JSON Web Token の略で、署名付きの JSON でユーザー情報を安全に伝達するトークン形式
OAuth 2.0
ユーザーのパスワードを渡さずに、リソースへの限定的なアクセスを許可する認可フレームワーク
RBAC
ロール (役割) に基づいてアクセス権限を管理する認可モデル
オブジェクトプールパターン
生成コストの高いオブジェクトを事前に確保してプールし、再利用することでパフォーマンスを向上させるパターン
コネクションプール
データベース接続を事前に確保してプールし、リクエストごとの接続コストを削減する仕組み
多要素認証
パスワードに加えて追加の認証要素を要求し、アカウントの不正アクセスを防ぐセキュリティ手法
関連する記事
セキュリティ本ガイド - Web 開発者が読むべき技術書の選び方
Web セキュリティの基礎から実践まで学べる技術書の選び方マトリクスと、読了後にやるべき 3 つのアクションを紹介します。
AWS 本の選び方 - 全体像 / 構築 / 設計 / 運用 / セキュリティの 5 視点
AWS を学ぶ技術書の選び方を「全体像 / 構築 / 設計 / 運用 / セキュリティ」の 5 視点で整理。公式ドキュメントと本の役割分担、資格対策書の位置づけまで、2026 年 8 月時点の定番書で AWS 独学のルートを解説します。
体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版は初版と何が違うか - 買い直し判断ガイド
通称「徳丸本」こと体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 (2018 年) と初版 (2011 年) の違いを出版社公表の改訂内容から整理。章の削除 / 新設 / 追加点の一覧と、初版所有者が買い直すべきかの判断基準を解説します。