Skip to content

ここから始める ​

ドキュメントはトピック別に整理されていて、トピックの数は多くなります。このページは逆の向きで使います。作りたいものを探し、それを説明するページと、それを動かす 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、WithCORSOrigins14-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、生成したシークレット向けの WithHighEntropyClientSecrets05-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 ストアに渡して切り替えます。

目的が表にないとき ​

  • ユースケースは、すべての example と対応するページを、トピック別に並べています。
  • ガイドは、これから設定するオプションの背景として、OAuth と OIDC を 3 つの役割から説明します。
  • 必須オプションは、op.New が起動を拒否する条件を示します。
  • リファレンスは、オプションごとの一覧です。