認証ドキュメント
このページでは、Amazon Cognito を使用した認証基盤について説明します。
構成概要
本システムでは、ユーザー認証と API の認可に Amazon Cognito User Pool を使用しています。
- サービス: Amazon Cognito
- 主要リソース:
- User Pool (ユーザープール)
- User Pool Client (アプリケーションクライアント)
設定詳細
ユーザープール (User Pool)
- サインイン方法: メールアドレス
- 属性:
email(自動検証あり) - パスワードポリシー:
- 最小 8 文字
- 大文字、小文字、数字を必須
- デプロイ設定:
inquiry-api/auth/template.yamlで定義
アプリケーションクライアント (App Client)
- 認証フロー:
ALLOW_USER_SRP_AUTH,ALLOW_REFRESH_TOKEN_AUTH - クライアントシークレット: なし (Public Client)
- 存在エラーの防止: 有効 (ENABLED)
Outputs と連携
認証スタックは以下の値を Export し、API スタックやフロントエンドで利用されます。
| 論理名 | 説明 | 備考 |
|---|---|---|
CognitoUserPoolId |
ユーザープールの ID | ユーザー管理等で使用 |
CognitoUserPoolClientId |
アプリクライアントの ID | フロントエンドのログイン処理、API の JWT 検証で使用 |
CognitoIssuer |
JWT 発行元 URL | API Gateway の JWT Authorizer 設定で使用 |
API との接続
API Gateway は、受信したリクエストの Authorization ヘッダーに含まれる JWT を検証するために、Cognito User Pool を利用します。
- フロントエンド: Cognito でログインし、ID トークンを取得。
- リクエスト: ID トークンを Bearer トークンとして API に送信。
- API Gateway: 以下の項目をチェックしてトークンを検証。
- 署名 (Issuer)
- 有効期限 (exp)
- オーディエンス (Audience = Client ID)
- Lambda: 検証済みトークンから
sub(ユーザーのユニーク ID) を取得し、DB クエリに使用。
環境ごとの管理
Stage パラメータ(develop, release 等)によって、スタック名やリソース名が分離されています。
- 例:
inq-sys-20260602-user-pool-develop