配置您的 IdP
设置 SSO 配置的步骤如下:
- 添加并验证您的成员用于登录 Docker 的一个或多个域。
- 在 Docker 中创建 SSO 连接。
- 配置您的 IdP以与 Docker 配合使用。
- 在 Docker 中完成 SSO 连接。
本页逐步介绍常见 IdP 的步骤 3。
先决条件
在开始之前,请确保您已完成以下操作:
- 您的域名已验证
- 您已在 Docker 中创建了 SSO 连接
- 您已从 Docker 复制了必要的字段以粘贴到您的 IdP 中:
- SAML:实体 ID、ACS URL
- Azure AD (OIDC):重定向 URL
单点登录属性
当用户使用 SSO 登录时,Docker 会从 IdP 获取以下属性:
- 电子邮件地址- 用户的唯一标识符
- 全名- 用户名
- 组(可选) - 用户所属组的列表
- Docker Org(可选) - 用户所属的组织
- Docker 团队(可选) - 用户已添加到的组织内的团队
- Docker 角色(可选) - 在组织中授予其权限的用户角色
如果您使用 SAML 进行 SSO 连接,Docker 将从 SAML 断言消息中获取这些属性。您的 IdP 可能对 SAML 属性使用与前面列表中不同的命名。下表列出了为了使 SSO 连接正常工作而可能存在的 SAML 属性。
重要的
默认情况下,SSO 使用即时 (JIT) 配置。如果您 启用 SCIM,则只要用户登录,JIT 值仍会覆盖 SCIM 配置设置的属性值。为避免冲突,请确保您的 JIT 值与 SCIM 值匹配。例如,为了确保组织中显示用户的全名,您可以
name
在 SAML 属性中设置一个属性,并确保该值包含其名字和姓氏。设置这些值的确切方法(例如,使用 构建user.firstName + " " + user.lastName
)取决于您的 IdP。
测试版功能
当您使用管理控制台时,私人测试版中提供可选的即时 (JIT) 配置。如果您参与此计划,则可以通过在 SSO 连接中禁用 JIT 配置来避免 SCIM 和 JIT 之间的冲突。请参阅 禁用 JIT 配置的 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" , Groups ,groups |
Docker 组织(可选) | dockerOrg |
Docker 团队(可选) | dockerTeam |
Docker 角色(可选) | dockerRole |
重要的
如果未找到上表中列出的任何电子邮件地址属性,SSO 将返回错误。此外,如果
Full name
未设置该属性,则名称将显示为Email address
.
第三步:配置您的 IdP 以与 Docker 配合使用
IdP 的用户界面可能与以下步骤略有不同。您可以参考 IdP 的文档进行验证。
请参阅 更多资源,获取有关如何在 Okta 中使用 SAML 设置 SSO 的视频概述。
转至 Okta 管理门户。
转到应用程序 > 应用程序 > 创建应用程序集成。
选择SAML 2.0,然后选择下一步。
输入应用程序名称“Docker Hub”,并可选择上传应用程序的徽标,然后选择“下一步”。
要配置 SAML,请在 Okta 中输入以下内容:
- ACS URL:单点登录 URL
- 实体 ID:受众 URI(SP 实体 ID)
- 姓名 ID 格式:
EmailAddress
- 应用程序用户名:
Email
- 更新应用程序:
Create or Update
- 属性声明:
add
.您可以像下面这样定义属性语句:
属性名称 姓名格式 价值 姓名 未指定 用户名.名字 + " " + 用户.姓氏 选择下一步。
选择我是添加内部应用程序的 Okta 客户。
选择完成。
创建应用程序后,转到您的应用程序并选择查看 SAML 设置说明。
您可以在此处找到SAML 登录 URL和x509 证书。在文本编辑器中打开证书文件,并将文件内容粘贴到Docker Hub 或管理控制台的x509 证书字段中。然后,复制SAML 登录 URL的值并将其粘贴到 Docker Hub 或管理控制台中的相应字段中。
提示
当您在 Entra ID(以前称为 Azure AD)中为 SSO 连接创建应用程序时,我们建议您不要将该应用程序分配给目录中的所有用户。相反,您可以创建一个安全组并将应用程序分配到该组。通过这种方式,您可以控制组织中的哪些人可以访问 Docker。要更改分配的默认设置,请转到应用程序的主属性并找到“需要分配”设置。将其设置为是。
请参阅 更多资源,观看有关如何在 Entra ID(以前称为 Azure AD)中使用 SAML 设置 SSO 的视频概述。
- 转到 Azure AD 管理门户。
- 转至默认目录 > 添加 > 企业应用程序 > 创建您自己的应用程序。
- 输入“Docker”作为应用程序名称并选择非库选项。
- 创建应用程序后,转到Single Sign-On并选择SAML。
- 在“基本 SAML 配置”部分中选择“编辑”。
- 从 Docker Hub 添加以下设置:
- 实体 ID:标识符
- ACS URL:回复 URL
- 保存配置。
- 从SAML 签名证书部分下载证书 (Base64)。
- 在文本编辑器中打开证书文件,并将文件内容粘贴到Docker Hub 或管理控制台的x509 证书字段中。
- 从设置 Docker部分,复制登录 URL并将其粘贴到Docker Hub 或管理控制台中的SAML 登录 URL字段中。
请参阅 更多资源,获取有关如何使用 Azure Connect (OIDC) 设置 SSO 的视频概述。
创建应用程序注册
- 转到 Azure AD 管理门户。
- 选择应用程序注册 > 新注册。
- 输入“Docker Hub SSO”或类似名称作为应用程序名称。
- 在支持的帐户类型下,指定谁可以使用此应用程序或访问该应用程序。
- 在“重定向 URI”部分中,从下拉菜单中选择“Web” ,然后将Docker 控制台中的“重定向 URI”值粘贴到此字段中。
- 选择注册以注册应用程序。
- 记下应用程序概述页面中的客户端 ID 。您需要此信息才能继续在 Docker Hub 上配置 SSO。
为您的 Docker 应用程序创建客户端密钥
- 转到您在前面的步骤中创建的 Docker Hub SSO 应用程序,然后选择证书和机密。
- 选择+ 新客户端密码。
- 指定密钥的描述并设置密钥可以在 Azure 上使用的时间。
- 选择添加以继续。
- 复制秘密值字段并将其保存在安全的地方,以便您稍后可以使用它来配置 Docker SSO。
配置 Docker SSO 的 API 权限并授予管理员同意
- 转到您在前面的步骤中创建的 Docker Hub SSO 应用程序。
- 导航到应用程序设置中的API 权限类别。
- 选择授予您的租户名称管理员同意 > 是。
- 接下来,您需要添加其他权限。选择添加权限。
- 选择委派权限。
- 搜索
Directory.Read.All
,然后选择此选项。 - 然后,搜索
User.Read
并选择此选项。 - 选择添加权限。
您可以通过检查“状态”列来验证是否已正确授予每个权限的管理员同意。
将用户分配给 SSO 应用程序
- 导航到 Azure AD 仪表板,然后选择“企业应用程序”>“应用程序名称”。
- 选择1. 分配用户和组。
- 添加将被允许使用该应用程序的用户。
在 Docker 控制台中,粘贴前面步骤中获取的以下值以继续配置:
- 客户ID
- 客户秘密
- Azure AD 域
更多资源
以下视频演示了如何使用 Docker SSO 连接配置 IdP。
下一步是什么?
在 Docker 控制台中完成连接,然后测试您的连接。