Skip to content

Commit c3da544

Browse files
authored
docs(sso): correct callback host and issuer guidance, document Entra SAML and IdP-initiated behavior (#6334)
* docs(sso): use the deployed host in callback and entity ID examples * docs(sso): correct host, issuer, and provider-id guidance; document Entra SAML and IdP-initiated behavior * docs(sso): send Entra federation metadata to the field that reads it
1 parent 64b3472 commit c3da544

1 file changed

Lines changed: 57 additions & 14 deletions

File tree

  • apps/docs/content/docs/en/platform/enterprise

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

Lines changed: 57 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ Single Sign-On lets your team sign in to Sim through your company's identity pro
1616

1717
<Callout type="warning">
1818
[Verify your email domain](/platform/enterprise/verified-domains) first. SSO cannot be saved until the domain shows as **Verified**, and DNS changes take time to propagate.
19+
20+
The verified domain is what authorizes your identity provider. Removing it later immediately disables SSO sign-in for everyone on that domain until it is verified again.
1921
</Callout>
2022

21-
Decide your **Provider ID** before configuring your identity provider — it becomes part of the callback URL you register there, so changing it later means redoing that step.
23+
Decide your **Provider ID** before configuring your identity provider. It becomes part of the callback URL you register there, and it is **fixed once saved**changing it later means deleting the provider and setting it up again.
2224

2325
---
2426

@@ -72,12 +74,12 @@ The **Callback URL** shown in the form is the endpoint your identity provider mu
7274

7375
**OIDC providers** (Okta, Microsoft Entra ID, Google Workspace, Auth0):
7476
```
75-
https://sim.ai/api/auth/sso/callback/{provider-id}
77+
https://www.sim.ai/api/auth/sso/callback/{provider-id}
7678
```
7779

7880
**SAML providers** (ADFS, Shibboleth):
7981
```
80-
https://sim.ai/api/auth/sso/saml2/callback/{provider-id}
82+
https://www.sim.ai/api/auth/sso/saml2/callback/{provider-id}
8183
```
8284

8385
### 5. Save and test
@@ -88,7 +90,7 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
8890

8991
## Provider Guides
9092

91-
<Tabs items={['Okta', 'Microsoft Entra ID', 'Google Workspace', 'ADFS']}>
93+
<Tabs items={['Okta', 'Microsoft Entra ID', 'Microsoft Entra ID (SAML)', 'Google Workspace', 'ADFS']}>
9294

9395
<Tab value="Okta">
9496

@@ -100,7 +102,7 @@ Click **Save**. To test, sign out and use the **Sign in with SSO** button on the
100102
2. Select **OIDC - OpenID Connect**, then **Web Application**
101103
3. Set the **Sign-in redirect URI** to your Sim callback URL:
102104
```
103-
https://sim.ai/api/auth/sso/callback/okta
105+
https://www.sim.ai/api/auth/sso/callback/okta
104106
```
105107
4. Under **Assignments**, grant access to the relevant users or groups
106108
5. Copy the **Client ID** and **Client Secret** from the app's **General** tab
@@ -130,7 +132,7 @@ The issuer URL uses Okta's default authorization server, which is pre-configured
130132
1. Go to **Microsoft Entra ID → App registrations → New registration**
131133
2. Under **Redirect URI**, select **Web** and enter your Sim callback URL, using the Provider ID you chose:
132134
```
133-
https://sim.ai/api/auth/sso/callback/azure-ad-acme
135+
https://www.sim.ai/api/auth/sso/callback/azure-ad-acme
134136
```
135137
3. After registration, go to **Certificates & secrets → New client secret** and copy the value immediately — it won't be shown again
136138
4. Go to **Overview** and copy the **Application (client) ID** and **Directory (tenant) ID**
@@ -150,6 +152,41 @@ The issuer URL uses Okta's default authorization server, which is pre-configured
150152

151153
</Tab>
152154

155+
<Tab value="Microsoft Entra ID (SAML)">
156+
157+
### Microsoft Entra ID (SAML 2.0)
158+
159+
Use this when your tenant is configured for SAML rather than OIDC. Both are supported; OIDC is simpler if you have the choice.
160+
161+
**In Azure** ([official docs](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/add-application-portal-setup-sso)):
162+
163+
1. Go to **Enterprise applications → New application → Create your own application**, choose **Integrate any other application you don't find in the gallery**
164+
2. Open **Single sign-on** and select **SAML**
165+
3. Edit **Basic SAML Configuration** and set both values from Sim's SSO settings page:
166+
- **Identifier (Entity ID)** — the **SP Entity ID** field
167+
- **Reply URL (Assertion Consumer Service URL)** — the **ACS URL** field
168+
4. Under **Attributes & Claims**, confirm the default claims are present. Sim reads the standard schema claim URIs for email, name, and name identifier
169+
5. Under **SAML Certificates**, download **Certificate (Base64)**. Its contents go in Sim's **Certificate** field, which is required. You can optionally also download **Federation Metadata XML** and paste it into Sim's **IDP Metadata XML** field under **Advanced Options** — it does not replace the certificate
170+
6. From the **Set up** panel for your application, copy the **Login URL** and the **Microsoft Entra Identifier**
171+
7. Under **Users and groups**, assign the people who should be able to sign in — Microsoft rejects unassigned users before they reach Sim
172+
173+
**In Sim:**
174+
175+
| Field | Value |
176+
|-------|-------|
177+
| Provider Type | SAML |
178+
| Provider ID | `azure-ad-acme` (must be globally unique) |
179+
| Issuer URL | **Microsoft Entra Identifier**, e.g. `https://sts.windows.net/{tenant-id}/` |
180+
| Domain | `company.com` |
181+
| Entry Point URL | **Login URL** from Entra |
182+
| Certificate | Contents of the Base64 certificate |
183+
184+
<Callout type="info">
185+
The **Identifier (Entity ID)** you set in Entra is what Sim validates the assertion's audience against. If it does not match the **SP Entity ID** shown in Sim exactly, sign-in fails with an audience mismatch.
186+
</Callout>
187+
188+
</Tab>
189+
153190
<Tab value="Google Workspace">
154191

155192
### Google Workspace (OIDC)
@@ -160,7 +197,7 @@ The issuer URL uses Okta's default authorization server, which is pre-configured
160197
2. Set the application type to **Web application**
161198
3. Add your Sim callback URL to **Authorized redirect URIs**:
162199
```
163-
https://sim.ai/api/auth/sso/callback/google-workspace
200+
https://www.sim.ai/api/auth/sso/callback/google-workspace
164201
```
165202
4. Copy the **Client ID** and **Client Secret**
166203

@@ -189,13 +226,13 @@ The issuer URL uses Okta's default authorization server, which is pre-configured
189226

190227
1. Open **AD FS Management → Relying Party Trusts → Add Relying Party Trust**
191228
2. Choose **Claims aware**, then **Enter data about the relying party manually**
192-
3. Set the **Relying party identifier** (Entity ID) to your Sim base URL:
229+
3. Set the **Relying party identifier** (Entity ID) to the **SP Entity ID** shown in Sim's SSO settings. SAML compares the assertion's audience against it, so it must match exactly:
193230
```
194-
https://sim.ai
231+
https://www.sim.ai
195232
```
196233
4. Add an endpoint: **SAML Assertion Consumer Service** (HTTP POST) with the URL:
197234
```
198-
https://sim.ai/api/auth/sso/saml2/callback/adfs
235+
https://www.sim.ai/api/auth/sso/saml2/callback/adfs
199236
```
200237
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.
201238
6. Note the **ADFS Federation Service endpoint URL** (e.g. `https://adfs.company.com/adfs/ls`)
@@ -206,13 +243,15 @@ The issuer URL uses Okta's default authorization server, which is pre-configured
206243
|-------|-------|
207244
| Provider Type | SAML |
208245
| Provider ID | `adfs` |
209-
| Issuer URL | `https://sim.ai` |
246+
| Issuer URL | `https://adfs.company.com/adfs/services/trust` (the ADFS Federation Service identifier) |
210247
| Domain | `company.com` |
211248
| Entry Point URL | `https://adfs.company.com/adfs/ls` |
212249
| Certificate | Contents of the `.pem` file |
213250

214251
<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.
252+
The **Issuer URL** is the identity provider's own identifier, found in ADFS under **Service → Federation Service Properties → Federation Service identifier**. It is not Sim's URL — Sim's identifier is the **SP Entity ID** shown in the SSO settings, which you register in ADFS as the relying party identifier.
253+
254+
Sim requires this field to use `https`. ADFS often defaults its Federation Service identifier to an `http://` URI; if yours does, change it to `https` in ADFS so both sides agree.
216255
</Callout>
217256

218257
</Tab>
@@ -233,6 +272,10 @@ Once SSO is configured, users with your domain (`company.com`) can sign in throu
233272

234273
Users who sign in via SSO for the first time are automatically provisioned and added to your organization — no manual invite required.
235274

275+
<Callout type="warning">
276+
Sign-in must start from Sim. Launching from your identity provider's app portal (Microsoft's **My Apps**, Okta's dashboard tile) sends an unsolicited assertion, which Sim rejects. This is deliberate — accepting them would let anyone replay an assertion into your tenant — but it means an IdP-initiated test fails even when the configuration is correct.
277+
</Callout>
278+
236279
SSO provisioning creates internal organization members. External workspace members are different: they are invited to a specific workspace without joining your organization or consuming one of your seats.
237280

238281
<Callout type="info">
@@ -264,15 +307,15 @@ SSO provisioning creates internal organization members. External workspace membe
264307
},
265308
{
266309
question: "A user already has an account with the same email — what happens when they sign in with SSO?",
267-
answer: "Sim links the SSO identity to that account automatically. Linking is authorized by your verified domain: because you proved ownership of the domain before configuring SSO, Sim treats your identity provider as authoritative for email addresses on it. This works the same for OIDC and SAML, and does not depend on your IdP sending an email_verified claim — Microsoft Entra, for example, never sends one."
310+
answer: "Sim links the SSO identity to that account automatically. Linking is authorized by your verified domain: because you proved ownership of the domain before configuring SSO, Sim treats your identity provider as authoritative for email addresses on it. This works the same for OIDC and SAML, and does not depend on your IdP sending an email_verified claim — Microsoft Entra, for example, never sends one. Matching is by email address, so the address your IdP asserts must be identical to the one on the existing account. If it differs — a privileged or admin variant such as p-alice@company.com, or a different alias — Sim treats it as a new person and creates a separate account rather than linking."
268311
},
269312
{
270313
question: "Who can configure SSO on Sim Cloud?",
271314
answer: "Organization owners and admins can configure SSO. You must be on the Enterprise plan."
272315
},
273316
{
274317
question: "What is the Callback URL?",
275-
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. For OIDC providers it follows the format: https://sim.ai/api/auth/sso/callback/{provider-id}. For SAML providers it is: https://sim.ai/api/auth/sso/saml2/callback/{provider-id}. You must register this URL in your identity provider before SSO will work."
318+
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. For OIDC providers it follows the format: https://www.sim.ai/api/auth/sso/callback/{provider-id}. For SAML providers it is: https://www.sim.ai/api/auth/sso/saml2/callback/{provider-id}. You must register this URL in your identity provider before SSO will work."
276319
},
277320
{
278321
question: "How do I update or replace an existing SSO configuration?",

0 commit comments

Comments
 (0)