ログアウト
メソッド
REST メソッドを採用しています。
HTTP メソッド
POST: セッション無効化
命名規則
クエリパラメータとノードの命名を統一し、可読性を向上させるため、リクエスト時の URI と JSON 内のノードには snake_case を使用します。
リクエストとレスポンス
ヘッダー
メタ情報はレスポンスボディではなく、HTTP ヘッダーに設定されます。
リクエストヘッダー
Authorization:Bearer <access_token>Content-Type:application/json
レスポンスヘッダー
Content-Type:application/json
ログアウト
URI
リクエストボディ
リクエストボディは不要です。
レスポンス(200 OK)
レスポンスは JSON です。
認証要件
Amazon Cognito が発行する JSON Web Token(JWT)を用いた認証です。Authorization ヘッダーに有効な Bearer トークンが必要です。
例外処理
例外時のステータスコードは次のとおりです。
| 説明 | ステータスコード | ステータス名 |
|---|---|---|
| トークンが欠落または無効 | 401 | Unauthorized |
| サーバ内部エラー | 500 | Internal Server Error |
処理フロー
シーケンス図
sequenceDiagram
participant Client
participant Middleware as Protected Route Middleware
participant API as Hono Router
participant Service as Auth Service
participant Cognito as AWS Cognito
participant DB as PostgreSQL Database
Client->>Middleware: POST /api/v1/auth/logout
Middleware->>Middleware: Extract Bearer token
Middleware->>Cognito: Verify JWT token
alt Token Valid
Cognito-->>Middleware: Token verified
Middleware-->>API: Auth info (sub, token)
API->>Service: logout(access_token)
Service->>Cognito: globalSignOut(access_token)
Cognito-->>Service: Signed out
Service->>DB: Revoke session by token hash
DB-->>Service: Session revoked
Service-->>API: Success
API-->>Client: 200 OK { message }
else Token Invalid
Cognito-->>Middleware: Verification failed
Middleware-->>Client: 401 Unauthorized
end
Routes 層
ルーティングはここで行います。ハンドラ実行前に protectedRoute ミドルウェアが JWT を検証します。ハンドラはアクセストークンを取り出し、認証サービスに委譲します。
ソース: src/routes/v1/auth.ts:66
Services 層
ビジネスロジックの説明です。Cognito のグローバルサインアウトでトークンを無効化し、データベースのセッションを失効として記録します。
ソース: src/services/auth.ts
Repositories 層
データベースおよび外部サービスへのアクセスです。トークンハッシュによるセッション検索とセッション失効を扱います。
ソース: src/repositories/
セキュリティ
- ハンドラ実行前に
protectedRouteミドルウェアがトークンを検証します - Cognito とデータベースの両方でセッションが無効化されます
- ログアウト後、トークンは全デバイスで利用できなくなります