Skip to main content

Authentication

Overview

The VX API operates with two distinct authentication planes:

PlaneWhoEndpointsMethod
RP AuthenticationRelying PartiesOIDC/PAR endpointsOAuth2 client authentication
Tenant ManagementTenant operatorsOnboarding/management endpointsJWT Bearer token

Relying Party Authentication

RPs authenticate using standard OAuth2 client authentication at the PAR endpoint. Bearer tokens are not used.

Endpoint

POST /oidc/as/par
Content-Type: application/x-www-form-urlencoded

Supported Methods

Exactly one of the following methods must be used per request.


1. client_secret_basic

Credentials are base64-encoded and passed in the Authorization header.

Authorization: Basic base64(client_id:client_secret)

Example:

POST /oidc/as/par HTTP/1.1
Authorization: Basic bXlfY2xpZW50OnNlY3JldA==
Content-Type: application/x-www-form-urlencoded

response_type=code&scope=openid&redirect_uri=https://rp.example.com/cb&...

2. client_secret_post

Credentials are passed as form parameters in the request body.

POST /oidc/as/par HTTP/1.1
Content-Type: application/x-www-form-urlencoded

client_id=my_client&client_secret=secret&response_type=code&scope=openid&...

3. private_key_jwt

The RP signs a JWT with its private EC key and sends it as a client assertion. No shared secret is required.

Form parameters:

ParameterValue
client_assertion_typeurn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertionSigned JWT (see below)
client_idThe RP's client identifier

JWT claims:

ClaimDescription
subMust equal client_id
issMust equal client_id
audMust be the server issuer URL, /oidc/token, or /oidc/as/par
jtiUnique token identifier
iatIssued-at time
expExpiration time

Supported algorithms:

AlgorithmCurve
ES256P-256
ES384P-384
ES512P-521

The public key must be registered during RP onboarding (RequestObjectJwk field).

Example:

POST /oidc/as/par HTTP/1.1
Content-Type: application/x-www-form-urlencoded

client_id=my_client
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...
&response_type=code
&scope=openid

Public Endpoints

The following endpoints require no authentication:

EndpointDescription
GET /.well-known/openid-configurationOIDC discovery metadata
GET /.well-known/jwks.jsonServer public keys