Your app,
Enterprise Ready.

Start selling to enterprise customers with just a few lines of code. Implement features like single sign-on in minutes instead of months.

Tune in for Launch Week: 3/18 - 3/23
Learn more
Trusted by

The all-in-one solution

Enterprise SSO
(and a whole lot more)

WorkOS is a set of building blocks for quickly adding enterprise features to your app. You’ll be shipping quickly with a market-proven solution for your customers.

SAML Lock

Auth for all SSO providers

Support any SAML or OIDC identity provider with a single integration

SAML Lock

Complete User Management

Manage users and organizations, set policies, and support all auth types

SAML Lock

Social authentication

Sign in to your app with Microsoft, Google, and more

SAML Lock

AuthKit

Flexible authentication UI powered by WorkOS and Radix

SAML Lock

Magic Auth

Passwordless auth with a six-digit code sent via email

SAML Lock

Multi-Factor Auth

Manage users and organizations, set policies, and support all auth types

Developer-first design

A unified platform with modern APIs

WorkOS provides a single, elegant interface that abstracts dozens of enterprise integrations.

RESTful APIs, JSON responses, and normalized objects

Dashboard seamlessly integrates WorkOS into your application

Realtime updates from directory services with webhook events

Modern SDKs for Node.js, Ruby, Python, .NET, Go and more

Multiple environments to map to your application development process

Supports 20+ enterprise services with a single integration point


// Get a user’s access token and
// profile data from an Identity Provider

import WorkOS from '@workos-inc/node';

const workos = new WorkOS('sk_example_123456789');

const profile = await workos.sso.getProfileAndToken({
  code: '01E2RJ4C05B52KKZ8FSRDAP23J',
  clientID: 'client_123456789',
});



# Get a user’s access token and
# profile data from an Identity Provider

require 'workos'

WorkOS.key = 'sk_example_123456789'

WorkOS::SSO.profile_and_token(
  code: '01E2RJ4C05B52KKZ8FSRDAP23J',
  client_id: 'client_123456789',
)



# Get a user’s access token and
# profile data from an Identity Provider

import workos
from workos import client

workos.api_key = 'sk_example_123456789'
workos.client_id = 'client_123456789'

client.sso.get_profile_and_token('01E2RJ4C05B52KKZ8FSRDAP23J')




// Get a user’s access token and
// profile data from an Identity Provider

import "github.com/workos/workos-go/pkg/sso"

sso.SetAPIKey("sk_example_123456789")

sso.GetProfileAndToken(
  context.Background(),
  sso.GetProfileAndTokenOptions{
    Code: "01E2RJ4C05B52KKZ8FSRDAP23J",
  }
)

// Get a user’s access token and
// profile data from an Identity Provider

$this->sso = new WorkOS\SSO();

$profile = $this->sso->getProfileAndToken("01E2RJ4C05B52KKZ8FSRDAP23J");








// Get a user’s access token and
// profile data from an Identity Provider

import com.workos.WorkOS;

WorkOS workos = new WorkOS("sk_example_123456");

ProfileAndToken profileAndToken = workos.sso.getProfileAndToken("01E2RJ4C05B52KKZ8FSRDAP23J", "client_123456789");

Profile profile = profileAndToken.profile;




// Get a user’s access token and
// profile data from an Identity Provider

WorkOS.SetApiKey("sk_example_123456");

var ssoService = new SSOService();
var options = new GetProfileAndTokenOptions
{
    ClientId = "client_123456789",
    Code = "01E2RJ4C05B52KKZ8FSRDAP23J",
};

var profile = await ssoService.GetProfileAndToken(options);

curl --request POST \
  --url "https://api.workos.com/sso/token? \
  client_id=client_123456789& \
  client_secret=sk_example_123456789& \
  grant_type=authorization_code& \
  code=01E2RJ4C05B52KKZ8FSRDAP23J"
  
  
  
  
  
  
  
HTTP 200

Response {...}
  "access_token": "01DMEK0J53CVMC32CK5SE0KZ8Q",
  "profile": {
    "id": "prof_01DMC79VCBZ0NY2099737PSVF1",
    "connection_id": "conn_01E4ZCR3C56J083X43JQXF3JK5",
    "connection_type": "okta",
    "email": "alan@foo-corp.com",
    "first_name": "Alan",
    "last_name": "Turing",
    "idp_id": "00u1a0ufowBJlzPlk357",
    "object": "profile",
    "raw_attributes": {...}
  }
WorkOS
Okta Logo
Azure Logo
Google Logo
SAML
OneLogin Logo
ADFS Logo
Okta Logo
Azure Logo
Google Logo
SAML Logo
OneLogin Logo
ADFS Logo
BambooHR Logo
JumpCloud Logo
PingIdentity Logo
OpenID Logo
DUO Logo
BambooHR Logo
JumpCloud Logo
PingIdentity Logo
 Logo
DUO Logo

Directory Sync

SCIM and HRIS integrations? No sweat.

Quickly enable full user lifecycle management by syncing your app with dozens of enterprise employee directory systems.

SCIM Provisioning

SCIM provisioning

with Okta, Entra ID, ADFS, and more

HRIS Integration

HRIS integration

with Bamboo, Rippling, and others

Frictionless set up

The IT admin’s admin

Free your support team from the ongoing headache of configuring SSO for enterprise customers. The Admin Portal is a hosted interface for IT admins to directly set up WorkOS.

Admin Portal Screenshot

Effortlessly connect any identity provider or directory

Customize the look and feel to match your brand

Host on your custom domain (CNAME)

A polished experience for IT administrators

Step-by-step setup guides with detailed screenshots

Seamlessly integrates into your existing application

Why WorkOS?

Expand your market

In the past, building for the enterprise was complex, time-consuming, and distracting from core features. Deals would slip away, perhaps forever, due to requirements from IT admins.

With WorkOS, you can immediately begin selling to enterprise customers and expand your market footprint.

Watch: Crossing the
Enterprise Chasm

What happens if you don’t become Enterprise Ready?

Powered by WorkOS

“With our in-house solution we had to spend 2-4 hours provisioning each SSO connection. I wanted to find a solution that would allow us to focus on building core-products.”
Jarel Fryer
Engineering Manager
Read more
“​​If you work with another provider, you probably won’t get the same level of support that WorkOS provides. We'd get immediate responses to technical questions we posted in Slack.”
Hannah Han-Ciaravella
Senior Product Manager
Read more
“I think we could have done even more business if we had partnered with WorkOS earlier, it's been incredibly well received.”
Guillermo Rauch
Founder & CEO
Read more
“Integrating was straightforward, pleasant, and fun. The team answered my questions quickly, and went above and beyond to help when I ran into issues.”
Bryant Chou
Co-Founder & CTO
Read more
“WorkOS simplified the complexity of implementing single sign-on (SSO) with multiple identity providers.”
Daniel Marashlian
Co-Founder & CTO
Read more
“WorkOS’ SCIM API has been a game-changer, enabling us to meet the user lifecycle management needs of our largest enterprise customers.”
Dana Lawson
SVP, Engineering
Read more
“With WorkOS we got exactly what we needed, and the integration process was straightforward.”
Dor Zimberg
Software Engineering Manager
Read more
“When I asked the team, how was the experience with WorkOS? They were just like, this is incredible.”
Sam Lambert
CEO
Read more
“We did consider open source, but WorkOS provided a far superior developer experience.”
Jeanne Thai
Product Manager
Read more
“With Audit Logs, we were able to launch the storage, querying, and export capabilities we needed into production in just a matter of days.”
Pete Hamilton
Co-Founder & CTO
Read more
“We viewed WorkOS’ connections-based pricing as a more viable option aligned with our projected growth. The Admin Portal has also been a critical feature allowing us to save engineering time and provide a more polished enterprise experience.”
Umar Azhar
Co-founder & CTO
Read more
“WorkOS was super easy to self serve and get up and running. It provided us super easy-to-implement must-have functionality out of the box.”
Brennan Spellacy
Co-Founder & CEO
Read more

This site uses cookies to improve your experience. Please accept the use of cookies on this site. You can review our cookie policy here and our privacy policy here. If you choose to refuse, functionality of this site will be limited.