Share:
Auth0 vs Supabase vs WorkOS SSO Comparison Guide
Published: March 28, 2026 | Reading Time: 16 minutes
About the Author
Emachalan is a Full-Stack Developer specializing in MEAN & MERN Stack, focused on building scalable web and mobile applications with clean, user-centric code.
Key Takeaways
- SSO is no longer a nice-to-have — it is a buying requirement for enterprise customers, a security baseline for regulated industries, and increasingly standard for mid-market buyers.
- The three dominant SSO platforms each serve a distinct audience: Auth0 for general CIAM, Supabase Auth for open-source builders and startups, and WorkOS for B2B SaaS selling to enterprises.
- The three SSO protocols — SAML 2.0, OAuth 2.0, and OpenID Connect — have different use cases; OIDC is the modern choice for new applications while SAML remains mandatory for many enterprise IdP configurations.
- Token validation is not optional — verifying signature, expiry (
exp), audience (aud), and issuer (iss) on every JWT is a hard security requirement, not a best practice suggestion.- The complete enterprise authentication stack is SSO + SCIM + Audit Logs — SSO alone is insufficient for enterprise procurement requirements in 2026.
- Building SSO in-house is almost never the right decision — months of engineering investment, ongoing maintenance, and critical security risks make managed platforms the clear choice for production systems.
What SSO Actually Is (And What It Isn't)
Enterprise deals stall for one reason more consistently than almost any other: the prospect's IT team asks "do you support SSO?" and the answer is either "not yet" or a fumbled explanation of a half-implemented solution.
Single Sign-On is an authentication mechanism that allows a user to log in once with a single set of credentials and gain access to multiple independent applications or services — without re-authenticating for each one. You use SSO daily without noticing it. Log into your Google account and you can access Gmail, YouTube, Google Drive, and Google Docs without entering your password again. That's SSO.
What SSO Is NOT
- SSO is not a protocol. It's a pattern. The protocols that implement it are OAuth 2.0, OpenID Connect (OIDC), and SAML.
- SSO is not the same as social login. "Login with Google" on a single app is OAuth-based authentication, not SSO. SSO involves accessing multiple systems with a single authentication event.
- SSO is not shared passwords. Participants in an SSO system never share credentials — they share a verified authentication assertion from a trusted Identity Provider.
The Two Roles in Every SSO System
- Identity Provider (IdP): The system that authenticates the user and vouches for their identity. Examples: Okta, Azure Active Directory, Google Workspace, Auth0, and Ping Identity.
- Service Provider (SP): The application the user is trying to access. The SP trusts the IdP's assertion and grants access without requiring its own authentication.
Visit AgileSoftLabs — our team has implemented authentication architecture across dozens of production SaaS applications, from early-stage startups to enterprise platforms.
How SSO Works: The Technical Flow
Understanding the authentication flow is essential for debugging integration issues and making informed architectural decisions.
SP-Initiated SSO Flow (Most Common)
This is what happens when a user starts at your application:
1. User visits your app (e.g., app.yourproduct.com)
2. App detects no active session → redirects to Identity Provider
3. IdP presents login form (or skips if user already has IdP session)
4. User authenticates with IdP (password, MFA, biometric)
5. IdP generates signed authentication token (JWT or SAML assertion)
6. IdP redirects user back to your app with the token
7. Your app validates the token signature
8. Your app creates a local session → user is logged in
IdP-Initiated SSO Flow
This starts from the IdP's dashboard (e.g., an employee clicking an app icon in their Okta portal):
1. User logs into IdP (Okta, Azure AD)
2. User clicks your app from IdP's app catalog
3. IdP generates signed assertion for your app
4. User is redirected to your app with assertion included
5. Your app validates → creates session
Important: IdP-initiated flows have security implications — they lack CSRF protection by default and require explicit handling in your implementation.
Token Validation Requirements
After receiving the token, your application must validate all four of these claims. Skipping any creates exploitable security vulnerabilities:
| Validation Step | What to Check | Risk if Skipped |
|---|---|---|
| Cryptographic signature | Verify using the IdP's public key | Token forgery — anyone can create fake tokens |
| Token expiry | Validate exp claim hasn't passed |
Expired tokens accepted indefinitely |
| Audience | Validate aud claim matches your app |
Token intended for another app accepted |
| Issuer | Validate iss claim matches your IdP |
Tokens from untrusted sources accepted |
AgileSoftLabs Web Application Development Services — full-stack SaaS development with production-grade authentication architecture, multi-tenant support, and enterprise SSO integration built in from day one.
SSO Protocols: SAML, OAuth 2.0, and OpenID Connect
The three protocols you'll encounter in SSO implementations have different origins, strengths, and use cases. This is the most commonly confused area in SSO development.
Protocol Overview
| Protocol | Type | What It Answers | Data Format | When to Use |
|---|---|---|---|---|
| OAuth 2.0 | Authorization framework | "What can this app access?" — not who the user is | JSON | API access delegation only — not sufficient for authentication alone |
| OpenID Connect (OIDC) | Authentication layer on OAuth 2.0 | "Who is this user?" — adds ID Token with user identity | JSON / JWT | All modern new application authentication |
| SAML 2.0 | Enterprise federation standard | Both authentication + authorization in one assertion | XML | Enterprise customers with legacy IdP configurations (Okta SAML, Azure AD) |
Protocol Decision Matrix
| Scenario | Recommended Protocol |
|---|---|
| New SaaS app, consumer or SMB users | OIDC |
| New B2B app, enterprise buyers | OIDC + SAML (support both) |
| Enterprise-only, must support Okta/Azure AD | SAML + OIDC |
| Mobile applications | OIDC with PKCE |
| API-to-API authorization | OAuth 2.0 |
| Legacy enterprise system integration | SAML |
Why SAML Is Painful: SAML assertions are XML documents with complex canonicalization rules, nested signature requirements, and poor error messages. Debugging a failing SAML assertion often requires a dedicated XML parser. This is precisely why platforms like WorkOS exist.
AgileSoftLabs Custom Software Development Services — we handle complex authentication protocol integrations, including SAML, OIDC, and OAuth across multi-tenant enterprise SaaS platforms.
I. Auth0: Full-Featured CIAM for General Applications
Auth0 (acquired by Okta in 2021) is a Customer Identity and Access Management (CIAM) platform that handles the full authentication and authorization lifecycle — social login, MFA, enterprise SSO, anomaly detection, and user management.
Auth0 Architecture Flow
Your App (React/Next.js)
↓ redirect
Auth0 Universal Login
↓ authenticate
IdP (Google / Okta / Azure AD / SAML)
↓ assertion
Auth0 (validates + issues tokens)
↓ JWT (ID Token + Access Token)
Your App (validates token → session)
↓ API calls with Access Token
Your Backend API
Auth0 Key Strengths & Weaknesses
| Strengths | Weaknesses |
|---|---|
| Breadth of features — 30+ social connections, enterprise SSO, MFA, passwordless, bot detection | MAU-based pricing becomes expensive at scale |
| SDKs for every major language and framework | Enterprise SSO (SAML) requires Professional plan or above |
| Universal Login hosted page — minimal auth UI surface area | Not open-source or self-hostable |
| Machine-to-machine (M2M) auth for microservices | At high MAU scale, one of the most expensive options |
| Comprehensive documentation and large community | Rules/Actions pipeline adds complexity for advanced customization |
Auth0 Code Example (React)
npm install @auth0/auth0-react
// index.js
import { Auth0Provider } from '@auth0/auth0-react';
<Auth0Provider
domain="your-tenant.auth0.com"
clientId="YOUR_CLIENT_ID"
authorizationParams={{
redirect_uri: window.location.origin,
audience: 'https://api.yourapp.com',
}}
>
<App />
</Auth0Provider>
// LoginButton.jsx
import { useAuth0 } from '@auth0/auth0-react';
export const LoginButton = () => {
const { loginWithRedirect } = useAuth0();
return <button onClick={() => loginWithRedirect()}>Log In</button>;
};
// Protected component
export const Profile = () => {
const { user, isAuthenticated, isLoading } = useAuth0();
if (isLoading) return <div>Loading...</div>;
if (!isAuthenticated) return null;
return <p>Welcome, {user.email}</p>;
};Auth0 Pricing Model
Auth0 uses MAU (Monthly Active Users) based pricing. The free tier supports 7,500 MAUs with social connections and limited enterprise features. Enterprise SSO (SAML connections) requires the Professional plan or above. At scale, Auth0 becomes one of the more expensive options — a common reason developers evaluate alternatives.
Auth0 Best For:
- Consumer-facing applications with diverse social login requirements
- Applications requiring sophisticated authentication flows (step-up MFA, progressive profiling)
- Teams that need a managed, full-featured CIAM with minimal in-house auth engineering
II. Supabase Auth: Open-Source SSO for Startups and Builders
Supabase is an open-source Firebase alternative built on PostgreSQL. Its auth module — based on the open-source GoTrue project — handles social login, magic links, phone auth, and enterprise SSO.
Supabase Auth Key Strengths & Weaknesses
| Strengths | Weaknesses |
|---|---|
| 100% open source and self-hostable — complete data control | Enterprise SSO (SAML) only on Team plan and above |
| Deep PostgreSQL integration — user IDs reference Row Level Security policies directly | Limited SCIM support compared to WorkOS |
| Clean, consistent SDK — auth, database, storage, real-time in one client | No native audit logs for compliance |
| Generous free tier — 50K MAU (vs Auth0's 7,500 MAU) | Less feature breadth than Auth0 for complex CIAM needs |
| Dramatically lower cost than Auth0 at equivalent MAUs |
Supabase SSO Code Example
npm install @supabase/supabase-js
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY
);
// Social login (OAuth / OIDC)
const signInWithGoogle = async () => {
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'google',
options: {
redirectTo: `${window.location.origin}/auth/callback`,
},
});
};
// Magic link (passwordless)
const signInWithMagicLink = async (email) => {
const { error } = await supabase.auth.signInWithOtp({ email });
};
// Get current user
const { data: { user } } = await supabase.auth.getUser();
// Sign out
await supabase.auth.signOut();
// Enterprise SSO with WorkOS provider via Supabase
const { data, error } = await supabase.auth.signInWithOAuth({
provider: 'workos',
options: {
queryParams: {
connection: 'WORKOS_CONNECTION_ID',
},
},
});
Supabase Auth Best For:
- Startups building on the Supabase stack (database + auth + storage)
- Applications requiring deep PostgreSQL integration with auth
- Teams that value open-source and self-hosting capability
- B2C applications or B2B applications with light enterprise SSO requirements
AgileSoftLabs Case Studies — production SaaS applications built with Supabase Auth, Auth0, and WorkOS integrations for clients from early-stage startups to publicly traded enterprise platforms.
III. WorkOS: Enterprise SSO for B2B SaaS
WorkOS is purpose-built for one problem: making B2B SaaS applications enterprise-ready. It's not a full CIAM — it's a set of APIs that handle the authentication infrastructure enterprises require before signing contracts.
WorkOS Core Capabilities
| Feature | Description | Enterprise Value |
|---|---|---|
| Enterprise SSO | SAML 2.0 and OIDC connections to Okta, Azure AD, Google Workspace, PingFederate, and 20+ IdPs | Each enterprise customer gets their own independent SSO connection |
| Directory Sync (SCIM) | Automatic user and group provisioning/deprovisioning | When an employee leaves, access to your app is removed automatically — without IT manual steps |
| Admin Portal | Hosted UI for enterprise customers' IT admins to configure their own SSO connections | Reduces your per-connection onboarding time from hours to minutes |
| Audit Logs | Structured, tamper-evident event logs | Required for SOC 2, HIPAA, ISO 27001 compliance |
| AuthKit | Full authentication solution including consumer login (launched 2024) | All auth flows in one platform, not just enterprise SSO |
WorkOS Architecture for Multi-Tenant SSO
Enterprise Customer A (Okta)
↓ SAML assertion
WorkOS (validates per-connection config)
↓ normalized user profile (JSON)
Your App Backend
↓ lookup or create user
Your Database (user mapped to org)
Enterprise Customer B (Azure AD)
↓ SAML assertion
WorkOS (different connection, same API)
↓ normalized user profile (JSON)
Your App Backend
Critical Insight: WorkOS normalizes the identity assertion. Whether your customer uses Okta SAML, Azure AD OIDC, or Google Workspace, your backend always receives the same JSON structure — first_name, last_name, email, raw_attributes. You write the integration once.
WorkOS Code Example (Node.js)
npm install @workos-inc/node
import { WorkOS } from '@workos-inc/node';
const workos = new WorkOS(process.env.WORKOS_API_KEY);
// Step 1: Generate SSO authorization URL for a specific enterprise connection
const authorizationUrl = workos.sso.getAuthorizationUrl({
clientId: process.env.WORKOS_CLIENT_ID,
redirectUri: 'https://your-app.com/auth/callback',
// Either connection ID (for specific customer) or domain hint
connection: 'conn_XXXXXXXXXXXX',
// Or: domain: 'customer-company.com'
});
// Redirect user to authorizationUrl
// Step 2: Handle callback — exchange code for profile
app.get('/auth/callback', async (req, res) => {
const { code } = req.query;
const { profile } = await workos.sso.getProfileAndToken({
code,
clientId: process.env.WORKOS_CLIENT_ID,
});
// profile.email, profile.firstName, profile.lastName, profile.organizationId
// Create or update your user record, set session
});WorkOS Pricing Model
WorkOS uses connection-based pricing — you pay per SSO connection, not per MAU. This is advantageous if each of your enterprise customers has many users (since you pay the same regardless of whether a customer has 50 or 5,000 employees). It becomes expensive if you have many enterprise customers with small teams.
WorkOS Best For
- B2B SaaS applications actively selling to enterprise customers (>500 employees)
- Teams that need SAML SSO, SCIM, and Audit Logs in a single integration
- Applications where enterprise sales velocity is a priority
- Products that need an IT admin self-serve portal without building one
AgileSoftLabs Products — explore our enterprise SaaS products built with WorkOS SSO integration, including multi-tenant user management, SCIM provisioning, and SOC 2-ready audit logs.
Auth0 vs Supabase vs WorkOS: Detailed Comparison
| Feature | Auth0 | Supabase Auth | WorkOS |
|---|---|---|---|
| Primary use case | General CIAM (consumer + enterprise) | Full-stack app auth (startup/builder) | Enterprise SSO for B2B SaaS |
| Open source | No | Yes (AGPLv3) | No |
| Self-hostable | No | Yes | No |
| Social login | 30+ providers | 18+ providers | Via AuthKit |
| SAML SSO | Yes (Professional+) | Yes (Team plan+) | ✔ Yes (core product) |
| SCIM / Directory Sync | Yes (Enterprise) | Limited | ✔ Yes (core product) |
| Admin Portal (IT self-serve) | No | No | ✔ Yes |
| Audit Logs | Limited | No | ✔ Yes |
| Database integration | External | ✔ Deep (PostgreSQL RLS) | External |
| Pricing model | MAU-based | MAU-based (generous free) | Connection-based |
| Free tier | 7,500 MAU | ✔ 50,000 MAU | Limited |
| Data residency | US, EU, AU | US (cloud) / Anywhere (self-host) | US only |
| Best for | Consumer apps, general SaaS | Startups, builders, PostgreSQL apps | B2B enterprise SaaS |
Decision Guide
Implementing SSO in a React Application
Here's a production-ready implementation pattern using Auth0 with React and a protected API:
Step 1: Install Dependencies
npm install @auth0/auth0-react
Step 2: Configure the Provider
// src/main.jsx
import { Auth0Provider } from '@auth0/auth0-react';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<Auth0Provider
domain={import.meta.env.VITE_AUTH0_DOMAIN}
clientId={import.meta.env.VITE_AUTH0_CLIENT_ID}
authorizationParams={{
redirect_uri: window.location.origin,
audience: import.meta.env.VITE_AUTH0_AUDIENCE,
scope: 'openid profile email',
}}
>
<App />
</Auth0Provider>
);
Step 3: Create an Authentication Guard
// src/components/AuthGuard.jsx
import { useAuth0 } from '@auth0/auth0-react';
export const AuthGuard = ({ children }) => {
const { isAuthenticated, isLoading, loginWithRedirect } = useAuth0();
useEffect(() => {
if (!isLoading && !isAuthenticated) {
loginWithRedirect({
appState: { returnTo: window.location.pathname },
});
}
}, [isLoading, isAuthenticated, loginWithRedirect]);
if (isLoading || !isAuthenticated) return <LoadingSpinner />;
return children;
};
Step 4: Call Protected APIs with the Access Token
// src/hooks/useApi.js
import { useAuth0 } from '@auth0/auth0-react';
export const useApi = () => {
const { getAccessTokenSilently } = useAuth0();
const callApi = async (endpoint, options = {}) => {
const token = await getAccessTokenSilently();
return fetch(`${import.meta.env.VITE_API_BASE_URL}${endpoint}`, {
...options,
headers: {
...options.headers,
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
});
};
return { callApi };
};
Step 5: Validate Tokens in Your Backend
// src/middleware/auth.js (Node.js / Express)
import { expressjwt } from 'express-jwt';
import jwksRsa from 'jwks-rsa';
export const checkJwt = expressjwt({
secret: jwksRsa.expressJwtSecret({
cache: true,
rateLimit: true,
jwksUri: `https://${process.env.AUTH0_DOMAIN}/.well-known/jwks.json`,
}),
audience: process.env.AUTH0_AUDIENCE,
issuer: `https://${process.env.AUTH0_DOMAIN}/`,
algorithms: ['RS256'],
});
AgileSoftLabs AI & Machine Learning Development Services — AI-powered SaaS platforms built with secure SSO foundations, including intelligent session management, anomaly detection at auth layers, and compliance-ready audit architecture.
SSO Security: What Most Guides Skip
Most SSO tutorials stop at "it works." Production SSO requires much more.
Security Requirements Summary
| Security Area | Requirement | Risk if Ignored |
|---|---|---|
| Token Storage | Never store tokens in localStorage — use httpOnly cookies for refresh tokens, in-memory for access tokens |
XSS attacks exfiltrate entire localStorage — complete token theft |
| JWT Payload | JWT payload is Base64-encoded, NOT encrypted — never include sensitive PII, payment info, or internal role data | Any token holder can read all payload claims |
| Algorithm Validation | Validate JWTs use expected algorithm (RS256/ES256); never accept none; use established libraries |
Algorithm confusion attacks — none bypass or HS256 downgrade |
| Session Duration | Access tokens: 15 min–1 hour; Refresh tokens: days–weeks with rotation | Long-lived compromised tokens create extended exposure windows |
| Immediate Revocation | Short-lived tokens OR token revocation endpoint needed for terminated employee access removal | Former employees retain access until token expiry — security and compliance failure |
| MFA at IdP | SSO centralizes MFA — ensure enterprise connections require MFA at the IdP level | Microsoft Research: MFA blocks 99.9% of automated account compromise attacks |
| Refresh Token Rotation | Each refresh token use should invalidate the previous one | Stolen refresh tokens usable indefinitely without rotation |
| SAML Assertion Expiry | SAML assertions have short validity windows — must be consumed immediately | Replay attacks using captured assertions |
| IdP-Initiated CSRF | IdP-initiated SSO requires explicit CSRF protection (SP-initiated handles naturally) | Cross-site request forgery via crafted IdP assertions |
| Certificate Monitoring | SAML connections use X.509 certificates that expire — monitor and rotate proactively | Sudden authentication failures when unmonitored certificate expires |
AgileSoftLabs Cloud Development Services — secure cloud infrastructure for SaaS authentication layers, including HSM-based key management, certificate rotation automation, and identity-aware proxy configurations.
When SSO Creates a Single Point of Failure (And How to Mitigate It)
SSO's greatest strength — centralizing authentication — is also its greatest risk. If the IdP becomes unavailable, users cannot log in to any connected application.
Mitigation Strategies
Enterprise Readiness: SSO + SCIM + Audit Logs
For B2B SaaS applications, SSO is typically the first of three enterprise authentication requirements. The complete enterprise auth stack is:
The Three-Layer Enterprise Auth Stack
| Layer | What It Provides | Without It | With It |
|---|---|---|---|
| 1. SSO (Authentication) | Users authenticate via corporate IdP — no separate credentials for your app | Users manage separate passwords; IT cannot control access centrally | Centralized auth, MFA enforcement, IT-controlled access |
| 2. SCIM (Automated Provisioning) | Automatic user and group provisioning/deprovisioning from HR systems | IT admins manually add/remove users — former employees retain access | User lifecycle is automatic; access removed within minutes of offboarding |
| 3. Audit Logs (Compliance Evidence) | Tamper-evident, structured logs of auth events, permission changes, and data access | Cannot meet SOC 2, HIPAA, or ISO 27001 requirements | Enterprise security questionnaires answered; compliance audits supported |
Platform Coverage for Enterprise Auth Stack
| Requirement | Auth0 | Supabase Auth | WorkOS |
|---|---|---|---|
| Enterprise SSO (SAML) | ✔ Professional+ | ✔ Team plan+ | ✔ Core product |
| SCIM Directory Sync | ✔ Enterprise plan | ! Limited | ✔ Core product |
| IT Admin Self-Serve Portal | ✘ No | ✘ No | ✔ Core product |
| Audit Logs | ! Limited | ✘ No | ✔ Core product |
| Single integration for all three | ✘ Multi-plan required | ✘ Not complete | ✔ Yes |
AgileSoftLabs Contact — schedule a free consultation with our authentication architecture team to design your SSO, SCIM, and Audit Log implementation roadmap for enterprise readiness.
Related Resources & Further Reading
- AgileSoftLabs Blog — technical deep-dives on authentication architecture, SaaS security patterns, multi-tenant design, and enterprise integration guides
- AgileSoftLabs Case Studies — production SaaS authentication implementations across regulated industries, including fintech, healthcare, and legal SaaS platforms
- AgileSoftLabs Contact — speak with our authentication architecture team about your SSO implementation, enterprise readiness strategy, or multi-tenant SaaS platform design
Frequently Asked Questions (FAQ)
1. What is the main difference between Auth0, Supabase Auth, and WorkOS for SSO?
Auth0 provides enterprise-grade SAML/OIDC with complex rules but high vendor lock-in. Supabase Auth offers free Postgres-native authentication for startups. WorkOS delivers self-serve SCIM + SSO specifically for B2B SaaS without replacing existing auth.
2. When should startups choose WorkOS over Auth0?
Choose WorkOS when your first enterprise customer demands SSO ($0 startup tier, 5-minute integration). Auth0 requires $3K+ ARR thresholds and painful migrations due to its proprietary rules engine.
3. Does Supabase Auth support enterprise SSO requirements like SCIM?
Supabase lacks native SCIM and enterprise SAML—best for B2C or early B2B (<10K MAU). Integrate WorkOS as a third-party provider for Supabase to unlock enterprise-ready SSO in minutes.
4. How does WorkOS pricing compare to Auth0 for B2B SaaS?
WorkOS: $0 for core SSO/SCIM (pay-per-connection for enterprises). Auth0: Tiered pricing starting at enterprise ARR thresholds with mandatory support contracts. Supabase: Free auth tier, scales with database usage.
5. Can I use WorkOS alongside Supabase or Auth0 auth?
Yes—WorkOS acts as an "enterprise auth add-on." Regular users use Supabase/Auth0; enterprise users redirect through WorkOS SSO. No auth rewrite needed.
6. What are the biggest Auth0 migration pain points to WorkOS?
Auth0's Rules/Actions extensibility creates vendor lock-in. WorkOS focuses on standardized SAML/OIDC + SCIM, requiring simplification of custom logic. Migration difficulty: high for Auth0 → anything.
7. Which SSO provider has the best developer experience in 2026?
WorkOS wins for B2B SaaS (Node.js SDK, 5-minute SSO setup). Supabase excels for full-stack Postgres apps. Auth0 lags due to dashboard complexity and sales engineering requirements.
8. Does Supabase support passkeys or advanced session management?
Supabase supports passkeys via third-party (Corbado integration). Offers long-lived sessions with inactivity timeouts and Admin API revocation on paid plans.
9. What triggers the switch from Supabase Auth to WorkOS/Auth0?
First enterprise customer requesting SSO, Directory Sync, or SCIM. Supabase handles early-stage B2C/B2B; WorkOS/Auth0 required for Fortune 500 sales cycles.
10. Which protocols do these SSO providers support?
All support SAML, OAuth 2.0, and OpenID Connect industry standards. WorkOS + Auth0 adds enterprise SAML federation. Supabase focuses on modern OpenID Connect for cloud-native apps.










