認証
概要
認証レイヤーは 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_AUTH、ALLOW_REFRESH_TOKEN_AUTH |
| ユーザー存在エラー |
PreventUserExistenceErrors: ENABLED |
他レイヤーとの接続
| 接続先 |
連携方法 |
| フロントエンド |
NEXT_PUBLIC_USER_POOL_ID / NEXT_PUBLIC_USER_POOL_CLIENT_ID を利用して Amplify を構成 |
| API |
Issuer と Audience に CloudFormation Export を取り込み、HTTP API のデフォルト Authorizer として利用 |
| CI/CD |
cognito_cicd.yaml がスタックをデプロイし、frontend_cicd.yaml と api_cicd.yaml が出力値を参照 |
現在の設計上の特徴
- 認証は Cognito に集約されており、アプリ独自のログイン API は持ちません。
- API 実装は JWT クレームから
email を抽出して問い合わせデータの所有者を判定します。
- DB 側には
users テーブルがありますが、現時点のサインイン処理は Cognito 主体で、アプリから直接参照していません。
- Hosted UI やソーシャルログイン、グループベース認可の設定はまだありません。
関連ページ