コンテンツにスキップ

セッションクリーンアップ

メソッド

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

HTTPメソッド

POST: 期限切れセッションクリーンアップ

命名規則

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

リクエストとレスポンス

ヘッダー

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

リクエストヘッダー

  • X-API-Key
  • Content-Type
  • Accept

レスポンスヘッダー

  • Content-Type

セッションクリーンアップ

URI

POST /v1/auth/cleanup_sessions

リクエストボディ

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

レスポンス

レスポンスはJSONです。

{
  "message": "Session cleanup completed",
  "cleanedCount": 42
}

レスポンスフィールド

名前 型 説明
message string 成功メッセージ
cleanedCount number クリーンアップされたセッション数

認証

このエンドポイントはAPIキー認証を使用します(Bearerトークンではありません)。

X-API-Key: <session_cleanup_api_key>

例外処理

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

説明 ステータスコード ステータス名
APIキーがないか無効 401 Unauthorized
内部サーバーエラー 500 Internal Server Error

処理フロー

  1. リクエストヘッダーからX-API-Keyを抽出
  2. タイミングセーフな比較を使用してAPIキーを検証
  3. 期限切れセッションレコードをクエリして削除
  4. クリーンアップされたセッション数を返す

セキュリティ

  • APIキーが必要(ユーザートークンではない)
  • タイミングセーフな比較によりタイミング攻撃を防止
  • AWS EventBridgeのスケジュール実行を想定
  • 不正アクセス試行をログに記録

使用方法

このエンドポイントはスケジュールサービスから呼び出される必要があります(例:AWS EventBridge cronジョブ)。ユーザーアクセスを想定していません。

設定例

環境変数:

SESSION_CLEANUP_API_KEY=<secure-random-key>

AWS EventBridgeスケジュール:

Rate: cron(0 0 * * ? *)  # Daily at midnight UTC
Target: API Gateway -> /v1/auth/cleanup_sessions
Headers: X-API-Key: ${SESSION_CLEANUP_API_KEY}

詳細フローチャート

flowchart TD
    Start([POST /auth/cleanup_sessions]) --> ValidateKey[X-API-Key検証<br/>timing-safe比較]
    ValidateKey --> KeyValid{有効?}
    KeyValid -->|NG| Err401[401 Unauthorized]
    KeyValid -->|OK| QueryExpired[期限切れセッション検索]
    QueryExpired --> DeleteExpired[期限切れセッション削除]
    DeleteExpired --> CountDeleted[削除数カウント]
    CountDeleted --> Success[200 OK<br/>cleaned count]