Skip to content

Commit 9a5d1df

Browse files
committed
Draft of Entra ID setup
1 parent 2e12224 commit 9a5d1df

File tree

2 files changed

+111
-1
lines changed

2 files changed

+111
-1
lines changed

manifest.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,12 @@
7979
"title": "Add Users to Smallstep",
8080
"routes": [
8181
{
82-
"title": "Sync Okta Users (SCIM)",
82+
"title": "Sync Okta Users",
8383
"path": "/tutorials/sync-okta-users-to-smallstep.mdx"
84+
},
85+
{
86+
"title": "Sync Entra ID Users",
87+
"path": "/tutorials/sync-entra-id-users-to-smallstep.mdx"
8488
}
8589
]
8690
},
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
updated_at: October 28, 2025
3+
title: Sync Entra ID Users to Smallstep
4+
html_title: Sync Microsoft Entra ID Users to Smallstep
5+
description: Integrate Smallstep with Microsoft Entra ID, syncing identity provider users for device identity.
6+
---
7+
8+
### Prerequisites
9+
10+
You will need:
11+
12+
* A Smallstep team. [Register here](https://smallstep.com/signup)
13+
* An Entra ID tenant with subscription P1 or higher
14+
* Global Administrator access to the account
15+
16+
### Features
17+
18+
The following provisioning features are supported:
19+
20+
* Push Groups and New Users
21+
* Push Profile or Group Updates
22+
* Push User Deactivation
23+
* When users are deactivated in Entra ID, they will be deactivated in Smallstep.
24+
* Reactivate Users
25+
26+
## Step By Step Instructions
27+
28+
### Step 1. Create an Entra ID Enterprise Application
29+
30+
1. In Entra ID, visit [Browse Entra Gallery](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and choose “+ Create your own application”.
31+
2. Name the application and use the default “Non-gallery” option.
32+
3. In your new Enterprise Application, visit Manage → Users and groups.
33+
4. Assign the groups or users you’d like to sync to Smallstep. You may want to create new groups for Smallstep users.
34+
35+
### Step 2. Enable SSO
36+
37+
#### In Entra ID
38+
39+
1. Your Enterprise Application comes with an App Registration.
40+
2. Go to [App registrations](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) and find your Smallstep application in the list.
41+
3. In the App Registration, visit “Manage → Certificates & secrets”
42+
4. Create a new Client Secret
43+
5. Set the client secret description and expiry as desired
44+
6. Save the Client ID and Client Secret Value for later
45+
7. Look up your directory's Tenant ID, and save it for later
46+
47+
##### In Smallstep
48+
49+
1. Go to [Connect an Entra ID IdP](https://smallstep.com/app/?next=/settings/users/identity-providers/azuread/connect)
50+
2. Fill the Client ID, Client Secret, and Tenant ID you saved.
51+
52+
53+
### Step 3. Enable User Provisioning
54+
55+
1. Smallstep will send you a SCIM URL and Secret Token.
56+
2. In Entra ID, return to your Smallstep Enterprise Application.
57+
3. Go to Manage → Provisioning
58+
4. Set the provisioning mode to **Automatic**.
59+
5. Expand **Admin Credentials:**
60+
- Supply the SCIM **Tenant URL** and **Secret Token** you received from Smallstep.
61+
- Choose **Test Connection** and make sure that it works.
62+
- Save.
63+
64+
### Step 4. Turn on Provisioning
65+
66+
1. Return to the **Provisioning** panel.
67+
2. Choose **Start Provisioning**.
68+
69+
> 🤦‍♂️ There’s a quirk in Microsoft’s UI here, and you may see an error when saving after turning provisioning on. If so, wait 60 seconds and try Save again.
70+
>
71+
72+
### Step 5. Adjust user attribute mappings
73+
74+
1. In your Smallstep Enterprise Application, the Manage → Attribute Mappings blade should now be accessible. Choose it.
75+
2. Choose “Syncronize Entra ID Active Directory Users to customappsso”
76+
3. The mappings you’ll want for Smallstep are:
77+
78+
![Screenshot 2025-04-16 at 4.53.14 PM.png](Configure%20Entra%20ID%20User%20Sync%20(SCIM)/Screenshot_2025-04-16_at_4.53.14_PM.png)
79+
80+
Most of these are part of the default mappings.
81+
82+
The only two you will need to customize are:
83+
84+
- Update `userName` to map to `ToLower(Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , ), )`. The `userName` attribute determines the name of a user’s POSIX account, when needed (for example, with SSH).
85+
- Add `externalId`, with a mapping to `objectId`. This should be a unique ID representing the user that is not reusable.
86+
4. Remove any other default attributes that are not in the list above. The only attributes you need to send to Smallstep are:
87+
- `userName`
88+
- `displayName`
89+
- `emails[type eq "work"].value`
90+
- `name.givenName`
91+
- `name.familyName`
92+
- `externalId`
93+
5. Save your user attribute mappings.
94+
95+
### Step 6. Confirm the directory connection
96+
97+
1. Return to the Smallstep dashboard.
98+
2. In the Users tab, you should now see your Entra ID users
99+
3. Sign out
100+
4. You should be offered the option to sign in with SSO.
101+
5. Finally, let Smallstep know which of your SSO users should be team Owners or Admins in Smallstep.
102+
- Admins have dashboard read/write privileges (users, devices, etc.)
103+
- Owners have all the same privileges as Admins, with the additional privilege that Owners can create Admins.
104+
105+
> **Don't see your users and groups?** Microsoft's SCIM service may add a 40-minute delay after you set it up. You can force an update by clicking **Restart provisioning** in the Provisioning panel. Even then, it may take a minute to sync with Smallstep.
106+

0 commit comments

Comments
 (0)