配置您的 IdP

设置 SSO 配置的步骤是

  1. 添加并验证您的成员用于登录 Docker 的域或域名
  2. 在 Docker 中创建您的 SSO 连接
  3. 配置您的 IdP 以与 Docker 配合使用。
  4. 在 Docker 中完成您的 SSO 连接

本页介绍了常见 IdP 的步骤 3。

先决条件

在开始之前,请确保您已完成以下操作

  • 您的域已验证
  • 您已在 Docker 中创建您的 SSO 连接
  • 您已从 Docker 中复制必要的字段以粘贴到您的 IdP 中
    • SAML:实体 IDACS URL
    • Azure AD (OIDC):重定向 URL

SSO 属性

当用户使用 SSO 登录时,Docker 会从 IdP 获取以下属性

  • 电子邮件地址 - 用户的唯一标识符
  • 全名 - 用户的姓名
  • 组(可选) - 用户所属的组列表
  • Docker 组织(可选) - 用户所属的组织
  • Docker 团队(可选) - 用户被添加到组织中的团队
  • Docker 角色(可选) - 授予用户在组织中权限的角色

如果您对 SSO 连接使用 SAML,Docker 会从 SAML 断言消息中获取这些属性。您的 IdP 可能使用与上述列表中不同的 SAML 属性命名。下表列出了可能存在的 SAML 属性,以便您的 SSO 连接正常工作。

重要

SSO 默认使用即时配置 (JIT)。如果您启用 SCIM,JIT 值仍会在用户登录时覆盖 SCIM 配置设置的属性值。为避免冲突,请确保您的 JIT 值与您的 SCIM 值匹配。例如,要确保用户的全名显示在您的组织中,您将在 SAML 属性中设置 name 属性,并确保该值包含他们的姓和名。设置这些值的具体方法(例如,使用 user.firstName + " " + user.lastName 进行构建)因您的 IdP 而异。

提示

当您使用管理员控制台并启用 SCIM 时,可选的即时配置 (JIT) 配置可用。通过此功能,您可以通过在您的 SSO 连接中禁用 JIT 配置来避免 SCIM 和 JIT 之间的冲突。请参阅 禁用 JIT 配置的 SSO 身份验证

您还可以配置属性以覆盖默认值,例如默认团队或组织。请参阅 角色映射

SSO 属性SAML 断言消息属性
电子邮件地址"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier""http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn""http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"email
全名"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"name"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname""http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"
组(可选)"http://schemas.xmlsoap.org/claims/Group""http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"Groupsgroups
Docker 组织(可选)dockerOrg
Docker 团队(可选)dockerTeam
Docker 角色(可选)dockerRole

重要

如果上表中列出的电子邮件地址属性均未找到,SSO 会返回错误。此外,如果未设置 全名 属性,则名称将显示为 电子邮件地址 的值。

步骤三:配置您的 IdP 以与 Docker 配合使用

您的 IdP 的用户界面可能与以下步骤略有不同。您可以参考您的 IdP 文档进行验证。


请参阅 更多资源,了解有关如何在 Okta 中使用 SAML 设置 SSO 的视频概述。

  1. 转到 Okta 管理门户。

  2. 转到应用程序和集成 > 应用程序 > 创建应用程序集成

  3. 选择SAML 2.0,然后选择下一步

  4. 输入应用程序名称“Docker Hub”,并选择性地上传应用程序的徽标,然后选择下一步

  5. 要配置 SAML,请在 Okta 中输入以下内容

    • ACS URL:单点登录 URL
    • 实体 ID:受众 URI(SP 实体 ID)
    • 名称 ID 格式:EmailAddress
    • 应用程序用户名:Email
    • 在以下位置更新应用程序:创建或更新
    • 属性语句:添加。您可以按照以下示例定义属性语句
    属性名称名称格式
    name未指定username.firstName + " " + user.lastName
  6. 选择下一步

  7. 选择我是 Okta 客户,正在添加内部应用程序

  8. 选择完成

  9. 创建应用程序后,转到您的应用程序并选择查看 SAML 设置说明

  10. 您可以在此处找到SAML 登录 URLx509 证书。在文本编辑器中打开证书文件,并将文件的内容粘贴到 Docker Hub 或管理员控制台中的x509 证书字段中。然后,复制SAML 登录 URL 的值,并将其粘贴到 Docker Hub 或管理员控制台中的相应字段中。

提示

当您在 Entra ID(以前称为 Azure AD)中创建 SSO 连接的应用程序时,我们建议您不要将应用程序分配到目录中的所有用户。相反,您可以创建一个安全组并将应用程序分配到该组。通过这种方式,您可以控制组织中哪些人可以访问 Docker。要更改分配的默认设置,请转到应用程序的主要属性并找到分配必需设置。将其设置为

请参阅 更多资源,了解有关如何在 Entra ID(以前称为 Azure AD)中使用 SAML 设置 SSO 的视频概述。

  1. 转到 Azure AD 管理门户。
  2. 转到默认目录 > 添加 > 企业应用程序 > 创建您自己的应用程序
  3. 输入应用程序名称“Docker”,并选择非库选项。
  4. 创建应用程序后,转到单点登录并选择SAML
  5. 基本 SAML 配置部分中选择编辑
  6. 添加以下来自 Docker Hub 的设置
    • 实体 ID:标识符
    • ACS URL:回复 URL
  7. 保存配置。
  8. SAML 签名证书部分下载证书(Base64)
  9. 在文本编辑器中打开证书文件,并将文件的内容粘贴到 Docker Hub 或管理员控制台中的x509 证书字段中。
  10. 设置 Docker 部分复制登录 URL,并将其粘贴到 Docker Hub 或管理员控制台中的SAML 登录 URL 字段中。

请参阅 更多资源,了解有关如何在 Azure Connect (OIDC) 中设置 SSO 的视频概述。

创建应用程序注册

  1. 转到 Azure AD 管理门户。
  2. 选择应用程序注册 > 新的注册
  3. 输入“Docker Hub SSO”或类似的应用程序名称。
  4. 支持的帐户类型下,指定可以使用此应用程序或访问应用程序的用户。
  5. 重定向 URI 部分,从下拉菜单中选择Web,并将 Docker 控制台中的重定向 URI 值粘贴到此字段中。
  6. 选择注册以注册应用程序。
  7. 记下应用程序概述页面中的客户端 ID。您需要此信息才能继续在 Docker Hub 上配置 SSO。

为您的 Docker 应用程序创建客户端密钥

  1. 转到您在前面的步骤中创建的 Docker Hub SSO 应用程序,然后选择证书和密钥
  2. 选择 **+ 新客户端密钥**。
  3. 指定密钥的描述并设置密钥在 Azure 上的使用时长。
  4. 选择 **添加** 继续。
  5. 复制密钥的 **值** 字段并将其保存在安全的地方,以便您稍后使用它来配置 Docker SSO。
  1. 转到您在之前的步骤中创建的 Docker Hub SSO 应用程序。
  2. 导航到应用程序设置中的 **API 权限** 类别。
  3. 选择 **授予对 YOUR TENANT NAME 的管理员同意 > 是**。
  4. 接下来,您需要添加其他权限。选择 **添加权限**。
  5. 选择 **委托权限**。
  6. 搜索 Directory.Read.All 并选择此选项。
  7. 然后搜索 User.Read 并选择此选项。
  8. 选择 **添加权限**。

您可以通过检查 **状态** 列来验证是否已正确授予每个权限的管理员同意。

将用户分配到 SSO 应用程序

  1. 导航到您的 Azure AD 仪表板,然后选择 **企业应用程序 > 应用程序名称**。
  2. 选择 **1. 分配用户和组**。
  3. 添加允许使用该应用程序的用户。

在 Docker 控制台中,粘贴之前步骤中获得的以下值以继续配置

  • 客户端 ID
  • 客户端密钥
  • Azure AD 域

更多资源

以下视频演示了如何将您的 IdP 与您的 Docker SSO 连接配置。

下一步是什么?

完成您的连接 在 Docker 控制台中,然后测试您的连接。