Portable IAM · CIAM · Explicit assurance

One identity boundary. No implicit trust.

Shared Auth centralizes sign-in, token exchange, protected introspection, MFA, passkeys, enterprise federation, directories, and lifecycle management while keeping product authorization in the applications that own it.

  • Exact-host isolation
  • Passkeys without biometric custody
  • Cloud Run + Kubernetes portability
USER LANEprovider tokenexchange → identity
SERVICE LANEintrospection secretintrospect only
ASSURANCEexplicit ACRAuthentication is not authorization.
FEDERATIONOIDC / SAML
FACTORSMFA / 3FA
PASSKEYSWebAuthn
DIRECTORIESSCIM
4isolated public service planes
2independent origin platforms
0raw biometric templates
1versioned identity contract

Holistic identity infrastructure

Make every trust transition visible.

The target is full IAM and CIAM coverage without collapsing identity, tenant membership, operator privilege, and application authorization into one opaque session.

01

Authentication UX

Password, magic-link, OTP, passkey, social, and enterprise sign-in flows with explicit recovery and step-up ceremonies.

02

MFA and 3FA

TOTP, email, SMS, passkeys, recovery codes, factor enrollment, challenge policy, and assurance-level evidence.

03

Organizations and tenancy

Organization switchers, invitations, verified domains, memberships, roles, and explicit application-owned authorization boundaries.

04

Enterprise federation

OIDC and SAML SSO, identity brokering, just-in-time enrollment, SCIM provisioning, and directory synchronization.

05

Sessions and devices

Session inventory, device context, bounded risk signals, revocation, concurrent-session policy, and reauthentication controls.

06

Lifecycle management

Identity linking, profile changes, recovery, suspension, deprovisioning, retention policy, and auditable account deletion.

07

Developer platform

Typed SDKs, machine identities, webhooks, API credentials, test tenants, event delivery, and generated identity contracts.

08

Governance and operations

Policy versions, audit trails, operator separation, tenant support tooling, health evidence, and privacy-safe telemetry.

09

Portable deployment

Cloudflare exact-host routing over independent Cloud Run and Kubernetes origins with readiness-gated, safe failover.

Product parity program

One capability model. Three deliberately separate consoles.

Clerk, Supabase Auth, Neon Auth, Okta/Auth0, WorkOS, Stytch, Frontegg, Entra ID, Ping, OneLogin, Keycloak, Ory, Logto, and SuperTokens are reference points—not compatibility claims. Features graduate only with typed backend contracts, authorization checks, audit evidence, and failure-state UX.

ClerkSupabase AuthNeon AuthOkta / Auth0WorkOSStytchFronteggMicrosoft Entra IDPing IdentityOneLoginKeycloakOryLogtoSuperTokens

Official client packages

Enforce assurance from native, web, mobile, BEAM, or JVM code.

The official clients cover exchange, authenticated introspection, verification, JWKS, factors, OTP, and passkeys. These examples demonstrate the deliberate separation between service and end-user credentials.

assurance.rs
let auth = SharedAuthClient::new(
    "https://gateway.example/shared-auth",
).with_service_credential(
    std::env::var("SHARED_AUTH_INTROSPECT_SECRET")?,
);

let identity = auth.introspect(access_token).await?;
if !identity.has_acr("urn:oresoftware:loa:2") {
    anyhow::bail!("step-up authentication required");
}

The service credential is sent only to /auth/introspect, never to exchange or factor requests.

Separate lanes

User identity and service authority never blur together.

provider identity→exchange→shared identity→assurance→app authorization

Shared Auth proves identity and assurance. Applications still own tenant, role, entitlement, and resource authorization.

Choose the intended boundary

Sign in as a person or enter an organization explicitly.

The public header and mobile surface lead to distinct user and organization applications; neither path silently grants the other context.