認証

概要

認証レイヤーは infrastructure/auth/template.yaml で定義された Amazon Cognito User Pool と User Pool Client で構成されています。
メールアドレスをユーザー識別子として扱い、フロントエンドは Amplify からサインインし、API は Cognito Issuer / Audience を使って JWT を検証します。

参照ソース

パス 内容
infrastructure/auth/template.yaml Cognito User Pool / App Client / Export 定義
infrastructure/auth/README.md 認証基盤ディレクトリの簡易説明
frontend/components/AmplifyProvider.tsx フロントエンド側の Cognito 接続設定
api/template.yaml API Gateway 側の Cognito Authorizer 設定

Cognito リソース

リソース 内容
CognitoUserPool ユーザープール本体
CognitoUserPoolClient フロントエンドで利用するアプリクライアント
CognitoIssuer API Gateway JWT Authorizer が利用する Issuer URL

設定内容

項目 設定
サインイン ID メールアドレス
自動検証属性 email
最小パスワード長 8
文字種要件 大文字・小文字・数字が必須、記号は不要
App Client Secret なし
許可フロー ALLOW_USER_SRP_AUTHALLOW_REFRESH_TOKEN_AUTH
ユーザー存在エラー PreventUserExistenceErrors: ENABLED

他レイヤーとの接続

接続先 連携方法
フロントエンド NEXT_PUBLIC_USER_POOL_ID / NEXT_PUBLIC_USER_POOL_CLIENT_ID を利用して Amplify を構成
API IssuerAudience に CloudFormation Export を取り込み、HTTP API のデフォルト Authorizer として利用
CI/CD cognito_cicd.yaml がスタックをデプロイし、frontend_cicd.yamlapi_cicd.yaml が出力値を参照

現在の設計上の特徴

  • 認証は Cognito に集約されており、アプリ独自のログイン API は持ちません。
  • API 実装は JWT クレームから email を抽出して問い合わせデータの所有者を判定します。
  • DB 側には users テーブルがありますが、現時点のサインイン処理は Cognito 主体で、アプリから直接参照していません。
  • Hosted UI やソーシャルログイン、グループベース認可の設定はまだありません。

関連ページ

results matching ""

    No results matching ""