Bind an external identity to a tenant's actor (platform)

Grants one external workload identity — an issuer plus the sub claim
its tokens carry — the right to authenticate as one of this tenant's Cryptographic
Actors. This is the act that completes an onboarding: until it exists, a token from
a trusted issuer authenticates nothing.

The issuerId must be one THIS TENANT trusts — either a declaration

of its own or a deployment-scoped one every tenant inherits. An id it cannot reach
answers 404, including one belonging to another tenant, answered identically.

The subject is compared verbatim and case-sensitively against the

token's sub. Take it from the machine-to-machine application in the
external IdP rather than typing it: Auth0 emits <clientId>@clients,
Keycloak the service-account user id, and a SPIFFE-shaped issuer a full
spiffe:// URI.

🔴 No actor is created. A binding naming an actor that does not exist in

this tenant is a 404 and writes nothing — on this plane most of all, since creating
it would be a platform operator provisioning a customer's principal as a side effect
of granting an external identity access to it.

Not entitlement-gated. The operator is the party that sells the edition.

The audit row is filed under the tenant in the path, with actorPlane = PLATFORM and the operator's own username, so the customer's

own audit query returns it.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
uuid
required
uuid
required
Body Params

The binding. Two fields and no more: the actor is the route, and tenantId is server-derived. An actorId in the body could disagree with the one in the path, which is a second authority on which actor is being granted access.

A binding from one external identity — an issuer and the sub claim its tokens carry — to one Cryptographic Actor. Carries no credential: the workload keeps the one its own identity provider already issues it.

uuid
required

The trusted issuer whose tokens this binding accepts. It must be one this tenant trusts: either a declaration of its own, or a deployment-scoped one every tenant inherits. An id this tenant cannot reach answers 404 — including one belonging to another tenant, which is answered identically.

string
required
length between 0 and 255

The sub claim value the issuer puts in that workload's tokens, compared verbatim and case-sensitively. Take it from the machine-to-machine application in the external IdP rather than typing it: Auth0 emits <clientId>@clients, Keycloak the service-account user id, and a SPIFFE-shaped issuer a full spiffe:// URI.

Compared verbatim, so it is stored verbatim: nothing here is trimmed, normalised or rewritten. A value carrying a control, line-breaking or bidirectional-formatting character is therefore REFUSED rather than cleaned up — a rewritten subject would match no token, and two subjects differing only in such a character would become one indistinguishable audit record.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json
application/problem+json