PingAuthorize Talk to us

ID Partners · for PingAuthorize

Standards-based authorisation on the PingAuthorize you already run.

Extensions that let PingAuthorize answer the OpenID AuthZEN API directly, know which workload is asking through SPIFFE mTLS and queue evaluation events for a Shared Signals receiver - and a reference design that holds a chain of AI agents to the purpose the customer gave the first one. All of it installs into, or decides through, the PingAuthorize you already run. No proxy in the path, and existing policies need only a one-time binding to the AuthZEN attributes.

Caller
Gateway · app · AI agent
Any AuthZEN client. Known by a bearer key or, on the mTLS handler, by its verified SPIFFE ID.
POST /access/v1/evaluation
ID Partners
AuthZEN Adapter
Maps AuthZEN requests to PingAuthorize attributes and returns the decision.
PingAuthorize
Policy decision service
Evaluates your deployed policies, exactly as it does today.
Answer
A standard decision
PERMIT or DENY, with advice a PEP can act on - step-up, identity proofing, a reason - and, if a receiver is registered, an event queued for background delivery.
{ "decision": true }
Standards
AuthZEN 1.0Shared Signals · SPIFFE · OpenID Federation · RFC 8693
Built against
Server SDK 10.1 · 11.1javax and jakarta bundles, one code base
Runs
In-processServer SDK extensions, no proxy hop
API surface
9 endpoints6 AuthZEN · 2 Shared Signals · 1 identity check
Conformance suite
147 of 147OpenID Foundation AuthZEN plans, September 2026 · evidence, not a certificate

What you get

Two extensions, a reference design, and the configuration to run them

AuthZEN Adapter

Speak AuthZEN, decide in PingAuthorize

Serves the OpenID AuthZEN Authorization API 1.0 from inside the server - single and batch evaluation, subject, resource and action search, and discovery - and turns each call into a native PingAuthorize decision or query. Advice mapping is built in; flat attributes, Shared Signals events and a SPIFFE caller check are there when you turn them on.

HTTP servlet extensionAuthZEN 1.0Shared SignalsOpenID Foundation suite: 147 of 147
Explore the adapter
Workload identity

Know which workload asked

SPIFFE mTLS on a PingAuthorize connection handler. The server presents its X.509-SVID, admits only SPIRE-issued clients - optionally pinned to named workloads - and hands the caller's SPIFFE ID to policy. Certificates rotate with no restart.

Key and trust manager providersSPIRE
Explore workload identity
Purpose-bound delegation

Hold every agent to the customer's purpose

A reference design for AI agents that delegate to other agents. Every entity in the token's RFC 8693 act chain is an OpenID Federation entity whose record says what it does in BIAN terms; a small language model reads the words, and PingAuthorize decides on the bank's purpose map - before a token is issued, and again when it is used.

OpenID Federation 1.0RFC 8693 · RFC 9396BIAN v14
Explore purpose-bound delegation
Deployment

Config as code, version-matched

Registration batches and a server profile that configure everything with secrets supplied at setup, patterns for a TLS edge or Kubernetes with SPIRE, and a build that refuses a bundle your server would reject.

Server profilesContainersKubernetes
See deployment options

Where it fits

What it is built for

AI agents that ask before they act

An agent's enforcement point asks whether agent-42 may transfer from acct-1. Policy can permit, deny, or deny with advice - step_up_required with the scope to obtain, or identity_proofing_required with the credential doctype - so the agent knows what it needs before it tries again.

Custom advice for step-up authentication and identity proofing

Agents that delegate to agents

A customer's task passes through several agents, and every hand-off is a chance for it to drift. Each hop is judged against the purpose of the agent the customer started with - not the one before it - and the first misfit is refused before a token exists for it.

RFC 8693 act chain · OpenID Federation · BIAN purpose map

One authorisation API for every gateway and app

Gateways, applications and agents from different vendors ask the same standard question, with no proprietary SDK in each client. Batch evaluation answers a screenful of checks in one call, and resource search returns the accounts a user may act on, straight from policy.

/access/v1/evaluations · /access/v1/search/resource

Service calls with a verified identity

A shared key only proves someone holds the key. On the mTLS handler, the calling workload's SPIFFE ID is verified in the TLS handshake and forwarded to policy, so a payments gateway and a batch job can be held to different rules.

Gateway.caller · spiffe://bank.example/…

Evaluation events, as signals

Register a Shared Signals receiver and each evaluation answered by the adapter becomes a signed Security Event Token - subject, action, resource, verdict, any advice and selected context. The adapter queues evaluation events for background delivery. Delivery is best effort.

application/secevent+jwt · RFC 8935 push

Holding, not just denying

Something outside the customer's purpose that serves nothing else - a bill reminder, say - is neither waved through nor refused outright. It is held for the customer to approve, with the reason the enforcement point can show.

held_for_customer_approval · a decision the customer finishes

How it fits PingAuthorize

Handlers decide where it runs; the code stays the same

Both extensions are PingAuthorize Server SDK extensions: installed with manage-extension and registered with dsconfig, like Ping's own. A servlet extension is reachable only once a connection handler lists it, so which port serves the API, and behind what TLS posture, is configuration rather than code.

That keeps one build for every environment. The AuthZEN Adapter can sit behind a bearer key on a platform that terminates TLS for you, then move to a mutual-TLS handler on Kubernetes with configuration changes and no rebuild. Workload identity lives in the handler too, because on PingAuthorize mTLS is not something a servlet does. Purpose-bound delegation adds nothing to the server: it is policy, a purpose service PingAuthorize calls, and the AuthZEN Adapter as the door every enforcement point knocks on.

Security by design

Security design, and what to set before production

  • Set a caller check. Out of the box the adapter admits any caller. Set an api-key, or listed SPIFFE IDs with spiffe-required, before exposing it - including the Shared Signals stream endpoint, which returns the receiver's credentials.
  • Check engine TLS. trust-any-server-cert defaults to true for a loopback engine; set it to false when the engine is reached over a network.
  • Fail closed where it decides. A resource search without an entitlement statement returns nothing, and with an allow-list on the trust manager an unlisted workload is stopped at the TLS handshake, before any request is read.
  • Server-asserted identity. The caller comes from the verified client certificate, never from the request body, so a client cannot claim to be a workload it is not.
  • No bundled dependencies. The adapter bundles no third-party libraries; JSON, servlet and SDK classes come from PingAuthorize itself.
  • Misconfiguration refused up front. A malformed SPIFFE ID, or a rule that would admit nobody, is rejected when the extension is configured - not discovered on the first request.
  • Coverage-gated. The build fails unless the methods that admit a caller, build a decision request or read an answer have full line and branch test coverage.