コンテンツにスキップ

パスワードリセット

メソッド

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

HTTPメソッド

POST: パスワードリセット実行

命名規則

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

リクエストとレスポンス

ヘッダー

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

リクエストヘッダー

  • Content-Type
  • Accept
  • Accept-language

レスポンスヘッダー

  • Content-Type

パスワードリセット実行

URI

POST /v1/auth/reset_password

リクエストボディ

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

{
  "email": "user@example.com",
  "code": "123456",
  "newPassword": "NewSecurePassword123!"
}

リクエストパラメータ

名前 型 必須 説明
email string 必須 メールアドレス
code string 必須 確認コード(6桁)
newPassword string 必須 新しいパスワード(最小8文字)

レスポンス

レスポンスはJSONです。

{
  "message": "Password reset successful",
  "sessionsRevoked": 3
}

レスポンスフィールド

名前 型 説明
message string 成功メッセージ
sessionsRevoked number 無効化されたセッション数

認証

このエンドポイントは認証不要です。

例外処理

例外処理のステータスコードは以下の通りです。

説明 ステータスコード ステータス名
無効なコードまたは脆弱なパスワード 400 Bad Request
ユーザーが見つかりません 404 Not Found
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストボディからemail、code、newPasswordを抽出
  2. AWS Cognitoでコードを検証
  3. Cognitoでパスワードを更新
  4. セキュリティのため既存のすべてのユーザーセッションを無効化
  5. 無効化されたセッション数と共に成功を返す

詳細フローチャート

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がパスワード強度を検証
  • 確認コードは一度だけ使用可能
  • 失敗試行をログに記録