Skip to content

ユースケース — 総合バンドル

01-minimal は動く最小の OP、02-bundle本番形 の OP 実装が end-to-end でどう見えるかを示します — login flow、MFA、captcha、リスク、scope カタログ、信頼 proxy 正規化、推奨 logger まで。

ソース: examples/02-bundle/main.go

含まれるレイヤー

レイヤーオプション / 型
ログインop.LoginFlow + op.PrimaryPassword
MFAop.RuleAlways(op.StepTOTP{...})
Captchaop.RuleAfterFailedAttempts(n, op.StepCaptcha{...})
リスクop.RuleRisk(threshold, step) + LoginFlow.Risk の assessor
クライアントop.WithStaticClients(...)(typed seed)
Scopeop.WithScope(op.PublicScope(...)) / op.WithScope(op.InternalScope(...)) を scope ごとに
プロファイルop.WithProfile(...)(既定はコメントアウト、FAPI を見たければオン)
Proxyop.WithTrustedProxies(cidrs ...)
ロガーop.WithLogger(slog.Logger)

チェックリストとして使う

例は意図的に長めです — コピーして不要な部分を削るための「ひな型」として使うのが目的です。実装をゼロから書きそうになったら、まず 02-bundle を見て見落としがないか確認してください。

sh
go run -tags example ./examples/02-bundle

何を確認したいときに見るか

質問見るべき箇所
01-minimal から最小限増やすなら?LoginFlow ブロック + WithStaticClients
MFA + リスクをひとつのフローに乗せたいRules スライス
discovery の scopes_supported の整え方WithScope(PublicScope(...)) の連鎖
推奨される slog logger の形WithLogger
FAPI 2.0 にするには?WithProfile 行のコメントアウトを外す

続きはこちら