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
acme.oauth.work/u/login
The hosted sign-in screen: a one-time email code, Google and GitHub, with password and magic-link alternatives underneath.
The hosted sign-in your users see — themed per tenant

Connect the identity provider your customer already runs.

SAML 2.0 SCIM 2.0 OIDC OAuth 2.1 WebAuthn DPoP MCP A2A

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.

One consent · scopes narrow at every hop
console.oauth.work · agents
The agents table in the console: three agents, each with its client id and the tool scopes it may call.
Every agent, its client id, and the scopes it may call
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.

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.

One agent token, bound to one key
console.oauth.work · activity
The activity screen in the console, with the audit trail and the SIEM log-stream and webhook panels beneath it.
Every privileged action, queryable and streamable
Verifiable properties of the running system · how we handle security
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 when you need to.

Set up a tenant on the free plan in minutes, or read the docs first. No sales call and no demo gate — and a real person on the other end when a procurement review needs one.