diff --git a/.github/upstream-projects.yaml b/.github/upstream-projects.yaml index b6a8b797..481674d5 100644 --- a/.github/upstream-projects.yaml +++ b/.github/upstream-projects.yaml @@ -35,7 +35,7 @@ projects: - id: toolhive repo: stacklok/toolhive - version: v0.26.0 + version: v0.26.1 # toolhive is a monorepo covering the CLI, the Kubernetes # operator, and the vMCP gateway. It also introduces cross- # cutting features that land in concepts/, integrations/, diff --git a/docs/toolhive/reference/authz-policy-reference.mdx b/docs/toolhive/reference/authz-policy-reference.mdx index ca3d29af..b1ca599f 100644 --- a/docs/toolhive/reference/authz-policy-reference.mdx +++ b/docs/toolhive/reference/authz-policy-reference.mdx @@ -266,9 +266,9 @@ context.arg_location == "New York" ## Group membership -ToolHive automatically extracts group claims from JWT tokens and creates -`THVGroup` parent entities for the principal. This lets you write group-based -policies using Cedar's `in` operator. +ToolHive automatically extracts group claims from JWT tokens and creates parent +entities for the principal. This lets you write group-based policies using +Cedar's `in` operator. The parent entity type is `THVGroup`. ### How groups are resolved diff --git a/static/api-specs/toolhive-api.yaml b/static/api-specs/toolhive-api.yaml index 570e4d63..6d973f5c 100644 --- a/static/api-specs/toolhive-api.yaml +++ b/static/api-specs/toolhive-api.yaml @@ -405,6 +405,51 @@ components: This is required and must match a configured upstream provider name. type: string type: object + github_com_stacklok_toolhive_pkg_authserver.DCRUpstreamConfig: + description: |- + DCRConfig enables RFC 7591 Dynamic Client Registration against the + upstream authorization server. When set, the client credentials are + obtained at runtime rather than being pre-provisioned via ClientID / + ClientSecretFile / ClientSecretEnvVar, and ClientID must be left empty. + Mutually exclusive with ClientID. + properties: + discovery_url: + description: |- + DiscoveryURL is the RFC 8414 / OIDC Discovery URL from which the + registration_endpoint is resolved at runtime. Mutually exclusive with + RegistrationEndpoint. + type: string + initial_access_token_env_var: + description: |- + InitialAccessTokenEnvVar is the name of an environment variable + containing the RFC 7591 initial access token. Mutually exclusive with + InitialAccessTokenFile. + type: string + initial_access_token_file: + description: |- + InitialAccessTokenFile is the path to a file containing the RFC 7591 + initial access token presented to the registration endpoint. Mutually + exclusive with InitialAccessTokenEnvVar. Both may be omitted for open + registration endpoints. + type: string + registration_endpoint: + description: |- + RegistrationEndpoint is the RFC 7591 registration endpoint URL used + directly, bypassing discovery. Mutually exclusive with DiscoveryURL. + type: string + software_id: + description: |- + SoftwareID is the RFC 7591 "software_id" registration metadata value, + identifying the client software independent of any particular + registration instance. + type: string + software_statement: + description: |- + SoftwareStatement is the RFC 7591 "software_statement" JWT asserting + metadata about the client software, signed by a party the authorization + server trusts. + type: string + type: object github_com_stacklok_toolhive_pkg_authserver.OAuth2UpstreamRunConfig: description: |- OAuth2Config contains OAuth 2.0-specific configuration. @@ -423,8 +468,10 @@ components: endpoint. type: string client_id: - description: ClientID is the OAuth 2.0 client identifier registered with - the upstream IDP. + description: |- + ClientID is the OAuth 2.0 client identifier registered with the upstream IDP. + Mutually exclusive with DCRConfig: when DCRConfig is set, ClientID is obtained + at runtime via RFC 7591 Dynamic Client Registration and must be left empty. type: string client_secret_env_var: description: |- @@ -436,6 +483,8 @@ components: ClientSecretFile is the path to a file containing the OAuth 2.0 client secret. Mutually exclusive with ClientSecretEnvVar. Optional for public clients using PKCE. type: string + dcr_config: + $ref: '#/components/schemas/github_com_stacklok_toolhive_pkg_authserver.DCRUpstreamConfig' redirect_uri: description: |- RedirectURI is the callback URL where the upstream IDP will redirect after authentication.