OAuth 2.0 / OpenID Connect(OIDC)の仕組みを、実際にコードを書きながら学ぶためのハンズオンプロジェクト
OAuthクライアントの実装から始め、最終的には認証サーバー・OpenID Providerまでを自分で実装することを目標としている
Stage 3 まで完了
現在は React + FastAPI による BFF(Backend for Frontend)構成まで実装している
開発環境の構築と、OAuthを学ぶための基本的なWebアプリケーションを作成。
GitHubをOAuth 2.0の認可サーバーとして利用し、Authorization Code Flowを実装。
- Authorization Code Flow
stateによるCSRF対策- PKCE
- Access Tokenの取得
- GitHub APIへのアクセス
GoogleをOpenID Providerとして利用し、OAuth 2.0に加えてOpenID Connectを実装。
- OpenID Connect
- ID Token
nonce- JWT
- JWKS
kid- ID Tokenの署名検証
iss/aud/expの検証
FrontendをReactに移行し、FastAPIをBFFとして利用する構成を実装。
- React + TypeScript + Vite
- FastAPI JSON API
- CORS
credentials: "include"- Session / HttpOnly Cookie
/api/me/api/logout- GitHub / Googleの認証情報をBackend側で処理
- FrontendにAccess Token / ID Tokenを直接公開しない構成
OAuth 2.0 Authorization Serverを自作。
自作Authorization ServerをOpenID Connect Providerへ拡張。
Discovery DocumentやJWKS Endpointなどを実装し、OAuth / OIDCの仕組みをさらに理解。
Stage 3時点では、ReactとFastAPIを分離したBFF構成になっています。
┌──────────────────────┐
│ React / TypeScript │
│ localhost:5173 │
└──────────┬───────────┘
│
│ JSON API
│ credentials: include
↓
┌──────────────────────┐
│ FastAPI │
│ localhost:8000 │
│ BFF │
└──────────┬───────────┘
│
┌───┴────┐
↓ ↓
GitHub Google
OAuth 2.0 OIDC