Skip to content

Commit f1777ac

Browse files
authored
Update provisioning references (#19735)
* update jit callouts and add step * separate management steps and update callouts * update conditional steps * add diagram and add cross-links * remove old diagram * update diagram * add details about multi-org sso * implement feedback * move beta feature banner and link to section * update tab order * update diagram and provide clarity around sso error * remove image and update faq
1 parent 2977952 commit f1777ac

File tree

15 files changed

+269
-86
lines changed

15 files changed

+269
-86
lines changed

content/faq/security/single-sign-on/idp-faqs.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,14 @@ You can add a bot account to your IDP and create an access token for it to repla
4242

4343
Yes, bot accounts need a seat, similar to a regular end user, having a non-aliased domain email enabled in the IdP and using a seat in Hub.
4444

45-
### Does Docker plan to release SAML Just-In-Time (JIT) provisioning?
45+
### Does SAML SSO use Just-in-Time provisioning?
4646

47-
The SSO implementation is already Just-In-Time. Administrators don't have to create user's accounts on Hub, they can just enable it on the IdP and have the users sign in through their domain email on Hub.
47+
> **Beta feature**
48+
>
49+
> Optional Just-in-Time (JIT) provisioning configuration is only available in Private Beta when you use the Admin Console. Otherwise, JIT is enabled by default. This feature will be available for all users soon.
50+
{ .experimental }
51+
52+
The SSO implementation uses Just-in-Time (JIT) provisioning by default. You can optionally disable JIT if you prefer not to auto-provision users, or if you opt for auto-provisioning using SCIM.
4853

4954
### Will there be IdP-initiated logins?
5055

content/faq/security/single-sign-on/users-faqs.md

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,30 @@ When SSO is enabled and enforced, your users just have to sign in using the emai
5757

5858
### Is Docker SSO fully synced with the IdP?
5959

60-
Docker SSO provides Just-In-Time (JIT) provisioning by default. This provisioning only happens when a user signs in. If a user leaves the organization, administrators must sign in to Docker Hub and manually [remove the user](../../../admin/organization/members.md#remove-a-member-or-invitee) from the organization. [SCIM](../../../security/for-admins/scim.md) is available to provide full synchronization with users and groups.
60+
> **Beta feature**
61+
>
62+
> Optional Just-in-Time (JIT) provisioning configuration is only available in Private Beta when you use the Admin Console. Otherwise, JIT is enabled by default. This feature will be available for all users soon.
63+
{ .experimental }
64+
65+
Docker SSO provides Just-in-Time (JIT) provisioning by default, with an option to disable JIT. Users are provisioned when a user authenticates with SSO. If a user leaves the organization, administrators must sign in to Docker Hub and manually [remove the user](../../../admin/organization/members.md#remove-a-member-or-invitee) from the organization.
66+
67+
[SCIM](../../../security/for-admins/scim/) is available to provide full synchronization with users and groups. When you auto-provision users with SCIM, the recommended configuration is to disable JIT so that all auto-provisioning is handled by SCIM.
6168

6269
Additionally, you can use the [Docker Hub API](/docker-hub/api/latest/) to complete this process.
6370

71+
### How does disabling Just-in-Time provisioning impact user sign-in?
72+
73+
> **Beta feature**
74+
>
75+
> Optional Just-in-Time (JIT) provisioning configuration is only available in Private Beta when you use the Admin Console. Otherwise, JIT is enabled by default. This feature will be available for all users soon.
76+
{ .experimental }
77+
78+
If a user attempts to sign in to Docker using an email address that is a verified domain for your SSO connection, they need to be a member of the organization to access it, or have a pending invitation to the organization. Users who don't meet these criteria will encounter an `Access denied` error, and will need an administrator to invite them to the organization.
79+
80+
See [SSO authentication with JIT provisioning disabled](/security/for-admins/group-mapping/#sso-authentication-with-jit-provisioning-disabled).
81+
82+
To auto-provision users without JIT provisioning, you can use [SCIM](/security/for-admins/scim/).
83+
6484
### What's the best way to provision the Docker subscription without SSO?
6585

6686
Company or organization owners can invite users through Docker Hub UI, by email address (for any user) or by Docker ID (assuming the user has created a user account on Hub already).

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

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ IdPs share with Docker the main attributes of every authorized user through SSO,
2121

2222
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.
2323

24+
### SSO authentication with JIT provisioning enabled
25+
2426
After every successful SSO sign-in authentication, the JIT provisioner performs the following actions:
2527

2628
1. Checks if there's an existing Docker account with the email address of the user that just authenticated.
@@ -29,13 +31,40 @@ After every successful SSO sign-in authentication, the JIT provisioner performs
2931

3032
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.
3133

32-
2. Checks if the IdP shared group mappings while authenticating the user.
34+
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.
35+
36+
3. Checks if the IdP shared group mappings while authenticating the user.
3337

3438
a) If the IdP provided group mappings for the user, the user gets added to the organizations and teams indicated by the group mappings.
3539

3640
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.
3741

38-
![JIT provisioning](../images/group-mapping.png)
42+
![JIT provisioning enabled](../images/jit-enabled-flow.svg)
43+
44+
### SSO authentication with JIT provisioning disabled
45+
46+
> **Beta feature**
47+
>
48+
> Optional Just-in-Time (JIT) provisioning is available in Private Beta when you use the Admin Console. If you're participating in this program, you have the option to turn off this default provisioning and disable JIT. This configuration is recommended if you're using SCIM to auto-provision users.
49+
{ .experimental }
50+
51+
When you opt to disable JIT provisioning in your SSO connection, the following actions occur:
52+
53+
1. Checks if there's an existing Docker account with the email address of the user that just authenticated.
54+
55+
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.
56+
57+
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.
58+
59+
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.
60+
61+
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.
62+
63+
b) If the user is a member of the organization, or has a pending invitation to join, then sign in is successful.
64+
65+
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/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).
66+
67+
![JIT provisioning disabled](../images/jit-disabled-flow.svg)
3968

4069
## Use group mapping
4170

content/security/for-admins/scim.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,14 @@ For additional details about supported attributes and SCIM, see [Docker Hub API
3939

4040
> **Important**
4141
>
42-
>SSO uses Just-in-Time (JIT) provisioning by default. If you [enable SCIM](scim.md#set-up-scim), JIT values still overwrite the attribute values set by SCIM provisioning whenever users log in. To avoid conflicts, make sure your JIT values match your SCIM values. For more information, see [SSO attributes](../for-admins/single-sign-on/configure/configure-idp.md#sso-attributes).
42+
> SSO uses Just-in-Time (JIT) provisioning by default. If you [enable SCIM](scim.md#set-up-scim), JIT values still overwrite the attribute values set by SCIM provisioning whenever users log in. To avoid conflicts, make sure your JIT values match your SCIM values. For more information, see [SSO attributes](../for-admins/single-sign-on/configure/configure-idp.md#sso-attributes).
4343
{.important}
4444

45+
> **Beta feature**
46+
>
47+
> Optional Just-in-Time (JIT) provisioning is available in Private Beta when you use the Admin Console. If you're participating in this program, you can avoid conflicts between SCIM and JIT by disabling JIT provisioning in your SSO connection. See [SSO authentication with JIT provisioning disabled](/security/for-admins/group-mapping/#sso-authentication-with-jit-provisioning-disabled).
48+
{ .experimental }
49+
4550
## Enable SCIM in Docker
4651

4752
You must make sure you have [configured SSO](single-sign-on/configure/_index.md) before you enable SCIM. Enforcing SSO isn't required.

content/security/for-admins/single-sign-on/configure/_index.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,34 @@ This page walks through steps 1 and 2 using Docker Hub or the Admin Console.
2525
## Step one: Add and verify your domain
2626

2727
{{< tabs >}}
28-
{{< tab name="Docker Hub" >}}
29-
30-
{{% admin-domains product="hub" %}}
31-
32-
{{< /tab >}}
3328
{{< tab name="Admin Console" >}}
3429

3530
{{< include "admin-early-access.md" >}}
3631

3732
{{% admin-domains product="admin" %}}
3833

34+
{{< /tab >}}
35+
{{< tab name="Docker Hub" >}}
36+
37+
{{% admin-domains product="hub" %}}
38+
3939
{{< /tab >}}
4040
{{< /tabs >}}
4141

4242
## Step two: Create an SSO connection in Docker
4343

4444
{{< tabs >}}
45-
{{< tab name="Docker Hub" >}}
46-
47-
{{% admin-sso-config product="hub" %}}
48-
49-
{{< /tab >}}
5045
{{< tab name="Admin Console" >}}
5146

5247
{{< include "admin-early-access.md" >}}
5348

5449
{{% admin-sso-config product="admin" %}}
5550

51+
{{< /tab >}}
52+
{{< tab name="Docker Hub" >}}
53+
54+
{{% admin-sso-config product="hub" %}}
55+
5656
{{< /tab >}}
5757
{{< /tabs >}}
5858

content/security/for-admins/single-sign-on/configure/configure-idp.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ If you use SAML for your SSO connection, Docker obtains these attributes from th
4141
>SSO uses Just-in-Time (JIT) provisioning by default. If you [enable SCIM](../../scim.md), JIT values still overwrite the attribute values set by SCIM provisioning whenever users log in. To avoid conflicts, make sure your JIT values match your SCIM values. For example, to make sure that the full name of a user displays in your organization, you would set a `name` attribute in your SAML attributes and ensure the value includes their first name and last name. The exact method for setting these values (for example, constructing it with `user.firstName + " " + user.lastName`) varies depending on your IdP.
4242
{.important}
4343

44+
> **Beta feature**
45+
>
46+
> Optional Just-in-Time (JIT) provisioning is available in Private Beta when you use the Admin Console. If you're participating in this program, you can avoid conflicts between SCIM and JIT by disabling JIT provisioning in your SSO connection. See [SSO authentication with JIT provisioning disabled](/security/for-admins/group-mapping/#sso-authentication-with-jit-provisioning-disabled).
47+
{ .experimental }
48+
4449
You can also configure attributes to override default values, such as default team or organization. See [role mapping](../../scim.md#set-up-role-mapping).
4550

4651
| SSO attribute | SAML assertion message attributes |

content/security/for-admins/single-sign-on/connect/_index.md

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,20 @@ Make sure you have completed the following before you begin:
2626

2727
## Step four: Complete your SSO connection
2828

29+
> **Beta feature**
30+
>
31+
> Optional Just-in-Time (JIT) provisioning is available in Private Beta when you use the Admin Console. If you're participating in this program, you have the option to turn off this default provisioning and disable JIT. This configuration is recommended if you're using SCIM to auto-provision users. See [SSO authentication with JIT provisioning disabled](/security/for-admins/group-mapping/#sso-authentication-with-jit-provisioning-disabled).
32+
{ .experimental }
33+
2934
{{< tabs >}}
30-
{{< tab name="Docker Hub" >}}
35+
{{< tab name="Admin Console" >}}
3136

32-
{{% admin-sso-connect product="hub" %}}
37+
{{% admin-sso-connect product="admin" %}}
3338

3439
{{< /tab >}}
35-
{{< tab name="Admin Console" >}}
40+
{{< tab name="Docker Hub" >}}
3641

37-
{{% admin-sso-connect product="admin" %}}
42+
{{% admin-sso-connect product="hub" %}}
3843

3944
{{< /tab >}}
4045
{{< /tabs >}}

content/security/for-admins/single-sign-on/manage/_index.md

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,67 @@ aliases:
1414
> You must have a [company](/admin/company/) to manage more than one organization.
1515
1616
{{< tabs >}}
17+
{{< tab name="Admin Console" >}}
18+
19+
{{< include "admin-early-access.md" >}}
20+
21+
{{% admin-sso-management-orgs product="admin" %}}
22+
23+
{{< /tab >}}
1724
{{< tab name="Docker Hub" >}}
1825

1926
{{% admin-sso-management-orgs product="hub" %}}
2027

2128
{{< /tab >}}
29+
{{< /tabs >}}
30+
31+
## Manage domains
32+
33+
{{< tabs >}}
2234
{{< tab name="Admin Console" >}}
2335

2436
{{< include "admin-early-access.md" >}}
2537

26-
{{% admin-sso-management-orgs product="admin" %}}
38+
{{% admin-sso-management product="admin" %}}
39+
40+
{{< /tab >}}
41+
{{< tab name="Docker Hub" >}}
42+
43+
{{% admin-sso-management product="hub" %}}
2744

2845
{{< /tab >}}
2946
{{< /tabs >}}
3047

31-
## Manage domains
48+
## Manage SSO connections
3249

3350
{{< tabs >}}
51+
{{< tab name="Admin Console" >}}
52+
53+
{{< include "admin-early-access.md" >}}
54+
55+
{{% admin-sso-management-connections product="admin" %}}
56+
57+
{{< /tab >}}
3458
{{< tab name="Docker Hub" >}}
3559

36-
{{% admin-sso-management product="hub" %}}
60+
{{% admin-sso-management-connections product="hub" %}}
3761

3862
{{< /tab >}}
63+
{{< /tabs >}}
64+
65+
## Manage users
66+
67+
{{< tabs >}}
3968
{{< tab name="Admin Console" >}}
4069

4170
{{< include "admin-early-access.md" >}}
4271

43-
{{% admin-sso-management product="admin" %}}
72+
{{% admin-sso-management-users product="admin" %}}
73+
74+
{{< /tab >}}
75+
{{< tab name="Docker Hub" >}}
76+
77+
{{% admin-sso-management-users product="hub" %}}
4478

4579
{{< /tab >}}
4680
{{< /tabs >}}
-67.3 KB
Binary file not shown.

content/security/images/jit-disabled-flow.svg

Lines changed: 21 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)