You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4e06c27
Browse filesBrowse the repository at this point in the historyBrowse files
controlplane: make the OIDC re-auth cadence an operator decision
One interactive OIDC login produced a session refreshable for a
hardcoded 90 days: refresh needs only the previous biscuit and the node
key's challenge signature, never the issuer, so an identity disabled at
the provider kept its seat until the constant said otherwise. Since
enrollment binding checks (fc9636b) and identity bans (8ae3063), the
mesh has its own revocation levers, but how long the issuer's word is
trusted without renewal is a policy trade-off, not a constant: shorter
keeps the provider authoritative for offboarding, longer keeps headless
nodes unattended.
Add --oidc-session-ttl (default unchanged, 90 days) and cap the
enrollment biscuit at the session boundary, as refresh already did.
Pinned by TestOIDCSessionTTLIsConfigurable: the record and first
biscuit honor the configured TTL, and a lapsed session refuses a
correctly signed refresh with 401.
Part of GHSA-cgmg-9xf6-rrgw (claim: 1h OIDC token yields a 90-day mesh
credential).
rootCmd.Flags().DurationVar(&biscuitTTL, "biscuit-ttl", api.BiscuitTokenTTL, "Lifespan minted into every issued Biscuit's expiration fact. Capped to the OIDC token's own expiry when shorter.")
161
+
rootCmd.Flags().DurationVar(&oidcSessionTTL, "oidc-session-ttl", api.OIDCSessionTTL, "How long an OIDC enrollment stays refreshable before the identity must re-authenticate with the OIDC provider. Shorter values keep the provider authoritative for offboarding at the cost of more frequent interactive re-enrollment.")
159
162
rootCmd.Flags().StringVar(&adminTokenPath, "admin-token-path", "", "Path to file containing the token for authenticating policy REST API requests (or env SAM_ADMIN_TOKEN)")
160
163
rootCmd.Flags().BoolVar(&insecureSkipTLSVerify, "insecure-skip-tls-verify", false, "Skip TLS verification for OIDC providers")
Copy file name to clipboardExpand all lines: internal/controlplane/config.go
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -35,6 +35,7 @@ type Options struct {
35
35
InsecureSkipTLSVerifybool
36
36
BiscuitTimeout time.Duration
37
37
BiscuitTTL time.Duration// Lifespan minted into every issued Biscuit's expiration() fact; defaults to api.BiscuitTokenTTL
38
+
OIDCSessionTTL time.Duration// How long an OIDC enrollment stays refreshable before the identity must re-authenticate interactively; defaults to api.OIDCSessionTTL
38
39
AdminTokenstring// Optional: administrative bearer token for protecting policy and enrollment queue REST APIs
39
40
AutoApproveEnrollmentbool// If true, valid bootstrap token enrollment requests are immediately approved without administrative manual gate
Copy file name to clipboardExpand all lines: site/content/docs/user/control-plane-configuration.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,8 @@ The Control Plane is responsible for bridging user identities from trusted OIDC
23
23
|`--allowed-audiences`|*None*|`sam-mesh-audience`| Comma-separated list of allowed JWT audiences. |
24
24
|`--admin-token-path` (or env `SAM_ADMIN_TOKEN`) |*None*|*None*| File containing the secret token required in the HTTP Header `Authorization: Bearer <token>` for admin operations. |
25
25
|`--insecure-skip-tls-verify`|*None*|`false`| Set to `true` to skip certificate validation for development/testing OIDC providers. |
26
+
|`--biscuit-ttl`|*None*|`24h`| Lifespan minted into every issued Biscuit token. Capped to the OIDC token's own expiry when shorter. |
27
+
|`--oidc-session-ttl`|*None*|`2160h` (90 days) | How long an OIDC enrollment stays refreshable before the identity must re-authenticate with the OIDC provider. Shorter values keep the provider authoritative for offboarding, at the cost of more frequent interactive re-enrollment. |
0 commit comments