Skip to content

Options 索引

公開されている op.With* オプションを、触る対象のレイヤごとに分類しました。先頭の 4 つは構築時に必須で、それ以外はデフォルトを上書きする任意オプションです。

このページの読み方

オプション名のリンクから詳細ページに飛べます。「セクション」列は、そのオプションが動かす discovery / endpoint の表面です。「デフォルト」が空欄のオプションは組み込みの初期値を持っておらず、明示的に渡したときだけ機能が有効になります。

必須(op.New がこの 4 つ無しでは起動を拒否します)

Optionセクションデフォルト
WithIssuerstringdiscovery issuer / JWT iss / cookie scope
WithStoreop.Storeすべての永続サブストア
WithKeysetop.Keyset(P-256 / ES256)JWKS / JWS 署名
WithCookieKey / WithCookieKeys32 byte の鍵session / CSRF cookie の AES-256-GCM

プロファイル / feature / grant

Optionセクションデフォルト
WithProfileprofile.Profileセキュリティプロファイルを 1 行で有効化(FAPI 2.0 Baseline / Message Signing)なし
WithFeaturefeature.Flag(1 呼び出しで 1 つ、繰り返し可)PAR / DPoP / mTLS / JAR / introspect / revoke を個別に有効化控えめなデフォルト
WithGrants...grant.Type(可変長)/token で受け付ける grant を限定authorization_coderefresh_token
WithScopeop.Scope(1 呼び出しで 1 つ。op.PublicScope / op.InternalScope コンストラクタを利用)scope カタログを拡張openidprofileemailoffline_access
WithOpenIDScopeOptional(引数なし)OAuth2 単独(scopeopenid を含まない)を許容必須
WithStrictOfflineAccess(引数なし)refresh_token の発行を offline_access の同意取得時に限定lax(openid granted で発行)

クライアント / 登録

Optionセクションデフォルト
WithStaticClients...op.ClientSeed(op.PublicClient / op.ConfidentialClient / op.PrivateKeyJWTClient を渡す)起動時にクライアントレジストリを初期投入
WithFirstPartyClients...string(client ID)ファーストパーティ同意スキップの対象なし
WithDynamicRegistrationop.RegistrationOption/register をマウント(RFC 7591 / 7592)無効

認証 / LoginFlow

Optionセクションデフォルト
WithLoginFlowop.LoginFlowStep + Rule の宣言的 DAG(推奨)なし
WithAuthenticators...op.Authenticator(可変長)低レイヤ API(WithLoginFlow とは排他)なし
WithInteractioninteraction.Driver対話レイヤのトランスポート全体を差し替え(HTML ドライバ / SPA ドライバ / 独自実装)同梱の HTML ドライバ
WithInteractions...op.Interaction(可変長)ドライバの上に重ねる非クレデンシャルプロンプト(T&C、KYC など)consent のみ
WithCaptchaVerifierop.CaptchaVerifierStepCaptcha の上流 captcha プロバイダなし
WithRiskAssessorop.RiskAssessorRuleRiskLoginContext.RiskScore の供給元なし
WithLoginAttemptObserverop.LoginAttemptObserverRuleAfterFailedAttempts 用の失敗回数集計なし
WithMFAEncryptionKey / WithMFAEncryptionKeys32 byte の鍵TOTP シークレットを AES-256-GCM で保存時暗号化なし
WithPasskeyAttestation(preference string, aaguids []string)("none" / "direct")WebAuthn attestation の受け入れ方針と AAGUID 許可リスト"none"
WithACRPolicyop.ACRPolicy(interface)ステップアップの acr / aal マッピングidentity

UI

Optionセクションデフォルト
WithSPAUIop.SPAUI(構造体: LoginMount / ConsentMount / LogoutMount / StaticDir)既定の HTML ドライバを SPA 駆動の JSON ドライバへ切り替え(フレームワーク不問)HTML
WithConsentUIop.ConsentUI(*html/template.Template をラップ)既定の同意 HTML を上書き同梱
WithChooserUIop.ChooserUI(*html/template.Template をラップ)マルチアカウントチューザの HTML を上書き同梱
WithCORSOrigins...string厳格 CORS の許可リスト(未指定なら redirect URI から自動導出)自動導出
WithDefaultLocaleop.Locale(BCP 47 タグ)ui_locales が無いリクエスト時の既定ロケール"en"
WithLocaleop.LocaleBundle(1 呼び出しで 1 つ、繰り返し可)consent / chooser UI 用のロケール別メッセージバンドルを登録英語のみ

トークン

Optionセクションデフォルト
WithAccessTokenFormatop.AccessTokenFormat(AccessTokenFormatJWT / AccessTokenFormatOpaque)OP 全体で JWT / opaque を選択JWT
WithAccessTokenFormatPerAudiencemap[string]op.AccessTokenFormat(RFC 8707 リソース → 形式)audience ごとに形式を切り替えOP 全体の値
WithAccessTokenRevocationStrategyop.AccessTokenRevocationStrategy(RevocationStrategyGrantTombstone / RevocationStrategyJTIRegistry / RevocationStrategyNone)発行済 JWT access token の失効ポリシーgrant tombstone
WithAccessTokenTTLtime.Durationaccess token の寿命5 分
WithRefreshTokenTTLtime.Duration通常の refresh token の寿命30 日
WithRefreshTokenOfflineTTLtime.Durationoffline_access granted 時の refresh token の寿命90 日
WithRefreshGracePeriodtime.Duration(-1 で無効化)ローテーション後の猶予期間60 秒
WithDPoPNonceSourceop.DPoPNonceSource(interface)サーバ供給の DPoP nonce ストア(op.NewInMemoryDPoPNonceSource が同梱実装)なし

Discovery / endpoint

Optionセクションデフォルト
WithEndpointsop.Endpoints(構造体: 各エンドポイントのパス上書き)各エンドポイントのパスを上書き仕様の既定
WithMountPrefixstring(/ で始める。ルートに置くなら /)issuer 直下にプリフィックスを設けてマウント/oidc
WithClaimsSupported...string(可変長)discovery の claims_supported を埋める自動導出
WithClaimsParameterSupportedboolclaims_parameter_supported を切り替えfalse
WithJWKSRotationActivefunc() boolローテーション期間中だけ JWKS の Cache-Control を短期キャッシュに切り替える述語常に長期キャッシュ

mTLS / プロキシ / ネットワーク

Optionセクションデフォルト
WithMTLSProxy(headerName string, trustedCIDRs []string)エッジでヘッダ経由の mTLS を終端なし
WithTrustedProxies...string(CIDR)X-Forwarded-* / Forwarded から実クライアント IP を解決なし
WithAllowLocalhostLoopback(引数なし)開発用に http://127.0.0.1 issuer を許容厳格(HTTPS のみ)
WithAllowPrivateNetworkJWKS(引数なし)RFC 1918 上の client JWKS を許容(テスト専用)拒否
WithAllowPrivateNetworkJAR(引数なし)RFC 1918 上の request_uri を許容(テスト専用)拒否
WithBackchannelAllowPrivateNetworkboolRFC 1918 上の backchannel_logout_uri を許容(テスト専用)false
WithBackchannelLogoutHTTPClient*http.ClientBack-Channel ログアウト用の HTTP クライアントデフォルト
WithBackchannelLogoutTimeouttime.DurationRP ごとの fan-out タイムアウト5 秒

観測

Optionセクションデフォルト
WithLogger*slog.Logger構造化された運用ログ(handler は redaction ミドルウェアで包まれる)discard
WithAuditLogger*slog.Loggeraudit イベント専用のロガーWithLogger を継承
WithPrometheus*prometheus.RegistryOP のカウンタを呼び出し側のレジストリに登録(/metrics はマウントしない)なし

運用方針

Optionセクションデフォルト
WithSessionDurabilityPostureop.SessionDurabilityPostureback-channel logout の audit に方針を注釈(SOC 用途)volatile
WithClockop.Clock時刻ソース(テスト用に注入)time.Now

ここでは設定しないもの

意図的にオプションにしていない項目です。理由は各リンク先の設計判断を参照してください。

  • JOSE algorithm 許可リストRS256 / PS256 / ES256 / EdDSA で固定です。これを広げるフラグはありません。セキュリティ方針 §2 を参照。
  • PKCE methodS256 のみ。plain は構造的に拒否されます。
  • Cookie scheme__Host- プリフィックス、AES-256-GCM、double-submit CSRF が常に有効です。必須オプション § WithCookieKey を参照。
  • 乱数源crypto/rand のみ。math/rand は lint で禁止しています。
  • /metrics のマウント — ライブラリではなくルーター側の責務です。ユースケース: Prometheus を参照。

このリストの裏取り

カタログはライブラリ本体から grep で生成しています。自分で監査するには:

sh
git clone https://github.com/libraz/go-oidc-provider.git
cd go-oidc-provider
grep -rhE '^func With[A-Z]' op/options.go op/options_authn.go \
  op/options_protocol.go op/options_fapi_proxy.go op/registration.go \
  op/access_token_revocation.go op/i18n.go \
  | sort -u

関数名と受け取る型のシグネチャが正典であり、各関数の godoc コメントが契約の正本です。