Authorization Code Flow実装ガイド
このドキュメントの目的
Authorization Code Flow(OAuth 2.0で最も一般的な認可フロー)の実装を理解することが目標です。
所要時間
⏱️ 約45分
前提知識
- 01. Application Plane概要
- OAuth 2.0基礎知識(RFC 6749)
Authorization Code Flowとは
3つのステップでアクセストークンを取得する認可フロー。
1. Authorization Request(認可リク エスト)
↓
2. User Authentication(ユーザー認証)
↓
3. Token Request(トークンリクエスト)
RFC 6749 Section 4.1準拠
なぜこのフローが必要なのか?
セキュリティ上の理由:
- ✅ クライアントシークレットをブラウザに露出しない
- ✅ アクセストークンがURLに含まれない(ブラウザ履歴に残らない)
- ✅ 認可コードは1回限り使用可能(リプレイ攻撃防止)
使用場面:
- Webアプリケーション(サーバーサイドで動作)
- SPAアプリケーション(PKCE併用 )
- モバイルアプリ(PKCE必須)
実装アーキテクチャ全体像
30秒で理解する全体像
HTTPリクエスト
↓
Controller (OAuthV1Api) - HTTP処理
↓
EntryService (OAuthFlowEntryService) - トランザクション管理
↓
Core層 (OAuthProtocol) - OAuth仕様準拠ロジック
↓
Repository - データ永続化
主要クラスの責務
| クラス | 役割 | 主な処理 |
|---|---|---|
| OAuthV1Api | HTTPエンドポイント | パラメータ受け取り、レスポンス返却 |
| OAuthFlowEntryService | オーケストレーション | トランザクション、イベント発行 |
| OAuthProtocol | OAuth仕様実装 | 検証、AuthorizationRequest作成、Code発行 |
| OAuthRequestHandler | リクエスト処理 | Validator、Verifier実行 |
| OAuthAuthorizeHandler | Code発行処理 | 認証確認、Authorization Code生成 |