Authorization Server
Spring Boot · Spring Authorization Server
ログイン、同意、PKCE検証からJWT・IDトークンの発行まで、認可フローの中核を担います。
OAuth 2.1とOpenID Connectを、動くコードから理解するための検証環境。PKCE、JWT署名検証、BFFセッションの全経路を追跡できます。
/oauth2/authorize302client_idauth-client
response_typecode
code_challenge_methodS256
scopeopenid profile
01 / Architecture
3つの独立サービスをNginxのHTTPSプロキシで束ねます。それぞれの責務と境界が、コードとログから明確に見える構成です。
Spring Boot · Spring Authorization Server
ログイン、同意、PKCE検証からJWT・IDトークンの発行まで、認可フローの中核を担います。
Spring Boot · OAuth2 Resource Server
JWKSでJWT署名を検証し、必要なスコープを持つリクエストだけを安全に処理します。
Next.js App Router · BFF
PKCEとトークンをサーバー側セッションで管理し、ブラウザへ秘密情報を露出させません。
02 / Authorization flow
BFFがOAuthトランザクションとトークンを管理し、ブラウザには安全なセッションCookieだけを渡します。
BFFがcode_verifierを保存し、SHA-256からcode_challengeを生成します。
Authorization Serverで本人確認を行い、profileスコープへの同意を取得します。
認可コードとcode_verifierを照合し、アクセストークンとIDトークンを発行します。
Resource Serverが署名、issuer、期限、スコープを検証してAPI応答を返します。
03 / Quick start
Docker Composeがアプリケーション、データベース、HTTPSプロキシをまとめて起動します。
# リポジトリを取得
git clone git@github.com:gekal-study-auth/auth-services-workspace.git
cd auth-services-workspace
# すべてのサービスを起動
docker compose up -d --build
# ブラウザでクライアントを開く
open https://client-app.local.gekal.cn/user / password
profileを選択して認可します。
docker compose logs -fで通信を追跡できます。
Security note
ComposeではAPI本文ログが有効なため、パスワードやトークンも平文で記録されます。本番環境では本文ログを無効化し、秘密情報を外部のSecret管理へ移してください。