Endpoint Authorizers Secure Your Deployed Models
proxiML now supports Endpoint Authorizers, letting you control access to your deployed ML serving endpoints. Choose between API Key authentication for simple shared-secret access or OIDC (OpenID Connect) for enterprise-grade JWT-based authentication with configurable issuers, audiences, and required claims.
How It Works
When you deploy an endpoint job, you can optionally attach an authorizer that requires callers to authenticate before the endpoint serves requests. Without an authorizer, your endpoint remains open. With one configured, every incoming request is validated before it reaches your model.
Two authorizer types are available:
API Key -- Each authorized client is assigned a client ID and a secret key. Callers present their key (e.g., via an Authorization: Bearer header) and the endpoint validates it against the configured list. You can configure up to 10 API keys per endpoint.
OIDC -- For integration with identity providers like Azure AD, Auth0, or Okta. Configure the OIDC issuer URL, expected audience, signing algorithms (e.g., RS256), JWKS URI for token verification, and optionally required JWT claims that must be present for authorization.
Authorizers can be set when creating an endpoint job and edited at any time after deployment, without restarting the endpoint.
Using the Web Platform
When creating or editing an endpoint job, find the Authorizer section in the endpoint configuration. Select the authorizer type from the dropdown:
- None -- Leaves the endpoint open (unauthenticated).
- API Key -- Add one or more key entries, each with a
Client IDlabel and a secretKeyvalue. - OIDC -- Configure the
Issuer,Audience,Algorithms, and optionally theJWKS URIandRequired Claims(key-value pairs that must match the JWT).
Using the SDK
To create an endpoint with an API Key authorizer:
job = await proximl.jobs.create(
name="Secure Endpoint",
type="endpoint",
gpu_type="rtx2070s",
gpu_count=1,
endpoint=dict(
start_command="python serve.py",
authorizer=dict(
type="api_key",
keys=[
dict(client_id="my-client", key="secret-key-value"),
],
),
),
)
To create an endpoint with an OIDC authorizer:
job = await proximl.jobs.create(
name="OIDC Endpoint",
type="endpoint",
gpu_type="rtx2070s",
gpu_count=1,
endpoint=dict(
start_command="python serve.py",
authorizer=dict(
type="oidc",
oidc={
"issuer": "https://login.microsoftonline.com/YOUR-TENANT-ID/v2.0",
"audience": "api://YOUR-CLIENT-ID",
"jwks_uri": "https://login.microsoftonline.com/YOUR-TENANT-ID/discovery/v2.0/keys",
"algorithms": ["RS256"],
"required_claims": {"scp": ["api.access"]},
},
),
),
)