Skip to content

使い方

各カードはソースリポジトリの examples/ の実行可能例にマップされています。例は example build tag の背後でビルドされ、go.sum を肥大化させたり go test ./... に巻き込まれたりしません。

sh
(cd examples/01-minimal && go run -tags example .)

各ページは、おおよそ同じ判断の流れで読めるようにしています。

  • 何を解決するか。 冒頭で option 名だけでなく、その機能が必要になる背景を説明します。
  • 使うべき状況。 複雑な機能では、その複雑さを受け入れる価値がある構成を明示します。
  • 使わない方がよい状況。 より単純な組み込み経路で足りる場合は、先にそちらへ誘導します。

初めて読む場合は 最小 OP、次に Comprehensive bundle を確認し、自分の構成にその必要が出てきた段階で下の各ページへ進むのがおすすめです。

使い方ページの読み進め方: 最小 OP から始め、必要に応じてプロファイル、UI、ストレージ、認証、拡張 grant、運用へ進む。最小 OPまず起動するProfile / flowUI / SPAStorage / AuthAdvanced grantsCrypto / 運用

リファレンスアプリケーション

番号付きの example は 1 つのオプションを 200 〜 500 行で切り出したものです。sample/ はそれとは別で、example が飛ばしている「アカウントが生まれてから使われるまで」の一連の流れを扱います。アプリケーション側が持つサインアップ、Argon2id によるパスワード保管、アプリケーション自身が実装する interaction.Driver を通したログインと同意、アカウント設定画面からの TOTP 登録、そして round-trip を完了する RP までを、op/storeadapter/composite で束ねた MySQL + Redis の上で、docker compose up 一発で動かせます。

sh
docker compose -f sample/compose.yaml up -d --build

同意画面は scope 単位の granular consent の実装例になっています。これは同梱の HTML driver が意図的に提供していない部分です。ただしテンプレートではなくデモとして扱ってください。スキーマはあくまで一組み込み側のモデルで、署名鍵と cookie key は起動のたびに再生成され、公開ホスティングを想定した作りにもなっていません。

一覧

各 example フォルダはいずれかのページに対応しています。

Bootstrap / wiring

使い方ページ
最小 OP01-minimal最小 OP
典型的な option をまとめた構成02-bundleComprehensive bundle

Profile / flow

使い方ページ
OAuth 2.1 または既存 OIDC の姿勢を宣言00-security-profileセキュリティプロファイルの宣言
OIDC と並走する純粋 OAuth 2.004-oauth2-onlyOAuth 2.0(openid なし)
FAPI 2.0 Baseline (PAR + JAR + DPoP)03-fapi2FAPI 2.0 Baseline
Service-to-service token05-client-credentialsclient_credentials
DPoP server nonce flow51-dpop-nonceDPoP nonce

UI

使い方ページ
SPA から UI を扱う16-custom-interaction10-react-login17-spa-composite-storeSPA / 対話画面のカスタマイズ
カスタム HTML 同意画面11-custom-consent-uiカスタム同意 UI
カスタム HTML アカウント選択12-custom-chooser-uiカスタムアカウント選択 UI
マルチアカウント選択(prompt=select_account13-multi-accountマルチアカウント選択
クロスオリジン SPA (CORS)14-cors-spaSPA 向け CORS
ロケール解決15-i18n-localei18n / ロケール

ストレージ

使い方ページ
実 DB に永続化06-sql-store07-mysql-storeSQL ストア
DynamoDB に永続化18-dynamodb-storeDynamoDB ストア
SQL アダプタのテーブル名を差し替える25-byo-table-namesSQL ストア § テーブル名を差し替える
ストアをゼロから実装する26-byo-store-from-scratchストアバックエンドを自前実装する
Hot / Cold 分離(Redis 揮発)08-composite-hot-cold09-redis-volatileHot / Cold 分離

スコープ / claim

使い方ページ
Public / Internal スコープ分離60-scopes-public-privatePublic / Internal スコープ
OIDC §5.5 claims リクエスト61-claims-requestClaims リクエスト

認証

使い方ページ
MFA、captcha、ステップアップ20-mfa-totp21-risk-based-mfa22-login-captcha23-step-upMFA / ステップアップ
Email OTP、recovery code、passkey28-email-otp-recovery29-passkeyMFA / ステップアップ
既存ユーザストアの投影24-byo-userstore既存ユーザストアの投影

Advanced grants

使い方ページ
Custom grant_type URN30-custom-grantCustom Grant
Device Code (RFC 8628)31-device-code-cliDevice Code
CIBA poll mode32-ciba-posCIBA
Token Exchange (RFC 8693)33-token-exchange-delegationToken Exchange

Crypto / subject

使い方ページ
Pairwise subject(OIDC Core §8.1)34-pairwise-saasPairwise subject
Encrypted id_token(JWE)35-encrypted-id-tokenJWE 暗号化

ガバナンス

使い方ページ
ファーストパーティ同意スキップ40-first-party-skip-consentファーストパーティ同意スキップ
Dynamic Client Registration(RFC 7591)41-dynamic-registrationDynamic Client Registration
Back-Channel Logout 1.042-back-channel-logoutBack-Channel Logout

運用

使い方ページ
Prometheus メトリクス52-prometheus-metricsPrometheus メトリクス
FAPI TLS ポリシーと public JWKS の読み込み50-fapi-tls-jwksFAPI 2.0 Baseline

番号体系

例フォルダはトピック別にグループ化されています(時系列ではありません)。

トピック
00–09bootstrap、core flow、profile、storage adapter
10–19UI / browser integration(SPA、consent、chooser、CORS、i18n)
20–29MFA、認証ルール、user-store projection
30–39advanced grant、subject mode、encrypted token、federation
40–49governance: first-party、DCR、back-channel logout
50–59operations: FAPI helpers、metrics、tracing、DPoP nonce
60–69scope、claim、compliance-adjacent example

ソースリポジトリの README が一次インベントリです。