Skip to content

Commit b58a7a3

Browse files
authored
Merge branch 'main' into carl/console
2 parents 7515bba + 39862f4 commit b58a7a3

File tree

8 files changed

+153
-15
lines changed

8 files changed

+153
-15
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: Trigger Algolia Index Update
2+
run-name: Trigger Algolia Index Update by @${{ github.actor }}
3+
4+
on:
5+
push:
6+
branches:
7+
- main
8+
paths:
9+
- '**.mdx'
10+
- 'manifest.json'
11+
12+
jobs:
13+
trigger:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Trigger smallstep.com workflow
17+
uses: peter-evans/repository-dispatch@ff45666b9427631e3450c54a1bcbee4d9ff4d7c0 # v3.0.0
18+
with:
19+
token: ${{ secrets.ALGOLIA_INDEX_TRIGGER_TOKEN }}
20+
repository: smallstep/smallstep.com
21+
event-type: docs-updated

graphics/entra-id-mappings.png

145 KB
Loading

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
},

step-ca/configuration.mdx

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
updated_at: September 18, 2025
2+
updated_at: November 03, 2025
33
title: Configuring step-ca
44
html_title: Configuring open source step-ca
55
description: Learn how to configure step-ca
@@ -256,31 +256,31 @@ the `--password-file` flag accepts
256256

257257
- **policy**: authority-wide policy for certificate identifiers. See [Policies](./policies.mdx).
258258

259-
- **disableIssuedAtCheck**: ☠️ disable a check verifying that provisioning tokens must be issued after the CA has booted. This claim is one prevention against token reuse. The default value is false. Do not change this unless you know what you are doing.
259+
- **disableIssuedAtCheck**: ☠️ disable a check verifying that provisioning tokens must be issued after the CA has booted. This claim is one prevention against token reuse. The default value is false. Do not change this unless you know what you are doing. All time duration values follow [Go's `time.Duration` string format](https://pkg.go.dev/time#ParseDuration).
260260

261261
- **claims**: default validation for requested attributes in the certificate request. Can be overridden by similar claims objects defined by individual provisioners.
262262

263-
- **minTLSCertDuration**: do not allow certificates with a duration less than this value.
263+
- **minTLSCertDuration**: do not allow TLS certificates with a duration less than this value.
264264

265-
- **maxTLSCertDuration**: do not allow certificates with a duration greater than this value.
265+
- **maxTLSCertDuration**: do not allow TLS certificates with a duration greater than this value.
266266

267-
- **defaultTLSCertDuration**: if no certificate validity period is specified, use this value.
267+
- **defaultTLSCertDuration**: if no TLS certificate validity period is specified, use this value.
268268

269269
- **disableRenewal**: do not allow any certificates to be renewed. The default is false.
270270

271271
- **allowRenewalAfterExpiry**: ☠️ allow expired certificates to be renewed. The default is false. This option adds security risk; proceed with caution and consider alternatives.
272272

273-
- **minUserSSHCertDuration**: do not allow certificates with a duration less than this value.
273+
- **minUserSSHCertDuration**: do not allow SSH user certificates with a duration less than this value.
274274

275-
- **maxUserSSHCertDuration**: do not allow certificates with a duration greater than this value.
275+
- **maxUserSSHCertDuration**: do not allow SSH user certificates with a duration greater than this value.
276276

277-
- **defaultUserSSHCertDuration**: if no certificate validity period is specified, use this value.
277+
- **defaultUserSSHCertDuration**: if no SSH user certificate validity period is specified by the client, use this value.
278278

279-
- **minHostSSHCertDuration**: do not allow certificates with a duration less than this value.
279+
- **minHostSSHCertDuration**: do not allow SSH host certificates with a duration less than this value.
280280

281-
- **maxHostSSHCertDuration**: do not allow certificates with a duration greater than this value.
281+
- **maxHostSSHCertDuration**: do not allow SSH host certificates with a duration greater than this value.
282282

283-
- **defaultHostSSHCertDuration**: if no certificate validity period is specified, use this value.
283+
- **defaultHostSSHCertDuration**: if no SSH host certificate validity period is specified by the client, use this value.
284284

285285
- **enableSSHCA**: enable this provisioner to generate SSH Certificates. The default value is false.
286286

tutorials/connect-intune-to-smallstep.mdx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ In this step, we’ll tie everything together by creating Windows policy to enro
164164
capi:store-location=machine;store=My;issuer=Smallstep (<TeamSlug>) Agents Intermediate CA;cn=step-agent-bootstrap
165165
```
166166
Replace `<TeamSlug>` in the “Certificate URI” with your team’s slug.
167+
If your team was created before October, 2024,
168+
your issuer CA may have a common name without the team slug ("Smallstep Agents Intermediate CA").
169+
Not sure? Check your [Authority list](https://smallstep.com/app/?next=/cm/authorities).
167170
4. Leave the other settings as is.
168171
5. Choose “OK”
169172
5. In the Assignments tab:

tutorials/connect-jamf-pro-to-smallstep.mdx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,10 @@ Next, we’ll configure the Script we just created to run on your client devices
133133
1. Under Options → General:
134134
- Display name: Smallstep Agent
135135
- Trigger: Login
136-
- Execution Frequency: Ongoing
136+
- Execution Frequency: Once every week
137137

138-
*Note: With this policy, the package will be installed at the device’s next check-in, typically within 15 minutes.*
138+
*Note: Adjust this policy as needed for your organization.
139+
In this example, the package will be installed once a week, at the next login on the device.*
139140

140141
2. Under Options → Packages → Configure
141142
- Choose the **Smallstep Agent** package you created earlier

tutorials/connect-workspace-one-to-smallstep.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
updated_at: September 17, 2025
2+
updated_at: October 28, 2025
33
title: Connect Workspace One UEM to Smallstep
44
html_title: VMware Workspace ONE Integration Guide
55
description: Connect Workspace ONE UEM to Smallstep for unified device identity. Enterprise guide for cross-platform device security management.
@@ -77,6 +77,9 @@ Within a few minutes after adding the connection, you should see all of your Wor
7777
Set-ItemProperty -Path "HKLM:\Software\Policies\Smallstep" -Name "Certificate" -Value "capi:store-location=machine;store=My;issuer=Smallstep (<team-id>) Agents Intermediate CA;cn=$env:DEVICE_ID"
7878
```
7979

80+
If your team was created before October, 2024,
81+
your issuer CA may have a common name without the team slug ("Smallstep Agents Intermediate CA").
82+
Not sure? Check your [Authority list](https://smallstep.com/app/?next=/cm/authorities).
8083
4. In the Variables tab, click **Add**. Set the variable **Key** to `DEVICE_ID` and the variable **Value** to `{DeviceUuId}`
8184

8285
### 4. Deploy and configure the Smallstep Agent
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
updated_at: October 30, 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+
* Reactivate Users
24+
25+
## Step By Step Instructions
26+
27+
### Step 1. Create an Entra ID Enterprise Application
28+
29+
1. In Entra ID, visit [Browse Entra Gallery](https://portal.azure.com/#view/Microsoft_AAD_IAM/AppGalleryBladeV2) and choose “+ Create your own application”.
30+
2. Name the application and use the default “Non-gallery” option.
31+
3. In your new Enterprise Application, visit Manage → Users and groups.
32+
4. Assign the groups or users you’d like to sync to Smallstep. You may want to create new groups for Smallstep users.
33+
34+
### Step 2. Enable SSO
35+
36+
#### In Entra ID
37+
38+
1. Your Enterprise Application comes with an App Registration.
39+
2. Go to [App registrations](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) and find your Smallstep application in the list.
40+
3. In the App Registration, visit “Manage → Certificates & secrets”
41+
4. Create a new Client Secret
42+
5. Set the client secret description and expiry as desired
43+
6. Save the Client ID and Client Secret Value for later
44+
7. Look up your directory's Tenant ID, and save it for later
45+
46+
##### In Smallstep
47+
48+
1. Go to [Connect an Entra ID IdP](https://smallstep.com/app/?next=/settings/users/identity-providers/azuread/connect)
49+
2. Fill the Client ID, Client Secret, and Tenant ID you saved.
50+
51+
52+
### Step 3. Enable User Provisioning
53+
54+
1. Smallstep will send you a SCIM URL and Secret Token.
55+
2. In Entra ID, return to your Smallstep Enterprise Application.
56+
3. Go to Manage → Provisioning
57+
4. Set the provisioning mode to **Automatic**.
58+
5. Expand **Admin Credentials:**
59+
- Supply the SCIM **Tenant URL** and **Secret Token** you received from Smallstep.
60+
- Choose **Test Connection** and make sure that it works.
61+
- Save.
62+
63+
### Step 4. Turn on Provisioning
64+
65+
1. Return to the **Provisioning** panel.
66+
2. Choose **Start Provisioning**.
67+
68+
> 🤦‍♂️ 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.
69+
>
70+
71+
### Step 5. Adjust user attribute mappings
72+
73+
1. In your Smallstep Enterprise Application, the Manage → Attribute Mappings blade should now be accessible. Choose it.
74+
2. Choose “Syncronize Entra ID Active Directory Users to customappsso”
75+
3. The mappings you’ll want for Smallstep are:
76+
77+
![Entra ID mappings](/graphics/entra-id-mappings.png)
78+
79+
Most of these are part of the default mappings.
80+
81+
The only two you will need to customize are:
82+
83+
- If you're using Smallstep SSH, the `userName` attribute determines the name of a user’s POSIX account. Update `userName` to map to `ToLower(Replace([userPrincipalName], , "(?<Suffix>@(.)*)", "Suffix", "", , ), )`.
84+
- Add `externalId`, with a mapping to `objectId`. This should be a unique ID representing the user that is not reusable.
85+
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)