認証ドキュメント

このページでは、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 を利用します。

  1. フロントエンド: Cognito でログインし、ID トークンを取得。
  2. リクエスト: ID トークンを Bearer トークンとして API に送信。
  3. API Gateway: 以下の項目をチェックしてトークンを検証。
    • 署名 (Issuer)
    • 有効期限 (exp)
    • オーディエンス (Audience = Client ID)
  4. Lambda: 検証済みトークンから sub (ユーザーのユニーク ID) を取得し、DB クエリに使用。

環境ごとの管理

Stage パラメータ(develop, release 等)によって、スタック名やリソース名が分離されています。

  • 例: inq-sys-20260602-user-pool-develop

results matching ""

    No results matching ""