排查单点登录故障

本页描述了常见的单点登录 (SSO) 错误及其解决方案。问题可能源于身份提供商 (IdP) 配置或 Docker 设置。

检查错误

如果您遇到 SSO 问题,请首先检查 Docker 和您的身份提供商是否有错误。

检查 Docker 错误日志

  1. 登录 Docker Home 并选择您的组织。
  2. 选择管理控制台,然后选择SSO 和 SCIM
  3. 在 SSO 连接表中,选择 Action 菜单,然后选择 View error logs
  4. 有关特定错误的更多详细信息,请在错误消息旁边选择 View error details
  5. 记录此页面上看到的任何错误以供进一步排查。

检查身份提供商错误

  1. 查看 IdP 的日志或审计跟踪,了解任何失败的身份验证或配置尝试。
  2. 确认您的 IdP 的 SSO 设置与 Docker 中提供的值匹配。
  3. 如果适用,确认您已正确配置用户配置并在 IdP 中启用。
  4. 如果适用,验证您的 IdP 是否正确映射了 Docker 所需的用户属性。
  5. 尝试从您的 IdP 配置一个测试用户,并验证他们是否出现在 Docker 中。

如需进一步排查,请查阅您的 IdP 文档或联系其支持团队。

组格式不正确

错误信息

当出现此问题时,常见的错误消息如下:

Some of the groups assigned to the user are not formatted as '<organization name>:<team name>'. Directory groups will be ignored and user will be provisioned into the default organization and team.

原因

  • 您的身份提供商 (IdP) 中的组名称格式不正确:Docker 要求组遵循 <organization>:<team> 格式。如果分配给用户的组不遵循此格式,它们将被忽略。
  • IdP 和 Docker 组织之间的组不匹配:如果您的 IdP 中的组在 Docker 中没有相应的团队,它将无法识别,并且用户将被放置在默认组织和团队中。

受影响的环境

  • 使用 Okta 或 Azure AD 等 IdP 设置 Docker 单点登录
  • 在 Docker 中使用基于组的角色分配的组织

重现步骤

要重现此问题

  1. 尝试使用 SSO 登录 Docker。
  2. 用户在 IdP 中分配了组,但未放置到预期的 Docker 团队中。
  3. 查看 Docker 日志或 IdP 日志以查找错误消息。

解决方案

更新 IdP 中的组名称

  1. 前往您的 IdP 的组管理部分。
  2. 检查分配给受影响用户的组。
  3. 确保每个组都遵循所需的格式:<organization>:<team>
  4. 更新任何格式不正确的组以匹配此模式。
  5. 保存更改并重试使用 SSO 登录。

用户未分配到组织

错误信息

当出现此问题时,常见的错误消息如下:

User '$username' is not assigned to this SSO organization. Contact your administrator. TraceID: XXXXXXXXXXXXX

原因

  • 用户未分配到组织:如果即时 (JIT) 预配已禁用,则用户可能未分配到您的组织。
  • 用户未被邀请加入组织:如果 JIT 已禁用且您不想启用它,则必须手动邀请用户。
  • SCIM 预配配置错误:如果您使用 SCIM 进行用户预配,它可能无法正确同步您的 IdP 中的用户。

解决方案

启用 JIT 预配

启用 SSO 后,JIT 默认启用。如果您已禁用 JIT 且需要重新启用它

  1. 登录 Docker Home 并选择您的组织。
  2. 选择管理控制台,然后选择SSO 和 SCIM
  3. 在 SSO 连接表中,选择 Action 菜单,然后选择 Enable JIT provisioning
  4. 选择 Enable 确认。

手动邀请用户

当 JIT 禁用时,用户通过 SSO 身份验证时不会自动添加到您的组织。要手动邀请用户,请参阅邀请成员

配置 SCIM 预配

如果您已启用 SCIM,请按照以下步骤排查 SCIM 连接故障

  1. 登录 Docker Home 并选择您的组织。
  2. 选择管理控制台,然后选择SSO 和 SCIM
  3. 在 SSO 连接表中,选择 Action 菜单,然后选择 View error logs。有关特定错误的更多详细信息,请在错误消息旁边选择 View error details。记录此页面上看到的任何错误。
  4. 导航回管理控制台的 SSO 和 SCIM 页面,并验证您的 SCIM 配置
    • 确保您的 IdP 中的 SCIM 基本 URL 和 API 令牌与 Docker 管理控制台中提供的一致。
    • 验证 Docker 和您的 IdP 中是否都启用了 SCIM。
  5. 确保从您的 IdP 同步的属性与 Docker 的 SCIM 支持属性匹配。
  6. 通过尝试从您的 IdP 预配测试用户来测试用户预配,并验证他们是否出现在 Docker 中。

IdP 发起的登录未针对连接启用

错误信息

当出现此问题时,常见的错误消息如下:

IdP-Initiated sign in is not enabled for connection '$ssoConnection'.

原因

Docker 不支持 IdP 发起的 SAML 流程。当用户尝试从您的 IdP 进行身份验证时,例如使用登录页面上的 Docker SSO 应用程序磁贴,就会发生此错误。

解决方案

从 Docker 应用程序进行身份验证

用户必须从 Docker 应用程序(Hub、Desktop 等)发起身份验证。用户需要在 Docker 应用程序中输入他们的电子邮件地址,然后他们将被重定向到为其域配置的 SSO IdP。

隐藏 Docker SSO 应用程序

您可以从 IdP 中的用户隐藏 Docker SSO 应用程序。这可以防止用户尝试从 IdP 仪表板开始身份验证。您必须在 IdP 中隐藏和配置此功能。

组织中席位不足

错误信息

当出现此问题时,常见的错误消息如下:

Not enough seats in organization '$orgName'. Add more seats or contact your administrator.

原因

当组织通过即时 (JIT) 预配或 SCIM 预配时,没有可用的用户席位时,就会发生此错误。

解决方案

为组织添加更多席位

购买额外的 Docker Business 订阅席位。有关详细信息,请参阅管理订阅席位

删除用户或待处理的邀请

查看您的组织成员和待处理的邀请。删除不活跃的用户或待处理的邀请以释放席位。有关详细信息,请参阅管理组织成员

域未通过 SSO 连接验证

错误信息

当出现此问题时,常见的错误消息如下:

Domain '$emailDomain' is not verified for your SSO connection. Contact your company administrator. TraceID: XXXXXXXXXXXXXX

原因

如果 IdP 通过 SSO 对用户进行身份验证,并且返回给 Docker 的用户主体名称 (UPN) 与 Docker 中配置的 SSO 连接关联的任何已验证域不匹配,则会发生此错误。

解决方案

验证 UPN 属性映射

确保 IdP SSO 连接在断言属性中返回正确的 UPN 值。

添加并验证所有域

添加并验证您的 IdP 用作 UPN 的所有域和子域,并将它们与您的 Docker SSO 连接关联。有关详细信息,请参阅配置单点登录

无法找到会话

错误信息

当出现此问题时,常见的错误消息如下:

We couldn't find your session. You may have pressed the back button, refreshed the page, opened too many sign-in dialogs, or there is some issue with cookies. Try signing in again. If the issue persists, contact your administrator.

原因

以下原因可能会导致此问题

  • 用户在身份验证期间按下了返回或刷新按钮。
  • 身份验证流程丢失了初始请求的跟踪,导致无法完成。

解决方案

不要中断身份验证流程

登录期间不要按下返回或刷新按钮。

重新开始身份验证

关闭浏览器选项卡并从 Docker 应用程序(Desktop、Hub 等)重新开始身份验证流程。

Name ID 不是电子邮件地址

错误信息

当出现此问题时,常见的错误消息如下:

The name ID sent by the identity provider is not an email address. Contact your company administrator.

原因

以下原因可能会导致此问题

  • IdP 发送的 Name ID (UPN) 不符合 Docker 要求的电子邮件格式。
  • Docker SSO 要求 Name ID 为用户的主电子邮件地址。

解决方案

在您的 IdP 中,确保 Name ID 属性格式正确

  1. 验证您的 IdP 中的 Name ID 属性格式是否设置为 EmailAddress
  2. 调整您的 IdP 设置以返回正确的 Name ID 格式。
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.