OAuth / 認証・認可
OAuth 2.0 および認証・認可に関する学習資料をまとめています。
取り込み元: YoshimasaAsada/study
📚 コンテンツ
OAuth 2.0の基本的な認可フローを詳しく解説しています。
内容:
- OAuth 2.0の主要な登場人物(Resource Owner、Client、Authorization Server、Resource Server)
- 認可コードフロー(Authorization Code Flow)の詳細
- 各ステップで送受信されるデータの詳細
- 認可リクエスト
- 認可コード発行
- アクセストークン取得
- リソースアクセス
- トークン更新
- セキュリティポイント(state、client_secret、HTTPS、有効期限など)
- その他のOAuthフロー(Implicit Flow、Client Credentials Flow、PKCE)
図解:
- マーメイドシーケンス図で全フローを視覚化
- サーバー間でやり取りされるデータの中身を詳細に記載
外部OAuthプロバイダーでの初回認証後、独自トークンで管理する実践的な実装パターンです。
内容:
- ハイブリッド認証の概要とメリット
- 認証の信頼性とパフォーマンスの両立
- 独自の権限管理
- オフライン対応
- 詳細なフロー図
- 初回ログイン(外部OAuth認証)
- 2回目以降のアクセス(独自トークン使用)
- トークン更新
- ログアウト
- データ構造の詳細
- 外部認証コールバック
- JWTペイロード
- トークン更新リクエスト/レスポンス
- データベーススキーマ例
- usersテーブル
- sessionsテーブル
- external_auth_tokensテーブル
- セキュリティ考慮事項
- トークンの安全な保存方法
- 有効期限設定
- JWT検証フロー
- CSRF対策
- 実装例(Node.js/Express)
図解:
- マーメイドシーケンス図で全フローを視覚化
- データベース間の連携も含めた詳細な図
🎯 学習のポイント
OAuth 2.0の基礎を理解する
- まず OAuth 2.0の仕組み で基本的な認可フローを理解
- 各ステップでやり取りされるデータを把握
- セキュリティポイントを確認
実践的な実装パターンを学ぶ
- ハイブリッド認証戦略 で実務的な実装方法を学習
- データベース設計とセッション管理の方法を理解
- セキュリティベストプラクティスを習得
🔐 セキュリティのベストプラクティス
必ず守るべきこと
- ✅ すべての通信をHTTPSで行う
- ✅ client_secretは絶対に公開しない(サーバーサイドのみ)
- ✅ stateパラメータでCSRF攻撃を防ぐ
- ✅ トークンは適切な有効期限を設定
- ✅ トークンはハッシュ化してDB保存
- ✅ XSS対策(LocalStorageにAccessTokenを保存しない)
推奨事項
- 🔒 PKCE(Proof Key for Code Exchange)の使用(モバイル/SPA)
- 🔒 Refresh Tokenのローテーション
- 🔒 トークンの定期的な更新
- 🔒 セッション管理とログ記録
🚀 実装時の検討事項
外部OAuthプロバイダーの選択
- Google OAuth: 広く普及、信頼性が高い
- GitHub OAuth: 開発者向けサービスに最適
- Auth0: エンタープライズ向け、多機能
- Firebase Authentication: Googleのマネージドサービス
トークン管理戦略
- 完全に外部依存: シンプルだが柔軟性に欠ける
- ハイブリッド: 初回のみ外部認証、以降は独自トークン(推奨)
- 完全に独自実装: 最大の柔軟性だが実装コストが高い
📖 参考リソース
公式仕様
プロバイダー別ドキュメント
最終更新: 2024-11-15