パスワード忘れ
メソッド
RESTメソッドを採用しています。
HTTPメソッド
POST: パスワードリセット要求
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。
リクエストヘッダー
Content-TypeAcceptAccept-language
レスポンスヘッダー
Content-Type
パスワードリセット要求
URI
リクエストボディ
リクエストボディはJSONです。
リクエストパラメータ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| string | 必須 | メールアドレス(有効なメールフォーマット) |
レスポンス
レスポンスはJSONです。
{
"message": "Password reset code sent",
"codeDeliveryDestination": "u***@example.com",
"codeDeliveryMedium": "EMAIL"
}
レスポンスフィールド
| 名前 | 型 | 説明 |
|---|---|---|
| message | string | 成功メッセージ |
| codeDeliveryDestination | string | コード送信先(マスク済み) |
| codeDeliveryMedium | string | 送信方法(EMAIL) |
認証
このエンドポイントは認証不要です。
例外処理
例外処理のステータスコードは以下の通りです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| 無効なメールフォーマット | 400 | Bad Request |
| 内部サーバーエラー | 500 | Internal Server Error |
処理フロー
- リクエストボディからemailを抽出
- AWS Cognitoにパスワードリセットコードをリクエスト
- Cognitoがユーザーのメールアドレスに確認コードを送信
- 配信先情報を返す
詳細フローチャート
flowchart TD
Start([POST /v1/auth/forgot_password]) --> ValidateInput[入力検証]
ValidateInput --> ValidEmail{email検証}
ValidEmail -->|NG| Err400[400 Bad Request]
ValidEmail -->|OK| Cognito[AWS Cognito<br/>forgotPassword]
Cognito --> CognitoOK{成功?}
CognitoOK -->|NG| HandleError[エラー処理]
HandleError --> Success
CognitoOK -->|OK| Success[200 OK<br/>code送信先情報]
Note1[ユーザー列挙攻撃防止:<br/>存在しないメールでも成功返却]
セキュリティ
- メールアドレスが存在しない場合でも成功を返す(ユーザー列挙を防止)
- レート制限により悪用を防止
- 確認コードは設定された時間後に期限切れ