ここから始める
ドキュメントはトピック別に整理されていて、トピックの数は多くなります。このページは逆の向きで使います。作りたいものを探し、それを説明するページと、それを動かす example を開いてください。
example は、ソースリポジトリの examples/ ディレクトリにある、単独で動くプログラムです。example は example ビルドタグの背後でビルドされるので、それぞれのディレクトリから実行します。
sh
cd examples/01-minimal && GOWORK=off go run -tags example .初めての方は、まず 1 行目を試し、そのあとで自分の構成に合う行へ戻ってください。
目的からページを引く
| やりたいこと | 読む | 動かす |
|---|---|---|
| 自分の配備に必要なクライアント種別、プロファイル、オプションを決める | 構成を選ぶ | 選んだ行に挙げた example |
| 最小構成の OP を動かす | 最小構成 OP、最小構成の OP と RP のペア | 01-minimal |
| 既存の users テーブルと DB を使う | 既存のデータベースに組み込む、既存ユーザストアの投影、永続化(SQL) | 24-byo-userstore、53-production-sql |
| ログイン画面を SPA で作る | SPA / 対話画面のカスタマイズ。使うオプション: WithUI(op.SPAUI{...}) | 10-react-login、17-spa-composite-store |
| 自前の SPA を RP(サインインさせる側のアプリ)にする | SPA 向け CORS。使うオプション: WithStaticClients の op.PublicClient、WithCORSOrigins | 14-cors-spa |
| 自社の Web アプリへ、同意画面なしでサインインさせる(ファーストパーティの Web ログイン) | ファーストパーティ同意スキップ。使うオプション: WithFirstPartyClients と、同じクライアント ID を登録する WithStaticClients。FAPI 2.0 プロファイルとは併用できません | 40-first-party-skip-consent |
| バックエンドサービスにトークンを発行する(マシン間通信) | サービス間(client_credentials)。使うオプション: WithGrants(grant.ClientCredentials)(WithGrants は既定の grant の集合を置き換えるため、ブラウザログインも使うアプリは、grant.AuthorizationCode、grant.RefreshToken、grant.ClientCredentials のようにすべての grant を列挙します)、confidential クライアントを指定した WithStaticClients、WithScope、生成したシークレット向けの WithHighEntropyClientSecrets | 05-client-credentials |
| FAPI 2.0 の API を運用する | FAPI 2.0 Baseline。署名付きリクエストと署名付きレスポンスが必要なら FAPI 2.0 Message Signing。使うオプション: WithProfile(profile.FAPI2Baseline)、WithStaticClients。プロファイルが DPoP を有効にします。mTLS を使うなら WithFeature(feature.MTLS) を足します | 03-fapi2、50-fapi-tls-jwks |
| URL で名乗る MCP 型のパブリッククライアントを受け入れる | MCP 認可サーバ。使うオプション: WithClientIDMetadataDocuments、WithProtectedResources | なし |
| 第 2 要素やステップアップを要求する | MFA / ステップアップ | 20-mfa-totp、23-step-up、28-email-otp-recovery |
| パスワードの代わりに passkey でサインインさせる | パスワードレス passkey。使うオプション: PrimaryPasskey を指定した WithLoginFlow と WithUI(op.SPAUI{...})(組み込みの HTML ページでは WebAuthn の手順を実行できません)。フローに PrimaryPassword がなければ WithUserStore も必要です | 29-passkey |
| OP のトークンで API を守る | API を守る | 36-resource-server |
| 既存のルータの配下に OP をマウントする | ルータへのマウント | 36-resource-server |
| 本番で運用する | 本番投入チェックリスト、鍵ローテーション、ストレージの保守、クライアントオンボーディングのパターン | 53-production-sql |
| bcrypt ハッシュのユーザを、リセットなしで移す | bcrypt パスワードの移行 | 53-production-sql |
example 53 が複数の行に出てくるのは、本番に必要な部品を 1 つのプログラムにまとめているからです。ファイルから読む署名鍵と cookie 鍵、起動時の SQL スキーマの確認、SIGHUP で再読み込みするハンドラ、保持期間を過ぎたデータの掃除、bcrypt ハッシュを持つ既存の users テーブル、静的クライアントを同期するコマンド、グレースフルシャットダウンを含みます。既定は SQLite なので、DB サーバなしで動きます。実際の運用では、MySQL または PostgreSQL のドライバを開き、対応する SQL 方言(dialect)を SQL ストアに渡して切り替えます。