パスワードリセット
メソッド
RESTメソッドを採用しています。
HTTPメソッド
POST: パスワードリセット実行
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
Content-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
パスワードリセット実行
URI
リクエストボディ
リクエストボディはJSONです。
リクエストパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| string | 必須 | メールアドレス | |
| code | string | 必須 | 確認コード(6桁) |
| newPassword | string | 必須 | 新しいパスワード(最小8文字) |
レスポンス
レスポンスはJSONです。
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| message | string | 成功メッセージ |
| sessionsRevoked | number | 無効化されたセッション数 |
認証
このエンドポイントは認証不要です。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 無効なコードまたは脆弱なパスワード | 400 | Bad Request |
| ユーザーが見つかりません | 404 | Not Found |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストボディからemail、code、newPasswordを抽出
- AWS Cognitoでコードを検証
- Cognitoでパスワードを更新
- セキュリティのため既存のすべてのユーザーセッションを無効化
- 無効化されたセッション数と共に成功を返す
詳細フローチャート
flowchart TD
Start([POST /v1/auth/reset_password]) --> ValidateInput[入力検証]
ValidateInput --> ValidEmail{email検証}
ValidEmail -->|NG| Err400[400 Bad Request]
ValidEmail -->|OK| ValidCode{code検証<br/>6桁}
ValidCode -->|NG| Err400
ValidCode -->|OK| ValidPass{password検証<br/>min 8文字}
ValidPass -->|NG| Err400
ValidPass -->|OK| Cognito
Cognito[AWS Cognito<br/>confirmForgotPassword] --> CognitoOK{成功?}
CognitoOK -->|NG| Err400
CognitoOK -->|OK| FindUser[ユーザー検索<br/>cognitoSub]
FindUser --> UserExists{存在?}
UserExists -->|なし| Err404[404 Not Found]
UserExists -->|あり| RevokeS Session[セッション無効化<br/>deletedAt設定]
RevokeSessions --> CountRevoked[無効化数カウント]
CountRevoked --> Success[200 OK<br/>sessionsRevoked]
セキュリティ
- パスワードリセット後、すべてのユーザーセッションを無効化
- Cognitoがパスワード強度を検証
- 確認コードは一度だけ使用可能
- 失敗試行をログに記録