Skip to content

Commit 3a496c3

Browse files
authored
docs: Document supported SCIM features and correct the deprovisioning and base URL guidance (#8221)
1 parent 3f8978c commit 3a496c3

1 file changed

Lines changed: 68 additions & 28 deletions

File tree

  • docs/docs/administration-and-security/access-control

docs/docs/administration-and-security/access-control/scim.md

Lines changed: 68 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,28 @@ With SCIM, you can:
1818

1919
- Create Flagsmith users ahead of their first login, so they already have the right group memberships and permissions
2020
waiting for them.
21-
- Remove users from your Flagsmith organisation when they are deprovisioned in your identity provider
21+
- Remove users from your Flagsmith organisation when they are deprovisioned in your identity provider.
2222
- Sync group membership so that adding or removing a user from a group in your identity provider is reflected in
2323
Flagsmith automatically.
2424

25-
SCIM works alongside your existing SSO configuration. SSO handles authentication (how users log in), while SCIM handles
25+
SCIM works alongside your existing SSO configuration: SSO handles authentication (how users log in), while SCIM handles
2626
provisioning (which users and groups exist in Flagsmith, and who belongs to what).
2727

28+
## Supported features
29+
30+
Flagsmith's SCIM 2.0 API supports:
31+
32+
- Creating users.
33+
- Deleting users. See [User lifecycle](#user-lifecycle) for what is and is not removed.
34+
- Pushing groups: create and update [permission groups](/administration-and-security/access-control/rbac#groups) and
35+
their membership, and delete groups.
36+
- Filtering and pagination on the `/Users` and `/Groups` list endpoints.
37+
38+
Flagsmith does not support:
39+
40+
- Deactivating users through the `active` attribute. Use DELETE requests to deprovision users instead.
41+
- Profile sourcing, `/Me`, `/Bulk`, sorting, and ETag concurrency control.
42+
2843
## Prerequisites
2944

3045
- Your Flagsmith organisation must have an active Enterprise licence.
@@ -35,9 +50,8 @@ provisioning (which users and groups exist in Flagsmith, and who belongs to what
3550

3651
:::caution
3752

38-
Flagsmith requires the SCIM `userName` attribute to be the user's email address. Requests with a `userName` that is not
39-
a valid email address are rejected with a 400 response. Ensure your identity provider is configured to send email
40-
addresses as SCIM usernames — for example, in Okta, set the application username format to "Email".
53+
Flagsmith requires the SCIM `userName` attribute to be the user's email address. Ensure your identity provider is
54+
configured to send email addresses as SCIM usernames.
4155

4256
:::
4357

@@ -48,13 +62,32 @@ When your identity provider provisions a user through SCIM:
4862
2. If the user already exists (matched by email, case-insensitive), they are added to the organisation if they are not
4963
already a member.
5064

51-
When your identity provider deprovisions a user (sets `active` to `false` or sends a DELETE request):
65+
When your identity provider deprovisions a user by sending a DELETE request:
5266

5367
1. The user is removed from the organisation in Flagsmith. This also removes all their project and environment
5468
permissions within that organisation, and removes them from all
5569
[permission groups](/administration-and-security/access-control/rbac#groups) in that organisation.
5670
2. The user's data (audit log entries, change request history) is preserved.
5771

72+
:::caution
73+
74+
Deprovisioning is supported through DELETE requests only. Flagsmith does not act on the SCIM `active` attribute.
75+
76+
:::
77+
78+
### User attributes
79+
80+
Flagsmith reads the following attributes from SCIM user requests:
81+
82+
| Attribute | Required | Maps to |
83+
| ----------------- | -------- | ------------- |
84+
| `userName` | Yes | Email address |
85+
| `name.givenName` | No | First name |
86+
| `name.familyName` | No | Last name |
87+
88+
All other attributes are ignored. If your identity provider lets you choose which attributes to send, sending only the
89+
three above keeps your configuration simpler and avoids implying that Flagsmith stores data it does not.
90+
5891
## Group lifecycle
5992

6093
SCIM groups map to Flagsmith [permission groups](/administration-and-security/access-control/rbac#groups) within the
@@ -93,10 +126,13 @@ shown only once and cannot be retrieved later. If you lose it, you can regenerat
93126

94127
Add Flagsmith as a SCIM application in your identity provider. You will need:
95128

96-
- **SCIM base URL**: `https://flagsmith.example.com/api/v1/scim/v2/`, replacing `flagsmith.example.com` with your
97-
Flagsmith API domain. On Flagsmith SaaS, this is `https://api.flagsmith.com/api/v1/scim/v2/`.
129+
- **SCIM base URL**: `https://flagsmith.example.com/api/v1/scim/v2`, replacing `flagsmith.example.com` with your
130+
Flagsmith API domain. On Flagsmith SaaS, this is `https://api.flagsmith.com/api/v1/scim/v2`.
98131
- **Bearer token**: the token you copied in the previous step.
99132

133+
Both values are shown on the SCIM page in Flagsmith, so you can copy them directly rather than assembling the URL by
134+
hand.
135+
100136
The exact steps depend on your identity provider. See the guides below for common providers.
101137

102138
### 3. Assign users and groups
@@ -116,29 +152,32 @@ You can view and manage SCIM configurations from **Organisation Settings** > **S
116152

117153
:::note
118154

119-
These guides were last verified in May 2026. If your identity provider's UI has changed, refer to their documentation
155+
These guides were last verified in July 2026. If your identity provider's UI has changed, refer to their documentation
120156
for the most up-to-date steps.
121157

122158
:::
123159

124160
### Okta
125161

126-
:::note
127-
128-
We're working with Okta to enable SCIM for our Flagsmith OIN application. We'll update the docs as soon as we confirm it's working.
129-
130-
:::
162+
These steps are for the Flagsmith application from the Okta Integration Network catalogue.
131163

164+
1. Get your SCIM bearer token as described under [Setup](#1-create-a-scim-configuration).
132165
1. Go to the "Applications" page and open the Flagsmith application.
133-
2. Go to the "General" tab and click "Edit" under "App Settings".
134-
3. Enable "Provisioning" and click "Save".
135-
4. A new "Provisioning" tab will appear. Open it and click "Edit" under "SCIM Connection".
136-
5. Set the SCIM connector base URL to your Flagsmith SCIM base URL.
137-
6. Set the unique identifier field to `email`.
138-
7. Under "Supported provisioning actions", enable: Push New Users, Push Profile Updates, and Push Groups.
139-
8. Set the authentication mode to "HTTP Header" and paste your SCIM bearer token.
140-
9. Click "Test Connector Configuration" to verify the connection, then save.
141-
10. Still on the "Provisioning" tab, under "To App", enable: Create Users, Update User Attributes, and Deactivate Users.
166+
1. On the "Sign On" tab, under "Advanced Sign-on Settings", set API Base URL to your Flagsmith API domain. On Flagsmith
167+
SaaS this is `https://api.flagsmith.com`.
168+
1. Still on the "Sign On" tab, under "Credentials Details", set the application username format to "Email". Flagsmith
169+
requires the SCIM `userName` to be a valid email address.
170+
1. Go to the "General" tab, click "Edit" under "App Settings", enable "Provisioning" and click "Save". A "Provisioning"
171+
tab appears.
172+
1. On the "Provisioning" tab, select "Integration" and click "Edit". Tick "Enable API integration" and paste your SCIM
173+
bearer token into **API Token**.
174+
1. Click "Test API Credentials" to verify the connection, then save.
175+
1. Select "To App" and click "Edit", then enable "Create Users" and "Update User Attributes".
176+
177+
To deprovision a user, unassign them from the application in Okta. Okta sends a DELETE request and Flagsmith removes the
178+
user from your organisation.
179+
180+
To sync groups, use the "Push Groups" tab to select the Okta groups you want to push to Flagsmith.
142181

143182
### Microsoft Entra ID (Azure AD)
144183

@@ -169,14 +208,13 @@ All SCIM endpoints are under `/api/v1/scim/v2/` and require a valid SCIM bearer
169208
API supports filtering (e.g. `filter=userName eq "user@example.com"`) and pagination (`startIndex`, `count`) on list
170209
endpoints as defined by the SCIM 2.0 specification.
171210

172-
173211
## Troubleshooting
174212

175213
### Users are not being provisioned
176214

177-
- Verify the SCIM base URL ends with `/api/v1/scim/v2/` (including the trailing slash).
215+
- Verify the SCIM base URL in your identity provider matches the one shown in Flagsmith under **Organisation
216+
Settings** > **SSO** > **SCIM**.
178217
- Verify the bearer token is correct. If in doubt, regenerate it.
179-
- Check that the user's email address is included in the SCIM request. Flagsmith requires an email to create a user.
180218
- Check that the SCIM `userName` attribute is the user's email address. Flagsmith rejects requests with a non-email
181219
`userName` with a 400 response.
182220

@@ -194,5 +232,7 @@ endpoints as defined by the SCIM 2.0 specification.
194232

195233
### Deprovisioned users still appear in the organisation
196234

197-
- Check that your identity provider is sending a PATCH request with `active` set to `false`, or a DELETE request, when
198-
deprovisioning a user. Some identity providers require explicit configuration to send deprovisioning events.
235+
- Check that your identity provider is sending a DELETE request when deprovisioning a user. Flagsmith does not act on
236+
the `active` attribute, so a PATCH request setting `active` to `false` does not remove the user — it returns a 501
237+
response. In Okta, this means removing the user from the application rather than deactivating them.
238+
- Some identity providers require explicit configuration to send deprovisioning events.

0 commit comments

Comments
 (0)