Auth for B2B SaaS and AI agents

Enterprise ready.
Agent ready.

Ship the single sign-on, directory sync, RBAC, and audit logs your enterprise customers ask for — and scoped, revocable authorization for the agents acting on their behalf. One API, one flat price, every connection included.

$ npx @oauth-work/cli init --tenant acme
Enterprise SSO Directory Sync RBAC Audit logs Passkeys Agent auth all shipping today

Every connection included.
No per-connection fees.

Onboard one enterprise customer or a thousand — the shape of the bill doesn't change. Every tenant, every SSO connection, and every agent is in the price. Your data and your tenant configuration export through the management API, so nothing here is built to trap you.

See pricing →

Agent auth · MCP + A2A

Let agents act without sharing your keys.

Your users approve exactly what an agent may do. The agent gets a scoped, short-lived token bound to its own key — and you can revoke it whenever you want.

MCP authorization
OAuth 2.1 · dynamic client registration

Agents authorize against your MCP server with the flow any OAuth client uses: discovery, registration, user consent, scoped tokens. Our hosted /mcp is a demo resource server for testing the whole flow end to end.

Agent-to-agent delegation
token exchange · on-behalf-of

When one agent hands work to another, it exchanges its token for a narrower one instead of sharing a secret. Scopes only ever shrink, and the actor chain records who was acting for whom.

Scoped, revocable tokens
DPoP · short-lived · audited

Every agent token is sender-constrained to that agent's key and expires in minutes. A copied token is inert somewhere else, and every call it makes lands in the audit log.

One consent · scopes narrow at every hop
The enterprise checklist

Everything your enterprise deals ask for.

In the product today — not on a roadmap, and not behind a quote.

Single Sign-On
OIDC · OAuth 2.1 · PKCE

A standards-compliant OIDC provider your app integrates with the way it would any other: discovery, JWKS, refresh-token rotation, and social sign-in with Google, Microsoft, and GitHub.

Enterprise SSO
SAML 2.0 · OIDC federation

Connect a customer's identity provider and their whole company signs in. SAML assertions are verified signature by signature, and IdP-initiated logins resolve back to the right connection.

Directory Sync
SCIM 2.0 · users + groups

New hires appear, leavers are deprovisioned, and group membership stays in step with your customer's directory. Deprovisioning ends live sessions on the next request, not at token expiry.

Admin Portal
self-serve setup for IT admins

A hosted portal where your customer's IT admin configures SSO and SCIM, verifies their domain over DNS, and rotates their SAML signing certificate — without a ticket in your support queue.

RBAC & organizations
roles · permissions · memberships

Every user belongs to an organization, and tokens carry the organization and the roles with them. Define permissions once and enforce them across the API and the management plane.

Passkeys & MFA
WebAuthn · TOTP · magic links

Passwordless sign-in with a passkey, TOTP with recovery codes, email codes, and magic links. Passkey registrations are verified end to end — the authenticator is checked, not taken on trust.

Audit logs & streaming
queryable API · Datadog · Splunk · HTTPS

Every privileged action lands in a tenant-scoped audit log you can query and export — and stream to Datadog, Splunk HEC, or any HTTPS collector in that destination's native format.

Webhooks & events
signed HMAC · retries · polling cursor

Subscribe to the events you care about and get signed, retried delivery with backoff. Prefer to pull? The events API hands back the same stream behind a cursor.

Verifiable credentials
VC-JWT · SD-JWT · did:web

Issue credentials your users and agents can carry anywhere and any verifier can check. Revoke one and the status list reports it revoked on the next verification.

Security

A stolen token
is a dead token.

  • DPoPAccess tokens are sender-constrained. A token is bound to the client's key, so a copy without the private key is refused.
  • ReuseA replayed refresh token revokes the whole family. Theft is detected, not just blocked.
  • CodesAuthorization codes are single-use. A replayed code fails closed.
  • WebAuthnPasskey registrations are fully verified — attestation signature and relying-party ID checked, not assumed.
  • AuditEvery privileged action is on the record, queryable and streamable to your SIEM.
One agent token, bound to one key
Multi-tenancy

One isolated tenant per customer.

Every customer you onboard is a self-contained issuer at their own subdomain — acme.oauth.work — with its own discovery document, JWKS, DID, settings, and Ed25519 signing key. Tokens issued on a tenant host are signed by that tenant's key, so one customer's configuration can never reach another's.

acme.oauth.work
  • issuerown discovery + JWKS
  • keyown Ed25519, encrypted at rest
  • admintheir IT team, in the portal
globex.oauth.work
  • issuerown discovery + JWKS
  • keyown Ed25519, encrypted at rest
  • admintheir IT team, in the portal
initech.oauth.work
  • issuerown discovery + JWKS
  • keyown Ed25519, encrypted at rest
  • admintheir IT team, in the portal
One isolated issuer per customer
Integrate

Standard OIDC.
No proprietary SDK.

One command creates a tenant. Your app runs the same authorization-code flow it would run against any OIDC provider — so there's nothing bespoke to adopt, and nothing to unpick if you ever leave.

Read the docs
authorize.httpGET
# Authorize a user
GET /authorize
  ?response_type=code
  &client_id=acme-web
  &code_challenge=<S256>
  &scope=openid
302 Found · /callback?code=… (single-use)
Authorization code flow, start to finish

Start building today.
Talk to us later.

Set up a tenant on the free plan in minutes, or read the docs first. Either way, no sales call and no demo gate.