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
* Update stacklok/toolhive to v0.27.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Refresh reference assets for toolhive v0.27.2
* Document baselineClientScopes for embedded auth server
* Polish baselineClientScopes editorial pass
* Fix baselineClientScopes validation description
Clarify that when scopesSupported is omitted, the embedded auth server
validates baselineClientScopes against its default scope set
(openid, profile, email, offline_access) rather than failing to start.
This behavior shipped in toolhive v0.27.2 as part of #5233.
---------
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Jakub Hrozek <jakub@stacklok.com>
| `issuer` | HTTPS URL identifying this authorization server. Appears in the `iss` claim of issued JWTs. |
550
-
| `signingKeySecretRefs` | References to Secrets containing JWT signing keys. First key is active; additional keys support rotation. |
551
-
| `hmacSecretRefs` | References to Secrets with symmetric keys for signing authorization codes and refresh tokens. |
552
-
| `tokenLifespans` | Configurable durations for access tokens (default: 1h), refresh tokens (default: 168h), and auth codes (default: 10m). |
553
-
| `upstreamProviders` | Configuration for upstream identity providers. MCPServer and MCPRemoteProxy support one provider; VirtualMCPServer supports multiple providers for sequential authentication. |
| `issuer` | HTTPS URL identifying this authorization server. Appears in the `iss` claim of issued JWTs. |
550
+
| `signingKeySecretRefs` | References to Secrets containing JWT signing keys. First key is active; additional keys support rotation. |
551
+
| `hmacSecretRefs` | References to Secrets with symmetric keys for signing authorization codes and refresh tokens. |
552
+
| `tokenLifespans` | Configurable durations for access tokens (default: 1h), refresh tokens (default: 168h), and auth codes (default: 10m). |
553
+
| `upstreamProviders` | Configuration for upstream identity providers. MCPServer and MCPRemoteProxy support one provider; VirtualMCPServer supports multiple providers for sequential authentication. |
554
+
| `baselineClientScopes` | Optional list of OAuth 2.0 scopes merged into every DCR-registered client's scope set. Use this when MCP clients register with a narrowed `scope` field but then request wider scopes at `/oauth/authorize`. See [Baseline scopes for DCR clients](../concepts/embedded-auth-server.mdx#baseline-scopes-for-dcr-clients). |
554
555
555
556
**Step 5: Create the MCPOIDCConfig and MCPServer resources**
Copy file name to clipboardExpand all lines: static/api-specs/crds/mcpexternalauthconfigs.schema.json
+11Lines changed: 11 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -132,6 +132,17 @@
132
132
"pattern": "^https?://[^\\s?#]+[^/\\s?#]$",
133
133
"type": "string"
134
134
},
135
+
"baselineClientScopes": {
136
+
"description": "BaselineClientScopes is a baseline set of OAuth 2.0 scopes guaranteed to be\nincluded in every client registration. The embedded auth server unions these\nscopes into the registered set returned by RFC 7591 Dynamic Client\nRegistration, so a client that narrows the `scope` field at /oauth/register\ncan still request the baseline scopes at /oauth/authorize. All values must\nbe present in the upstream-derived scopesSupported set; the auth server\nfails to start if any value is missing.\n\nSecurity: every client registered via /oauth/register will gain the\nability to request these scopes at /oauth/authorize, regardless of what\nthe client itself requested. Keep the baseline narrow (typically\n\"openid\" and \"offline_access\"). Adding a privileged scope here — e.g.\n\"admin:read\" — would grant it to every DCR-registered client, including\npublic clients like Claude Code, Cursor, and VS Code.",
137
+
"items": {
138
+
"minLength": 1,
139
+
"pattern": "^[\\x21\\x23-\\x5B\\x5D-\\x7E]+$",
140
+
"type": "string"
141
+
},
142
+
"maxItems": 10,
143
+
"type": "array",
144
+
"x-kubernetes-list-type": "atomic"
145
+
},
135
146
"hmacSecretRefs": {
136
147
"description": "HMACSecretRefs references Kubernetes Secrets containing symmetric secrets for signing\nauthorization codes and refresh tokens (opaque tokens).\nCurrent secret must be at least 32 bytes and cryptographically random.\nSupports secret rotation via multiple entries (first is current, rest are for verification).\nIf not specified, an ephemeral secret will be auto-generated (development only -\nauth codes and refresh tokens will be invalid after restart).",
Copy file name to clipboardExpand all lines: static/api-specs/crds/virtualmcpservers.schema.json
+11Lines changed: 11 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -23,6 +23,17 @@
23
23
"pattern": "^https?://[^\\s?#]+[^/\\s?#]$",
24
24
"type": "string"
25
25
},
26
+
"baselineClientScopes": {
27
+
"description": "BaselineClientScopes is a baseline set of OAuth 2.0 scopes guaranteed to be\nincluded in every client registration. The embedded auth server unions these\nscopes into the registered set returned by RFC 7591 Dynamic Client\nRegistration, so a client that narrows the `scope` field at /oauth/register\ncan still request the baseline scopes at /oauth/authorize. All values must\nbe present in the upstream-derived scopesSupported set; the auth server\nfails to start if any value is missing.\n\nSecurity: every client registered via /oauth/register will gain the\nability to request these scopes at /oauth/authorize, regardless of what\nthe client itself requested. Keep the baseline narrow (typically\n\"openid\" and \"offline_access\"). Adding a privileged scope here — e.g.\n\"admin:read\" — would grant it to every DCR-registered client, including\npublic clients like Claude Code, Cursor, and VS Code.",
28
+
"items": {
29
+
"minLength": 1,
30
+
"pattern": "^[\\x21\\x23-\\x5B\\x5D-\\x7E]+$",
31
+
"type": "string"
32
+
},
33
+
"maxItems": 10,
34
+
"type": "array",
35
+
"x-kubernetes-list-type": "atomic"
36
+
},
26
37
"hmacSecretRefs": {
27
38
"description": "HMACSecretRefs references Kubernetes Secrets containing symmetric secrets for signing\nauthorization codes and refresh tokens (opaque tokens).\nCurrent secret must be at least 32 bytes and cryptographically random.\nSupports secret rotation via multiple entries (first is current, rest are for verification).\nIf not specified, an ephemeral secret will be auto-generated (development only -\nauth codes and refresh tokens will be invalid after restart).",
0 commit comments