コンテンツにスキップ

パスワード忘れ

メソッド

RESTメソッドを採用しています。

HTTPメソッド

POST: パスワードリセット要求

命名規則

クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時のURIとJSON内のノードにはsnake_caseを使用します。

リクエストとレスポンス

ヘッダー

メタ情報はレスポンスボディではなく、HTTPヘッダーに設定されます。

リクエストヘッダー

  • Content-Type
  • Accept
  • Accept-language

レスポンスヘッダー

  • Content-Type

パスワードリセット要求

URI

POST /v1/auth/forgot_password

リクエストボディ

リクエストボディはJSONです。

{
  "email": "user@example.com"
}

リクエストパラメータ

名前 型 必須 説明
email 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

処理フロー

  1. リクエストボディからemailを抽出
  2. AWS Cognitoにパスワードリセットコードをリクエスト
  3. Cognitoがユーザーのメールアドレスに確認コードを送信
  4. 配信先情報を返す

詳細フローチャート

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/>存在しないメールでも成功返却]

セキュリティ

  • メールアドレスが存在しない場合でも成功を返す(ユーザー列挙を防止)
  • レート制限により悪用を防止
  • 確認コードは設定された時間後に期限切れ