Share feedback
Answers are generated based on the documentation.

设置单点登录

Subscription: Business
For: Administrators

要设置单点登录(SSO),您需要在 Docker 和您的身份提供商(IdP)之间建立连接。虽然本指南以 Okta 和 Microsoft Entra ID 作为实际示例,但其他 IdP 的总体流程相同。

如果您不熟悉 SSO 流程,请先查看 SSO 概述 了解 SSO 的工作原理。

前提条件

Docker 支持任何兼容 SAML 2.0 或 OIDC 的身份提供商。开始之前,请确保满足以下条件:

  • 通知您的公司即将进行的 SSO 登录流程。
  • 确认每个 Docker 用户都拥有一个有效的 IdP 账户,使用与其唯一主要标识符 (UPN) 相同的电子邮件地址。
  • 确保 CI/CD 管道使用 PAT 或 OAT 而非密码。

设置 SSO 连接

Tip

这些步骤需要您在 Docker 和 IdP 之间复制粘贴值。请在一个会话中完成本指南,并打开两个浏览器窗口分别访问 Docker 和您的 IdP。

第 1 步:添加域名

要添加域名:

  1. 登录 app.docker.com,然后选择您的组织。如果您的组织是某个公司的一部分,请选择该公司以在公司级别管理域名。
  2. 选择 Identity & auth,然后选择 Domain management
  3. 选择 Add a domain
  4. 在文本框中输入您的域名,然后选择 Add domain
  5. 在弹出的对话框中,复制用于域名验证的 TXT Record Value

第 2 步:验证您的域名

要确认域名所有权,请使用 Docker 提供的 TXT Record Value 在您的域名系统 (DNS) 主机中添加一条 TXT 记录。DNS 传播最多可能需要 72 小时。在此期间 Docker 会自动检查该记录。

Tip

添加记录名称时,对于 example.com 这样的根域名,请使用 @ 或留空。避免使用 dockerdocker-verificationwww 或您的域名本身等常见值。请务必查阅您的 DNS 提供商文档以确认其特定的记录名称要求。

  1. 要向 AWS 添加 TXT 记录,请参阅使用 Amazon Route 53 控制台创建记录
  2. 等待最多 72 小时以进行 TXT 记录验证。
  3. 记录生效后,进入 Identity & auth,然后进入 Domain management,并选择 Verify
  1. 要向 Google Cloud DNS 添加 TXT 记录,请参阅使用 TXT 记录验证您的域名
  2. 等待最多 72 小时以进行 TXT 记录验证。
  3. 记录生效后,进入 Identity & auth,然后进入 Domain management,并选择 Verify
  1. 要向 GoDaddy 添加 TXT 记录,请参阅添加 TXT 记录
  2. 等待最多 72 小时以进行 TXT 记录验证。
  3. 记录生效后,进入 Identity & auth,然后进入 Domain management,并选择 Verify
  1. 登录您的域名主机。
  2. 在 DNS 设置中添加一条 TXT 记录并保存。
  3. 等待最多 72 小时以进行 TXT 记录验证。
  4. 记录生效后,进入 Identity & auth,然后进入 Domain management,并选择 Verify

第 3 步:在 Docker 中创建 SSO 连接

  1. app.docker.com 选择您的组织。
  2. 选择 Identity & auth,然后选择 SSO and SCIM
  3. 选择 Create Connection。为连接命名,然后选择 SAML 2.0
  4. 保持此窗口打开。您需要在 Okta 窗口中复制并粘贴这些值:
    • Entity ID
    • ACS URL
    • Connection ID

您将在 IdP 中创建 SSO 连接后返回此处完成连接。

第 4 步:在 IdP 中创建 SSO 连接

根据您的 IdP 提供商选择以下标签页。

您需要 Okta 组织的超级管理员权限

  1. 登录您的 Okta 管理员账户。从顶部导航栏中选择 Admin 按钮进入 Okta 的管理控制台。
  2. 从左侧导航的 Applications 部分,选择 Applications。选择 Create App Integration
  3. 选择 SAML 2.0 以匹配您在 Docker Home 中的选择。
  4. 对于 General Settings,将应用命名为 "Docker"。上传 Logo 为可选项。
  5. 对于 Configure SAML,输入以下值:
    • 对于 Single Sign On URL 值,粘贴 Docker 的 ACS URL。
    • 对于 Audience URI (SP Entity ID) 值,粘贴 Docker 的 Entity ID。
    • 对于 Name ID format,选择 EmailAddress
    • 对于 Application username,选择 Email
    • 对于 Update application username on,选择 Create and update
    • 可选。如果您的组织需要,添加 SAML 属性
  6. 对于 Feedback,在结束前勾选 This is an internal app that we have created

保持您的 Okta 窗口打开以进行下一步。

要启用 Microsoft Entra 的 SSO,您需要 Cloud Application Administrator 权限。

  1. 在 Microsoft Entra 管理中心,选择 Entra ID,然后进入 Enterprise apps。选择 All applications
  2. 选择 Create your own application,将应用命名为 "Docker"。选择 Non-gallery
  3. 创建应用后,进入 Single Sign-On 并选择 SAML
  4. Basic SAML configuration 部分选择 Edit。在 Basic SAML configuration 中,选择 Edit 并粘贴您从 Docker 中创建 SSO 连接时复制的值:
    • 对于 Identifier 值,粘贴 Docker 的 Entity ID。
    • 对于 Reply URL 值,粘贴 Docker 的 ACS URL。
  5. 可选。如果您的组织需要,添加 SAML 属性
  6. SAML Signing Certificate 部分,下载您的 Certificate (Base64)

注册应用

  1. 登录 Microsoft Entra 管理中心
  2. 进入 App Registration 并选择 New Registration
  3. 将应用命名为 "Docker"。
  4. 设置账户类型并粘贴来自 Docker 的 Redirect URI
  5. 选择 Register
  6. 复制 Client ID

创建客户端密钥

  1. 在您的应用中,进入 Certificates & secrets
  2. 选择 New client secret,填写描述并配置有效期,然后选择 Add
  3. 复制新密钥的 value

设置 API 权限

  1. 在您的应用中,进入 API permissions
  2. 选择 Grant admin consent 并确认。
  3. 选择 Add a permissions > Delegated permissions
  4. 搜索并选择 User.Read
  5. 确认已授予管理员同意。

第 5 步:将 Docker 连接到 IdP

通过将 IdP 的值粘贴到 Docker 中完成集成。

Important

当提示复制证书时,请复制整个证书,从 ----BEGIN CERTIFICATE---- 开始并包含 ----END CERTIFICATE---- 行。

  1. 进入 Applications 并选择 Applications。从 ACTIVE 表中选择您的应用。
  2. Sign on 进入 View SAML setup instructions。此页面包含 SAML Sign-in URLx509 Certificate。保持此页面打开。
  3. 返回您已打开的 Docker 窗口中的 Create single sign-on connection 步骤。粘贴 SAML Sign-in URLx509 Certificate 值。
  4. 可选。如果您的组织需要,选择一个默认团队。
  5. 检查后选择 Create connection
  1. 用文本编辑器打开下载的 Certificate (Base64)
  2. 复制以下值:
    • 来自 Azure AD 的:Login URL
    • Certificate (Base64) 内容
  3. 返回 Docker Home,然后粘贴 Login URLCertificate (Base64) 值。
  4. 从下拉菜单中选择您的域名。
  5. 可选。如果您的组织需要,选择一个默认团队。
  6. 检查后选择 Create connection
  1. 返回 Docker Home。
  2. 粘贴以下值:
    • Client ID
    • Client Secret
    • Azure AD Domain
  3. 可选。如果您的组织需要,选择一个默认团队。
  4. 检查后选择 Create connection

第 6 步:测试连接

Microsoft Entra 和 Okta 等 IdP 可能要求您在测试 SSO 之前将用户分配到应用程序。您可以查阅 Microsoft Entra 的文档和 Okta 的文档,了解如何将您自己或其他用户分配到应用。

将自己分配到应用后:

  1. 打开一个无痕浏览器窗口,使用您的域名邮箱地址登录 Docker Home。
  2. 当重定向到 IdP 的登录页面时,使用您的域名邮箱进行认证,而非使用 Docker ID。

如果您有多个 IdP,请选择 Continue with SSO 登录选项。如果您使用 CLI,则必须使用个人访问令牌进行认证。

配置多个 IdP

Docker 支持多个身份提供商 (IdP) 配置,让您可以将一个域名与多个 IdP 关联。每个连接必须使用相同的域名,这样用户在登录时选择 Continue with SSO 即可选择其 IdP。

要添加多个 IdP:

  1. 为每个连接使用相同的域名。
  2. 重复本页 设置 SSO 连接流程中的步骤 3-6。为您组织打算使用的每个 IdP 重复这些步骤。

因为每个 IdP 必须使用相同的域名,您无需重复添加和验证域名的步骤。

强制启用 SSO

如果未强制启用 SSO,用户仍可使用 Docker 用户名和密码登录。强制启用 SSO 后,用户在登录 Docker 时必须使用 SSO,这将集中认证流程并强制执行 IdP 设置的策略。

在强制启用 SSO 之前,通过 CLI 访问 Docker 的用户必须 创建个人访问令牌 (PAT)。PAT 替代其用户名和密码进行认证。

  1. 登录 Docker Home 并选择您的组织或公司。
  2. 选择 Identity & auth,然后选择 SSO and SCIM
  3. 在 SSO 连接表中,选择 Action 菜单,然后选择 Enable enforcement
  4. 按照屏幕上的说明操作。
  5. 选择 Turn on enforcement

当您强制启用 SSO 后,用户将无法修改其邮箱地址和密码、将用户账户转换为组织,或通过 Docker Hub 设置 2FA。如果您希望使用 2FA,则必须通过 IdP 启用 2FA。

后续步骤