Skip to content

Commit 1739a4e

Browse files
committed
docs(sso): restructure page, fix provider guide accuracy, add external doc links
1 parent ef82fcd commit 1739a4e

File tree

1 file changed

+68
-56
lines changed
  • apps/docs/content/docs/en/enterprise

1 file changed

+68
-56
lines changed

apps/docs/content/docs/en/enterprise/sso.mdx

Lines changed: 68 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Go to **Settings → Enterprise → Single Sign-On** in your workspace.
2929

3030
| Protocol | Use when |
3131
|----------|----------|
32-
| **OIDC** | Your IdP supports OpenID Connect — Okta, Azure AD (Entra ID), Auth0, Google Workspace |
32+
| **OIDC** | Your IdP supports OpenID Connect — Okta, Microsoft Entra ID, Auth0, Google Workspace |
3333
| **SAML 2.0** | Your IdP is SAML-only — ADFS, Shibboleth, or older enterprise IdPs |
3434

3535
### 3. Fill in the form
@@ -59,7 +59,7 @@ Go to **Settings → Enterprise → Single Sign-On** in your workspace.
5959
| Field | What to enter |
6060
|-------|--------------|
6161
| **Entry Point URL** | The IdP's SSO service URL where Sim sends authentication requests. |
62-
| **Identity Provider Certificate** | The PEM-format X.509 certificate from your IdP for verifying assertions. |
62+
| **Identity Provider Certificate** | The Base-64 encoded X.509 certificate from your IdP for verifying assertions. |
6363

6464
### 4. Copy the Callback URL
6565

@@ -82,13 +82,13 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
8282

8383
## Provider Guides
8484

85-
<Tabs items={['Okta', 'Azure AD', 'Google Workspace', 'ADFS']}>
85+
<Tabs items={['Okta', 'Microsoft Entra ID', 'Google Workspace', 'ADFS']}>
8686

8787
<Tab value="Okta">
8888

8989
### Okta (OIDC)
9090

91-
**In Okta:**
91+
**In Okta** ([official docs](https://help.okta.com/en-us/content/topics/apps/apps_app_integration_wizard_oidc.htm)):
9292

9393
1. Go to **Applications → Create App Integration**
9494
2. Select **OIDC - OpenID Connect**, then **Web Application**
@@ -97,8 +97,8 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
9797
https://simstudio.ai/api/auth/sso/callback/okta
9898
```
9999
4. Under **Assignments**, grant access to the relevant users or groups
100-
5. Copy the **Client ID** and **Client Secret** from the app's General tab
101-
6. Copy the **Okta domain** from your account (e.g. `dev-1234567.okta.com`)
100+
5. Copy the **Client ID** and **Client Secret** from the app's **General** tab
101+
6. Your Okta domain is the hostname of your admin console, e.g. `dev-1234567.okta.com`
102102

103103
**In Sim:**
104104

@@ -111,20 +111,24 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
111111
| Client ID | From Okta app |
112112
| Client Secret | From Okta app |
113113

114+
<Callout type="info">
115+
The issuer URL uses Okta's default authorization server (`/oauth2/default`), which is pre-configured on every Okta org. If you created a custom authorization server, replace `default` with your server name.
116+
</Callout>
117+
114118
</Tab>
115119

116-
<Tab value="Azure AD">
120+
<Tab value="Microsoft Entra ID">
117121

118-
### Azure AD / Entra ID (OIDC)
122+
### Microsoft Entra ID (OIDC)
119123

120-
**In Azure:**
124+
**In Azure** ([official docs](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app)):
121125

122-
1. Go to **Azure Active Directory → App registrations → New registration**
123-
2. Set the **Redirect URI** (Web) to your Sim callback URL:
126+
1. Go to **Microsoft Entra ID → App registrations → New registration**
127+
2. Under **Redirect URI**, select **Web** and enter your Sim callback URL:
124128
```
125129
https://simstudio.ai/api/auth/sso/callback/azure-ad
126130
```
127-
3. After registration, go to **Certificates & secrets → New client secret** and copy the value
131+
3. After registration, go to **Certificates & secrets → New client secret** and copy the value immediately — it won't be shown again
128132
4. Go to **Overview** and copy the **Application (client) ID** and **Directory (tenant) ID**
129133

130134
**In Sim:**
@@ -139,7 +143,7 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
139143
| Client Secret | Secret value |
140144

141145
<Callout type="info">
142-
Replace `{tenant-id}` with your Directory (tenant) ID from Azure AD. Sim will auto-discover the token and JWKS endpoints from the issuer.
146+
Replace `{tenant-id}` with your Directory (tenant) ID from the app's Overview page. Sim auto-discovers token and JWKS endpoints from the issuer.
143147
</Callout>
144148

145149
</Tab>
@@ -148,7 +152,7 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
148152

149153
### Google Workspace (OIDC)
150154

151-
**In Google Cloud Console:**
155+
**In Google Cloud Console** ([official docs](https://developers.google.com/identity/openid-connect/openid-connect)):
152156

153157
1. Go to **APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID**
154158
2. Set the application type to **Web application**
@@ -170,7 +174,7 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
170174
| Client Secret | From Google Cloud Console |
171175

172176
<Callout type="info">
173-
To restrict sign-in to your Google Workspace domain only, set **Authorized domains** in the OAuth consent screen to your organization's domain.
177+
To restrict sign-in to your Google Workspace domain, configure the OAuth consent screen and ensure your app is set to **Internal** (Workspace users only) under **User type**. Setting the app to Internal limits access to users within your Google Workspace organization.
174178
</Callout>
175179

176180
</Tab>
@@ -179,21 +183,21 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
179183

180184
### ADFS (SAML 2.0)
181185

182-
**In ADFS:**
186+
**In ADFS** ([official docs](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/operations/create-a-relying-party-trust)):
183187

184188
1. Open **AD FS Management → Relying Party Trusts → Add Relying Party Trust**
185189
2. Choose **Claims aware**, then **Enter data about the relying party manually**
186-
3. Set the **Relying party identifier** (Entity ID) to your Sim instance URL, e.g.:
190+
3. Set the **Relying party identifier** (Entity ID) to your Sim base URL:
187191
```
188192
https://simstudio.ai
189193
```
190-
For self-hosted: use your instance's base URL (e.g. `https://sim.company.com`). This value goes in the **Issuer URL** field in Sim.
191-
4. Add an endpoint: **SAML Assertion Consumer Service** with the URL:
194+
For self-hosted, use your instance's base URL (e.g. `https://sim.company.com`)
195+
4. Add an endpoint: **SAML Assertion Consumer Service** (HTTP POST) with the URL:
192196
```
193197
https://simstudio.ai/api/auth/sso/callback/adfs
194198
```
195199
For self-hosted: `https://sim.company.com/api/auth/sso/callback/adfs`
196-
5. Export the **Token-signing certificate** in PEM format from **Certificates**
200+
5. Export the **Token-signing certificate** from **Certificates**: right-click **View CertificateDetailsCopy to File**, choose **Base-64 encoded X.509 (.CER)**. The `.cer` file is PEM-encodedrename it to `.pem` before pasting its contents into Sim.
197201
6. Note the **ADFS Federation Service endpoint URL** (e.g. `https://adfs.company.com/adfs/ls`)
198202

199203
**In Sim:**
@@ -205,7 +209,11 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
205209
| Issuer URL | `https://simstudio.ai` |
206210
| Domain | `company.com` |
207211
| Entry Point URL | `https://adfs.company.com/adfs/ls` |
208-
| Certificate | PEM certificate from ADFS |
212+
| Certificate | Contents of the `.pem` file |
213+
214+
<Callout type="info">
215+
For ADFS, the **Issuer URL** field is the SP entity ID — the identifier ADFS uses to identify Sim as a relying party. It must match the **Relying party identifier** you registered in ADFS.
216+
</Callout>
209217

210218
</Tab>
211219

@@ -235,6 +243,43 @@ Users who sign in via SSO for the first time are automatically provisioned and a
235243

236244
---
237245

246+
<FAQ items={[
247+
{
248+
question: "Which SSO providers are supported?",
249+
answer: "Any identity provider that supports OIDC or SAML 2.0. This includes Okta, Microsoft Entra ID (Azure AD), Google Workspace, Auth0, OneLogin, JumpCloud, Ping Identity, ADFS, Shibboleth, and more."
250+
},
251+
{
252+
question: "What is the Domain field used for?",
253+
answer: "The domain (e.g. company.com) is how Sim routes users to the right identity provider. When a user enters their email on the SSO sign-in page, Sim matches their email domain to a registered SSO provider and redirects them there."
254+
},
255+
{
256+
question: "Do I need to provide OIDC endpoints manually?",
257+
answer: "No. For OIDC providers, Sim automatically fetches the authorization, token, and JWKS endpoints from the discovery document at {issuer}/.well-known/openid-configuration. You only need to provide the issuer URL."
258+
},
259+
{
260+
question: "What happens when a user signs in with SSO for the first time?",
261+
answer: "Sim creates an account for them automatically and adds them to your organization. No manual invite is needed. They are assigned the member role by default."
262+
},
263+
{
264+
question: "Can I still use email/password login after enabling SSO?",
265+
answer: "Yes. Enabling SSO does not disable password-based login. Users can still sign in with their email and password if they have one. Forced SSO (requiring all users on the domain to use SSO) is not yet supported."
266+
},
267+
{
268+
question: "Who can configure SSO on Sim Cloud?",
269+
answer: "Organization owners and admins can configure SSO. You must be on the Enterprise plan."
270+
},
271+
{
272+
question: "What is the Callback URL?",
273+
answer: "The Callback URL (also called Redirect URI or ACS URL) is the endpoint in Sim that receives the authentication response from your identity provider. It follows the format: https://simstudio.ai/api/auth/sso/callback/{provider-id}. You must register this URL in your identity provider before SSO will work."
274+
},
275+
{
276+
question: "How do I update or replace an existing SSO configuration?",
277+
answer: "Open Settings → Enterprise → Single Sign-On and click Edit. Update the fields and save. The existing provider configuration is replaced."
278+
}
279+
]} />
280+
281+
---
282+
238283
## Self-hosted setup
239284

240285
Self-hosted deployments use environment variables instead of the billing/plan check.
@@ -260,6 +305,7 @@ Use this when you need to register an SSO provider without going through the UI
260305
```bash
261306
# OIDC example (Okta)
262307
SSO_ENABLED=true \
308+
NEXT_PUBLIC_APP_URL=https://your-instance.com \
263309
SSO_PROVIDER_TYPE=oidc \
264310
SSO_PROVIDER_ID=okta \
265311
SSO_ISSUER=https://dev-1234567.okta.com/oauth2/default \
@@ -273,6 +319,7 @@ bun run packages/db/scripts/register-sso-provider.ts
273319
```bash
274320
# SAML example (ADFS)
275321
SSO_ENABLED=true \
322+
NEXT_PUBLIC_APP_URL=https://your-instance.com \
276323
SSO_PROVIDER_TYPE=saml \
277324
SSO_PROVIDER_ID=adfs \
278325
SSO_ISSUER=https://your-instance.com \
@@ -293,38 +340,3 @@ To remove a provider:
293340
SSO_USER_EMAIL=admin@company.com \
294341
bun run packages/db/scripts/deregister-sso-provider.ts
295342
```
296-
297-
<FAQ items={[
298-
{
299-
question: "Which SSO providers are supported?",
300-
answer: "Any identity provider that supports OIDC or SAML 2.0. This includes Okta, Azure AD (Entra ID), Google Workspace, Auth0, OneLogin, JumpCloud, Ping Identity, ADFS, Shibboleth, and more."
301-
},
302-
{
303-
question: "What is the Domain field used for?",
304-
answer: "The domain (e.g. company.com) is how Sim routes users to the right identity provider. When a user enters their email on the SSO sign-in page, Sim matches their email domain to a registered SSO provider and redirects them there."
305-
},
306-
{
307-
question: "Do I need to provide OIDC endpoints manually?",
308-
answer: "No. For OIDC providers, Sim automatically fetches the authorization, token, and JWKS endpoints from the discovery document at {issuer}/.well-known/openid-configuration. You only need to provide the issuer URL."
309-
},
310-
{
311-
question: "What happens when a user signs in with SSO for the first time?",
312-
answer: "Sim creates an account for them automatically and adds them to your organization. No manual invite is needed. They are assigned the member role by default."
313-
},
314-
{
315-
question: "Can I still use email/password login after enabling SSO?",
316-
answer: "Yes. Enabling SSO does not disable password-based login. Users can still sign in with their email and password if they have one. Forced SSO (requiring all users on the domain to use SSO) is not yet supported."
317-
},
318-
{
319-
question: "Who can configure SSO on Sim Cloud?",
320-
answer: "Organization owners and admins can configure SSO. You must be on the Enterprise plan."
321-
},
322-
{
323-
question: "What is the Callback URL?",
324-
answer: "The Callback URL (also called Redirect URI or ACS URL) is the endpoint in Sim that receives the authentication response from your identity provider. It follows the format: https://simstudio.ai/api/auth/sso/callback/{provider-id}. You must register this URL in your identity provider before SSO will work."
325-
},
326-
{
327-
question: "How do I update or replace an existing SSO configuration?",
328-
answer: "Open Settings → Enterprise → Single Sign-On and click Edit. Update the fields and save. The existing provider configuration is replaced."
329-
}
330-
]} />

0 commit comments

Comments
 (0)