Skip to content

Commit a691e88

Browse files
Merge pull request #21239 from sarahsanders-docker/ENGDOCS-2269
Update JIT, SCIM, and group mapping guides
2 parents 60bf7c8 + 8a29833 commit a691e88

File tree

6 files changed

+148
-142
lines changed

6 files changed

+148
-142
lines changed

content/manuals/security/for-admins/provisioning/group-mapping.md

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,30 @@ aliases:
77
- /admin/organization/security-settings/group-mapping/
88
- /docker-hub/group-mapping/
99
- /security/for-admins/group-mapping/
10+
weight: 40
1011
---
1112

12-
With directory group-to-team provisioning from your IdP, user updates will automatically sync with your Docker organizations and teams. You can use group mapping once you have configured [single sign-on (SSO)](../single-sign-on/_index.md).
13+
Group mapping lets you sync user groups from your identity provider (IdP) with teams in your Docker organization. This automates team membership management, keeping your Docker teams up to date based on changes in your IdP. You can use group mapping once you have configured [single sign-on (SSO)](../single-sign-on/_index.md).
1314

1415
> [!TIP]
1516
>
16-
> Group mapping is ideal for adding a user to multiple organizations or multiple teams within one organization. If you don't need to set up multi-organization or multi-team assignment, you can use [user-level attributes](scim.md#set-up-role-mapping).
17+
> Group mapping is ideal for adding users to multiple organizations or multiple teams within one organization. If you don't need to set up multi-organization or multi-team assignment, you can use SCIM [user-level attributes](scim.md#set-up-role-mapping).
1718
1819
## How group mapping works
1920

20-
IdPs share with Docker the main attributes of every authorized user through SSO, such as email address, name, surname, and groups. Just-in-Time (JIT) Provisioning uses these attributes to create or update the user’s Docker profile and their associations with organizations and teams on Docker Hub.
21+
With group mapping enabled, when a user authenticates through SSO, your IdP shares key attributes with Docker, such as the user's email address, name, and groups. Docker uses these attributes to create or update the user's profile, as well as to manage their team and organization assignments. With group mapping, users’ team memberships in Docker automatically reflect changes made in your IdP groups.
2122

22-
Docker uses the email address of the user to identify them on the platform. Every Docker account must have a unique email address at all times.
23+
It's important to note that Docker uses the user's email address as a unique identifier. Each Docker account must always have a unique email address.
2324

2425
## Use group mapping
2526

26-
To correctly assign your users to Docker teams, you must create groups in your IdP following the naming pattern `organization:team`. For example, if you want to manage provisioning for the team "developers", and your organization name is "moby", you must create a group in your IdP with the name `moby:developers`.
27+
To assign users to Docker teams through your IdP, you must create groups in your IdP following the naming pattern: `organization:team`. For example, if your organization is called "moby" and you want to manage the "developers" team, the group name in your IdP should be `moby:developers`. In this example, any user added to this group in your IdP is automatically assigned to the "developers" team in Docker.
2728

28-
Once you enable group mappings in your connection, users assigned to that group in your IdP will automatically be added to the team "developers" in Docker.
29+
You can also use this format to assign users to multiple organizations. For example, to add a user to the "backend" team in the "moby" organization and the "desktop" team in the "whale" organization, the group names would be `moby:backend` and `whale:desktop`.
2930

30-
You can use this format to add a user to multiple organizations. For example, if you want to add a user to the "backend" team in the "moby" organization as well as the "desktop" team in the "whale" organization, the format would be: `moby:backend` and `whale:desktop`.
31-
32-
>**Tip**
31+
> [!TIP]
3332
>
34-
>Use the same names for the Docker teams as your group names in the IdP to prevent further configuration. When you sync groups, this creates a group if it doesn’t already exist.
33+
> Match the group names in your IdP with your Docker teams. When groups are synced, Docker creates a team if it doesn’t already exist.
3534
3635
The following lists the supported group mapping attributes:
3736

@@ -66,14 +65,14 @@ The user interface for your IdP may differ slightly from the following steps. Yo
6665

6766
To set up group mapping:
6867

69-
1. Sign in to the Okta Console to go to your application.
70-
2. Go to the **SAML Settings** for your application.
68+
1. Sign in to Okta and open your application.
69+
2. Navigate to the **SAML Settings** page for your application.
7170
3. In the **Group Attribute Statements (optional)** section, configure like the following:
7271
- **Name**: `groups`
7372
- **Name format**: `Unspecified`
7473
- **Filter**: `Starts with` + `organization:` where `organization` is the name of your organization
7574
The filter option will filter out the groups that aren't affiliated with your Docker organization.
76-
4. Create your groups by navigating to **Directory > Groups**.
75+
4. Create your groups by selecting **Directory**, then **Groups**.
7776
5. Add your groups using the format `organization:team` that matches the names of your organization(s) and team(s) in Docker.
7877
6. Assign users to the group(s) that you create.
7978

@@ -86,17 +85,17 @@ The user interface for your IdP may differ slightly from the following steps. Yo
8685

8786
To set up group mapping:
8887

89-
1. Sign in to Entra ID and go to your application.
90-
2. Go to **Manage > Single sign-on**.
88+
1. Sign in to Entra ID and open your application.
89+
2. Select **Manage**, then **Single sign-on**.
9190
3. Select **Add a group claim**.
92-
4. In **Group Claims**, select **Groups assigned to the application** with the source attribute **Cloud-only group display names (Preview)**.
91+
4. In the Group Claims section, select **Groups assigned to the application** with the source attribute **Cloud-only group display names (Preview)**.
9392
5. Select **Advanced options**, then the **Filter groups** option.
9493
6. Configure the attribute like the following:
9594
- **Attribute to match**: `Display name`
9695
- **Match with**: `Contains`
9796
- **String**: `:`
9897
7. Select **Save**.
99-
8. Go to **Groups > All groups** then select **New group** to create your group(s).
98+
8. Select **Groups**, **All groups**, then **New group** to create your group(s).
10099
9. Assign users to the group(s) that you create.
101100

102101
The next time you sync your groups with Docker, your users will map to the Docker groups you defined.
@@ -115,15 +114,15 @@ The user interface for your IdP may differ slightly from the following steps. Yo
115114

116115
To set up your groups:
117116

118-
1. Sign in to the Okta Console to go to your application.
119-
2. Select **Applications > Provisioning > Integration**.
117+
1. Sign in to Okta and open your application.
118+
2. Select **Applications**, then **Provisioning**, and **Integration**.
120119
3. Select **Edit** to enable groups on your connection, then select **Push groups**.
121120
4. Select **Save**. Saving this configuration will add the **Push Groups** tab to your application.
122-
5. Create your groups by navigating to **Directory > Groups**.
121+
5. Create your groups by navigating to **Directory** and selecting **Groups**.
123122
6. Add your groups using the format `organization:team` that matches the names of your organization(s) and team(s) in Docker.
124123
7. Assign users to the group(s) that you create.
125-
8. Return to **Applications > Provisioning > Integration**, then select the **Push Groups** tab to open the view where you can control and manage how groups are provisioned.
126-
9. Select **Push Groups > Find groups by rule**.
124+
8. Return to the **Integration** page, then select the **Push Groups** tab to open the view where you can control and manage how groups are provisioned.
125+
9. Select **Push Groups**, then **Find groups by rule**.
127126
10. Configure the groups by rule like the following:
128127
- Enter a rule name, for example `Sync groups with Docker Hub`
129128
- Match group by name, for example starts with `docker:` or contains `:` for multi-organization
@@ -145,7 +144,7 @@ The user interface for your IdP may differ slightly from the following steps. Yo
145144
Complete the following before configuring group mapping:
146145

147146
1. Sign in to Entra ID and go to your application.
148-
2. In your application, go to **Provisioning > Mappings**.
147+
2. In your application, select **Provisioning**, then **Mappings**.
149148
3. Select **Provision Microsoft Entra ID Groups**.
150149
4. Select **Show advanced options**, then **Edit attribute list**.
151150
5. Update the `externalId` type to `reference`, then select the **Multi-Value** checkbox and choose the referenced object attribute `urn:ietf:params:scim:schemas:core:2.0:Group`.
@@ -162,7 +161,7 @@ Next, set up group mapping:
162161
5. Assign the group to the provisioning group.
163162
6. Select **Start provisioning** to start the sync.
164163

165-
To verify, go to **Monitor > Provisioning logs** to see that your groups were provisioned successfully. In your Docker organization, you can check that the groups were correctly provisioned and the members were added to the appropriate teams.
164+
To verify, select **Monitor**, then **Provisioning logs** to see that your groups were provisioned successfully. In your Docker organization, you can check that the groups were correctly provisioned and the members were added to the appropriate teams.
166165

167166
{{< /tab >}}
168167
{{< /tabs >}}
@@ -175,7 +174,7 @@ Once complete, a user who signs in to Docker through SSO is automatically added
175174
176175
## More resources
177176

178-
The following videos demonstrate how to use group mapping with your IdP with SCIM enabled.
177+
The following videos demonstrate how to use group mapping with your IdP with SCIM enabled:
179178

180179
- [Video: Group mapping with Okta](https://youtu.be/c56YECO4YP4?feature=shared&t=3023)
181180
- [Video: Attribute and group mapping with Entra ID (Azure)](https://youtu.be/bGquA8qR9jU?feature=shared&t=2039)

content/manuals/security/for-admins/provisioning/just-in-time.md

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,57 +5,65 @@ title: Just-in-Time provisioning
55
linkTitle: Just-in-Time
66
---
77

8-
Just-in-Time (JIT) provisioning runs after every successful single sign-on (SSO) sign-in. JIT verifies that the user that signs in is a member of the organization and teams that they are assigned to in the IdP. When you [create your SSO connection](../single-sign-on/_index.md), JIT provisioning is turned on by default.
8+
Just-in-Time (JIT) provisioning automatically creates and updates user accounts after every successful single sign-on (SSO) authentication. JIT verifies that the user signing in belongs to the organization and the teams assigned to them in your identity provider (IdP). When you [create your SSO connection](../single-sign-on/_index.md), JIT provisioning is turned on by default.
99

1010
## SSO authentication with JIT provisioning enabled
1111

12-
After every successful SSO sign-in authentication, the JIT provisioner performs the following actions:
12+
When a user signs in with SSO and your SSO configuration has JIT provisioning enabled, the following steps occur automatically:
1313

14-
1. Checks if there's an existing Docker account with the email address of the user that just authenticated.
14+
1. The system checks if a Docker account exists for the user's email address.
1515

16-
a) If no account is found with the same email address, it creates a new Docker account using basic user attributes (email, name, and surname). The JIT provisioner generates a new username for this new account by using the email, name, and random numbers to make sure that all account usernames are unique in the platform.
16+
- If an account exists: The system uses the existing account and updates the user's full name if necessary.
17+
- If no account exists: A new Docker account is created using basic user attributes (email, name, and surname). A unique username is generated based on the user's email, name, and random numbers to ensure all usernames are unique across the platform.
1718

18-
b) If an account exists for this email address, it uses this account and updates the full name of the user’s profile if needed.
19+
2. The system checks for any pending invitations to the SSO organization.
1920

20-
2. Checks for any pending invitations to the SSO organization to auto-accept the invitation. If the invitation is specific to a group, the user is added to the invited group along with group mappings in the following step.
21+
- Invitation found: The invitation is automatically accepted.
22+
- Invitation includes a specific group: The user is added to that group within the SSO organization.
2123

22-
3. Checks if the IdP shared group mappings while authenticating the user.
24+
3. The system verifies if the IdP has shared group mappings during authentication.
2325

24-
a) If the IdP provided group mappings for the user, the user gets added to the organizations and teams indicated by the group mappings.
26+
- Group mappings provided: The user is assigned to the relevant organizations and teams.
27+
- No group mappings provided: The system checks if the user is already part of the organization. If not, the user is added to the default organization and team configured in the SSO connection.
28+
29+
The following graphic provides an overview of SSO authentication with JIT enabled:
2530

26-
b) If the IdP didn't provide group mappings, it checks if the user is already a member of the organization, or if the SSO connection is for multiple organizations (only at company level) and if the user is a member of any of those organizations. If the user isn't a member, it adds the user to the default team and organization configured in the SSO connection.
27-
2831
![JIT provisioning enabled](../../images/jit-enabled-flow.svg)
2932

3033
## SSO authentication with JIT provisioning disabled
3134

32-
When you opt to disable JIT provisioning in your SSO connection, the following actions occur:
33-
34-
1. Checks if there's an existing Docker account with the email address of the user that just authenticated.
35+
When JIT provisioning is disabled in your SSO connection, the following actions occur during authentication:
3536

36-
a) If no account is found with the same email address, it creates a new Docker account using basic user attributes (email, name, and surname). Authentication with SSO generates a new username for this new account by using the email, name, and random numbers to make sure that all account usernames are unique in the platform.
37+
1. The system checks if a Docker account exists for the user's email address.
3738

38-
b) If an account exists for this email address, it uses this account and updates the full name of the user’s profile if needed.
39+
- If an account exists: The system uses the existing account and updates the user's full name if necessary.
40+
- If no account exists: A new Docker account is created using basic user attributes (email, name, and surname). A unique username is generated based on the user's email, name, and random numbers to ensure all usernames are unique across the platform.
3941

40-
2. Checks if there are any pending invitations to the SSO organization (or, SSO organizations if the SSO connection is managed at the company level) in order to auto-accept the invitation.
42+
2. The system checks for any pending invitations to the SSO organization.
4143

42-
a) If the user isn't already a member of the organization, or doesn't have a pending invitation to join, sign in fails and the user encounters an `Access denied` error. This blocks the user from joining the organization. They need to contact an administrator to invite them to join.
44+
- Invitation found: If the user is a member of the organization or has a pending invitation, sign-in is successful, and the invitation is automatically accepted.
45+
- No invitation found: If the user is not a member of the organization and has no pending invitation, the sign-in fails, and an `Access denied` error appears. The user must contact an administrator to be invited to the organization.
4346

44-
b) If the user is a member of the organization, or has a pending invitation to join, then sign in is successful.
47+
With JIT disabled, group mapping is only available if you have [SCIM enabled](/security/for-admins/provisioning/scim/#enable-scim-in-docker). If SCIM is not enabled, users won't be auto-provisioned to groups.
4548

46-
If you disable JIT provisioning when you create or edit your SSO connection, you can still use group mapping as long as you have also [enabled SCIM](/security/for-admins/provisioning/scim/#enable-scim-in-docker). When JIT provisioning is disabled and SCIM isn't enabled, users won't be auto-provisioned to groups. For instructions on disabling JIT provisioning, see [Manage how users are provisioned](/security/for-admins/single-sign-on/manage/#manage-how-users-are-provisioned).
49+
The following graphic provides an overview of SSO authentication with JIT disabled:
4750

4851
![JIT provisioning disabled](../../images/jit-disabled-flow.svg)
4952

5053
## Disable JIT provisioning
5154

55+
> [!WARNING]
56+
>
57+
> Disabling JIT provisioning may disrupt your users' access and workflows. With JIT disabled, users will not be automatically added to your organization. Users must already be a member of the organization or have a pending invitation to successfully sign in through SSO. To auto-provision users with JIT disabled, [use SCIM](./scim.md).
58+
5259
You may want to disable JIT provisioning for reasons such as the following:
5360

5461
- You have multiple organizations, have SCIM enabled, and want SCIM to be the source of truth for provisioning
5562
- You want to control and restrict usage based on your organization's security configuration, and want to use SCIM to provision access
5663

57-
> [!WARNING]
58-
>
59-
> Disabling JIT provisioning could potentially disrupt your users' workflows. Users must already be a member of the organization or have an invitation to the organization when they authenticate with SSO in order to sign in successfully. To auto-provision users with JIT disabled, you can [use SCIM](./scim.md).
64+
Users are provisioned with JIT by default. If you enable SCIM, you can disable JIT:
6065

61-
See [Manage how users are provisioned](../single-sign-on/manage/_index.md#manage-how-users-are-provisioned) to learn how to disable JIT provisioning.
66+
1. Sign in to the [Admin Console](https://app.docker.com/).
67+
2. Select your organization or company in the left-hand navigation drop-down, and then select **SSO and SCIM**.
68+
3. In the SSO connections table, select the **Action** icon and then **Disable JIT provisioning**.
69+
4. Select **Disable** to confirm.

0 commit comments

Comments
 (0)