Single Sign-On

One login to rule them all. SSO that doesn't suck - setup measured in minutes, not months.

< 1 Hour
Average Setup Time
200+
University Integrations
Fortune 100
Clients Onboarded
Zero
Integration Failures

The SSO Revolution Has Arrived

Remember when SSO meant six months of meetings? Those days are dead.

The Old Way Was Painful

6 Months of Meetings

Three vendors, consulting firms, and endless XML debugging

SAML Debugging Nightmares

XML parsing adventures and "assertion invalid" mysteries

Lost Enterprise Deals

Couldn't deliver SSO fast enough for enterprise customers

Complex Multi-IdP Support

Each enterprise has different IdP requirements

Our SSO Solution

Setup in Minutes

Three lines of code, not three months of meetings

OIDC-First Architecture

Built for modern standards, backwards compatible

Enterprise Deals Close

Turn "Do you support SSO?" into your favorite question

Universal IdP Support

Okta, Azure AD, Google, custom - we handle them all

Features That Make IT Departments Smile

Built for enterprise requirements with developer-friendly implementation

OIDC-First Architecture

Full OpenID Connect provider capabilities with discovery endpoints and JWKS rotation.

  • Discovery endpoints that work
  • Automatic JWKS rotation
  • Compliant with any OIDC client

SAML 2.0 Support

Because some enterprises party like it's 2009. We support them too.

  • SP and IdP initiated flows
  • Encrypted assertions
  • Custom attribute mapping

White-label Login

Customizable login pages that match your customer's brand perfectly.

  • Custom domains and branding
  • Tenant-specific themes
  • Custom CSS and HTML

Just-in-Time Provisioning

Users created automatically on first login with proper role mapping.

  • Automatic user creation
  • Role and group mapping
  • Custom attribute handling

SCIM Support

Automated user lifecycle management with directory sync capabilities.

  • User lifecycle automation
  • Directory synchronization
  • Real-time user updates

Multi-tenant SSO

Different SSO configurations for each tenant, all running simultaneously.

  • Per-tenant IdP configuration
  • Seamless provider switching
  • Isolated SSO sessions

Setup Measured in Minutes, Not Months

Get SSO working with these simple examples

1

Basic SSO Setup

// Configure SSO for a tenant
const ssoConfig = {{
  provider: 'okta', // or 'azure-ad', 'google-workspace'
  domain: 'your-company.okta.com',
  clientId: 'your-client-id',
  clientSecret: 'your-client-secret',
  tenant: 'acme-corp'
}};

const result = await blocks.auth.configureSSO(ssoConfig);

if (result.success) {{
  console.log('SSO configured successfully!');
  console.log('Login URL:', result.loginUrl);
  console.log('Metadata URL:', result.metadataUrl);
}}

// That's it. Time for that beer now.
2

Multi-tenant SSO

// Different SSO per tenant
const tenantConfigs = [
  {{
    tenant: 'acme-corp',
    provider: 'okta',
    domain: 'acme.okta.com'
  }},
  {{
    tenant: 'tech-co',
    provider: 'azure-ad',
    domain: 'techco.onmicrosoft.com'
  }},
  {{
    tenant: 'startup-inc',
    provider: 'google-workspace',
    domain: 'startup.com'
  }}
];

// Configure all tenants
for (const config of tenantConfigs) {{
  await blocks.auth.configureSSO(config);
}}

// All running simultaneously. All isolated. All secure.
XML

SAML Configuration

// SAML setup (unfortunately, yes)
const samlConfig = {{
  tenant: 'enterprise-corp',
  provider: 'saml',
  entityId: 'https://enterprise.com/saml',
  ssoUrl: 'https://enterprise.com/sso',
  certificate: process.env.SAML_CERT,
  attributes: {{
    email: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress',
    name: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name',
    groups: 'http://schemas.microsoft.com/ws/2008/06/identity/claims/groups'
  }}
}};

await blocks.auth.configureSSO(samlConfig);

// We handle the XML nightmares so you don't have to
⚛️

Frontend Integration

// React component for SSO login
import {{ useSSO }} from '23blocks-react';

function LoginPage() {{
  const {{ initiateSSO, isLoading, error }} = useSSO();
  
  const handleSSOLogin = async (tenant) => {{
    try {{
      // Redirects to IdP automatically
      await initiateSSO({{ tenant }});
    }} catch (err) {{
      console.error('SSO login failed:', err);
    }}
  }};
  
  return (
    &lt;div&gt;
      &lt;button onClick={{() => handleSSOLogin('acme-corp')}}&gt;
        Sign in with Acme Corp
      &lt;/button&gt;
      &lt;button onClick={{() => handleSSOLogin('tech-co')}}&gt;
        Sign in with TechCo
      &lt;/button&gt;
    &lt;/div&gt;
  );
}}

Customer Success Stories

Real companies that turned SSO requirements into competitive advantages

TechCorp Solutions

Enterprise Software Provider

"We lost three enterprise deals because we couldn't deliver SSO fast enough. With 23blocks, we onboarded a Fortune 100 client with complex Azure AD requirements in 4 days. That deal alone paid for 23blocks for the next decade."
$2.3M
Annual contract value of deal closed

EduCloud

EdTech Platform

"Universities have the most complex SSO requirements imaginable. Shibboleth, SAML, custom attributes - you name it. 23blocks handled our 200+ university integrations without a single hiccup."
200+
University SSO integrations completed

Why This Changes Everything

SSO that turns enterprise requirements into competitive advantages

For Your Sales Team

"Yes, we support SSO" becomes your favorite phrase. Enterprise deals close faster.

For Your Developers

No more SAML debugging nightmares. No more "assertion invalid" mysteries. Just working SSO.

For Your Users

One corporate password to remember. Seamless access. IT-approved security they trust.

Ready to Make Enterprise Authentication Easy?

Stop losing deals because SSO is "on the roadmap." Start closing them because your SSO is better.

Stay in the loop

Get product updates, engineering posts, and new block announcements delivered to your inbox.

No spam. Unsubscribe anytime. Privacy policy.