配置 SAML 身份提供程序

ENTERPRISE

配置 SAML 身份提供程序和 OneLogin IdP

本主题讨论了安全声明标记语言 (SAML) 的一般要求,并提供了设置 OneLogin IdP 的分步程序。

添加 SAML 身份提供程序

DC/OS Enterprise 要求 SAML 身份提供程序 (IdP):

  • 签署其身份认证声明。
  • 不使用 urn:oasis:names:tc:SAML:2.0:nameid-format:transient 作为其 NameIDFormat

从 IdP 接收到 SAML 响应后,DC/OS 会在其中搜索可用作 DC/OS 用户 ID 的值。它按以下顺序执行,在找到必要值后停止。

  1. 如果 SubjectNameID 似乎包含电子邮件地址,则 DC/OS 会使用电子邮件地址值。
  2. 如果响应包含属性语句,DC/OS 则使用看起来是电子邮件地址的第一个属性值,特别是如果属于 LDAP mail 属性 类型。
  3. DC/OS 使用 NameID

虽然 DC/OS Enterprise 支持 SAML 2.0 IdP 的全部范围,但以下程序将使用 OneLogin IdP 作为示例,并提供分步说明。

添加 OneLogin 身份提供程序

获取身份提供程序元数据

  1. 以 OneLogin 超级用户身份登录 Onelogin 仪表盘。

  2. 创建 一个可以发送属性并签署授权声明的 IdP 应用程序。

  3. 单击以添加应用程序。

  4. Display Name 字段中键入此 IdP 的描述性名称。

  5. 点击保存

  6. 单击 SSO 选项卡。

  7. 复制 Issuer URL 值。

  8. 从浏览器或使用 curl 向 Issuer URL 发出 GET 请求。

  9. 它应该返回身份提供程序 XML。

    <?xml version="1.0?>
    <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://app.onelogin.com/saml/metadata/555370">
    [...]
    </EntityDescriptor>
    
  10. 将 XML 复制到剪贴板或文本编辑器中。

  11. 单击 Access 选项卡。激活您希望能够登录到群集的所有角色。例如:员工工程师

    警告:请勿在此阶段单击 保存*;否则会有故障。

配置 DC/OS

本程序将向您展示如何将 DC/OS 配置为 SAML 服务提供程序。

  1. superuser 中的用户或具有 dcos:superuser 权限的用户身份登录 DC/OS GUI。
  2. 打开 Settings -> Identity Providers 选项卡。
  3. 单击右上方的 + 图标。
  4. 单击 SAML 2.0
  5. Provider ID 字段,键入可以在 URL 中传递的 IdP 的标识符,即只有小写字母数字和 - 字符。您配置的每个 SAML IdP 都需要一个唯一标识符。如果您有另一个 SAML IdP,则必须为此选择一个不同的标识符。例如:my-saml-idp
  6. Description 字段中键入 IdP 的描述性名称。此字符串将出现在显示给用户的按钮中,以允许他们选择他们想要使用的 IdP。例如,如果您在 Description 字段键入 Fantastic SAML IdP,则按钮将显示 Login with Fantastic SAML IdP 登录。
  7. 将前一部分获得的身份提供程序 XML 元数据粘贴到 IDP Metadata 字段。
  8. 在您的浏览器顶部复制 URL,所有内容都在第一个斜杠之前,然后粘贴到 Service Provider Base URL 字段。
  9. 单击 Submit

获取 DC/OS 回调 URL

此程序使用身份和访问管理 API (IAM API)。有关 IAM API 的更多详细信息,请访问 IAM API 文档

  1. 使用浏览器或 curl 向 <your-cluster-URL>/acs/api/v1/auth/saml/providers 发出 GET 请求。

  2. 它将返回 JSON 对象,其中包含您已配置的每个身份提供程序的 ID 和描述。

    {
      "my-saml-idp": "SAML IdP"
    }
    
  3. 在列表中找到您的身份提供程序,并将其 ID 复制到剪贴板或文本编辑器中。在前一示例中,提供程序 ID 为 my-saml-idp

  4. <your-cluster-URL>/acs/api/v1/auth/saml/providers/{provider-id}/acs-callback-url 发出 GET 请求,将 {provider-id} 替换为您在上一步中获得的提供程序 ID。

  5. 此请求返回回调 URL。

    {
      "acs-callback-url": "https://me-9w7g-elasticl-3tifi04qqdhz-692669367.us-west-2.elb.amazonaws.com/acs/api/v1/auth/saml/providers/my-saml-idp/acs-callback"
    }
    
  6. 将此值复制到剪贴板或文本编辑器中。

提供回调 URL

  1. 单击以打开 OneLogin 仪表盘中的 Configuration 选项卡。
  2. 将上一过程中获得的回调 URL 粘贴到以下三个字段中:RecipientACS (Consumer) URL ValidatorACS (Consumer) URL
  3. 将您的群集 URL 粘贴到 Audience 字段中。附加以下内容:/acs/api/v1/auth/saml/providers/{provider-id}/sp-metadata
  4. {provider-id} 替换为您的提供程序 ID。例如,https://me-9w7g-elasticl-3tifi04qqdhz-692669367.us-west-2.elb.amazonaws.com/acs/api/v1/auth/saml/providers/my-saml-idp/sp-metadata
  5. 点击保存

验证连接

  1. 清除您的 Cookie 或开始新的浏览器会话。

  2. 导航到 DC/OS GUI 的登录页面。

  3. 单击刚刚配置的 SAML 提供程序的按钮。

  4. 您应该收到来自 DC/OS 的访问被拒绝消息。

    注意:这表明 DC/OS 已经与第三方提供程序一起验证您的帐户,并将其导入 DC/OS。由于默认情况下您的帐户没有权限,因此会返回“访问被拒绝”

分配权限

  1. 以具有 dcos:superuser 权限的用户身份登录 DC/OS GUI。
  2. Organization -> Users 选项卡中,找到您刚尝试作为用户登录的电子邮件地址,然后双击它。
  3. 为帐户分配所需权限。有关分配权限的详细信息,请访问权限文档。

故障排除

用户登录可能会失败,并显示以下消息。

SAML SSO authentication not successful. Could not extract the subject identity from the SAML response.

检查 IdP 的 SAML 响应是否包括 urn:oasis:names:tc:SAML:2.0:nameid-format:transient。DC/OS 不支持 urn:oasis:names:tc:SAML:2.0:nameid-format:transient