您可以将 VMware Integrated OpenStack 与使用安全关联标记语言 (SAML) 2.0 协议的任何第三方身份提供程序解决方案相集成。VMware Integrated OpenStack 中的 Keystone 可用作此配置的服务提供程序。

重要说明:
  • VMware不支持第三方身份提供程序。请联系您的身份提供程序管理员,获取此过程中所需的信息。
  • 请勿将 VMware Integrated OpenStack 同时连接到具有相同 AD 后端的 LDAP 身份验证和联合。

如果要使用 SAML 2.0 将 VMware Integrated OpenStackVMware Identity Manager 集成,请参见配置 VMware Identity Manager 联合

前提条件

  • 确定身份提供程序元数据文件的位置以及文件中的 entityID 属性。
  • 确保 VMware Integrated OpenStack 部署可以访问身份提供程序的 FQDN。
  • 对于 SAML2 属性映射,Keystone 使用 Shibboleth 作为 SSO 组件。Shibboleth 将 IdP 用户属性映射到 Keystone 使用的本地属性。有关用户属性,请联系您的 IdP 管理员。
  • 对于 SAML2 规则映射,Keystone 需要使用规则将远程用户映射到本地域、项目和组。有关详细信息,请参见 OpenStack 文档中的映射组合
  • 在身份提供程序端,您必须正确配置服务提供程序。可以使用以下 URL 访问服务提供程序元数据:https://<vio_public_endpoint>:5000/<your_idp_name>/Shibboleth.sso/Metadata

过程

  1. admin 用户身份登录到 Integrated OpenStack Manager Web 界面。
  2. OpenStack 部署中,单击部署的名称,然后打开管理选项卡。
  3. Keystone 联合选项卡中,单击添加
  4. 联合类型下拉菜单中,选择 Generic SAML2
  5. 输入所需的参数。
    选项 说明
    名称

    为身份提供程序输入名称。VMware Integrated OpenStack 使用此名称创建 OpenStack 身份提供程序。

    描述

    输入身份提供程序的描述。

    属性映射

    以 JSON 格式输入其他 SAML 属性,或者上载包含所需属性的 JSON 文件。VMware Integrated OpenStack 使用 JSON 数据配置 Shibboleth attribute-map.xml 文件。

    Generic SAML2 不安全

    取消选中该复选框,以便可以验证身份提供程序的证书。

    Generic SAML2 实体 ID

    输入身份提供程序的 entityID 属性。可以在联合元数据文件中找到此值。VMware Integrated OpenStack 使用此值创建 OpenStack 身份提供程序。

    SAML2 元数据 URL

    输入身份提供程序的联合元数据文件的 URL。VIO Manager 可以访问此 URL 以下载元数据文件。

    SAML2 映射

    以 JSON 格式输入 SAML 映射,或者上载包含所需映射的 JSON 文件。VMware Integrated OpenStack 使用此值创建 OpenStack 映射,并将其设置为此身份提供程序的联合协议。

    属性映射格式和示例:
    [
          {
            "name": "urn:oid:0.9.2342.19200300.100.1.1",
            "nameFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
            "id": "username"
          },
          {
            "name": "urn:oid:0.9.2342.19200300.100.1.3",
            "nameFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
            "id": "email"
          }
        ]
    
    选项 说明

    name

    输入属性名称。Keystone 至少需要一个可用作用户唯一标识的属性。例如,usernameemail 等。请联系您的 IdP 管理员以确定属性名称,该名称可能不同于 IdP 服务器。

    nameFormat

    输入属性名称格式。请联系您的 IdP 管理员以确定格式值。该属性为可选。
    id

    输入此属性的字符串值。请勿在字符串值中使用空格。例如,请勿使用“user name”,而是使用 "username"。此值可在映射规则中用作 remote:type

    SAML2 规则映射格式和示例:
    [
      {
        "local": [
          {
            "user": {
              "name": "{1}"
            },
            "group": {
              "name": "federated_users",
              "domain": {
                "name": "federated_domain"
              }
            }
          }
        ],
        "remote": [
          {
            "type": "username"
          },	
          {
            "type": "email"
          }
        ]
      }
    ]
    
    您可以在 OpenStack 社区中 Keystone 的 映射组合下找到规则映射定义。
    选项 说明

    local

    JSON 定义OpenStack的本地域和项目。此属性可用于从 IdP 映射的用户。例如,在 SAML2 规则映射中,"name": "{1}" 与使用 "type": "email" 作为 Keystone 的登录名以及指定域和项目的登录名相同。

    remote

    此部分定义用于映射远程属性的规则和条件。

  6. (可选) 选中高级设置复选框以配置域、项目和组参数。
    1. 通用高级设置下,输入 federated_domain 作为 OpenStack 域,输入 federated_project 作为项目并输入 federated_group 作为组。
    2. OpenStack 域、项目和组名称必须与规则映射 "local" JSON 中提供的信息匹配。
    3. VMware Integrated OpenStack 为指定的联合用户创建域和项目。
      注: 请勿输入 federated 作为域名,因为 Keystone 使用此名称。
  7. 单击确定
    注: 完成 SAML2 配置后,您会看到 Keystone 服务正在自动重新启动。下载元数据之前,请执行 viocli get deployment 以确保部署状态已更改为 正在运行
  8. 确保可以访问 https://<vio_public_endpoint>:5000/<your_idp_name>/Shibboleth.sso/Metadata,并配置 IdP 服务以信任 VMware Integrated OpenStack Keystone 作为服务提供程序。

结果

VMware Integrated OpenStack 与您的身份提供程序解决方案相集成,并且联合用户和组将导入到 OpenStack 中。访问 VMware Integrated OpenStack 仪表板时,您可以选择指定的身份提供程序以联合用户的身份登录。

注: 使用身份联合时,必须通过公共 OpenStack 端点访问 VMware Integrated OpenStack 仪表板。不要使用专用 OpenStack 端点或控制器 IP 地址以联合用户的身份登录。

示例: 将 VMware Integrated OpenStack 与 Active Directory 联合身份验证服务集成

以下过程基于用户主体名称 (UPN) 在 VMware Integrated OpenStack 和 Active Directory 联合身份验证服务 (ADFS) 之间实现身份联合。ADFS 配置过程是供您参考的示例,实际企业配置可能有所不同。您必须更改相应的 VMware Integrated OpenStack SAML 配置。

在此示例中,VMware Integrated OpenStack 部署的公共虚拟 IP 地址是 192.0.2.160,ADFS 角色是位于 adfs.example.com 的 Windows Server 虚拟机的一部分。VMware Integrated OpenStack 中身份提供程序的名称是 adfsvio

  1. 在 ADFS 中,为 VMware Integrated OpenStack 添加信赖方信任。
    1. ADFS 管理中,选择操作 > 添加信赖方信任...
    2. 单击启动
    3. 选择手动输入有关信赖方的数据,然后单击下一步
    4. 输入 OpenStack 作为显示名称,然后单击下一步
    5. 选择 ADFS 配置文件,然后单击下一步
    6. 单击下一步
    7. 选择启用对 SAML 2.0 WebSSO 协议的支持
    8. 输入 https://192.0.2.160:5000/adfsvio/Shibboleth.sso/SAML2 作为信赖方 URL,然后单击下一步
    9. 输入 https://192.0.2.160:5000/adfsvio 作为信赖方信任标识符,依次单击添加下一步
    10. 选择我不想配置多重身份验证,然后单击下一步
    11. 选择允许所有用户访问此信赖方,然后单击下一步
    12. 单击下一步,选择编辑声明规则,然后单击关闭
    13. 单击添加规则...
    14. 选择经历或筛选传入声明,并单击下一步
    15. 输入 UPN passthrough 作为规则名称,然后选择 UPN 作为传入声明类型。
    16. 选择传递所有声明值,并单击完成
  2. admin 用户身份登录到 Integrated OpenStack Manager Web 界面。
  3. OpenStack 部署中,单击部署的名称,然后打开管理选项卡。
  4. 身份联合选项卡中,单击添加
  5. 联合类型下拉菜单中,选择 Generic SAML2
  6. 输入以下配置:
    选项 说明
    名称 adfsvio
    描述 ADFS 身份提供程序
    属性映射
    [
        {
            "name": "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn",
            "id": "upn"
        }
    ]
    Generic SAML2 实体 ID http://adfs.example.com/adfs/services/trust
    SAML2 元数据 URL https://adfs.example.com/federationmetadata/2007-06/federationmetadata.xml
    SAML2 映射
    [
        {
            "local": [
                {
                    "user": {
                        "name": "{0}"
                    },
                    "group": {
                        "domain": {
                            "name": "adfs-users"
                        },
                        "name": "Federated Users"
                    }
                }
            ],
            "remote": [
                {
                    "type": "upn"
                }
            ]
        }
    ]
  7. 选中高级设置复选框。
  8. 选择通用高级设置,然后输入以下配置。
    选项 说明
    adfs-users
    项目

    将文本框留空。

    联合用户

配置验证和更新完成后,打开 VMware Integrated OpenStack 仪表板。现在,您可以选择 ADFS 身份提供程序并以联合用户身份登录。

下一步做什么

要删除已配置的身份提供程序,请选择 Integrated OpenStack Manager Web 界面,然后单击删除。之后,登录到 VMware Integrated OpenStack 仪表板,选择身份 > 联合 > 身份提供程序,选择所需的提供程序,然后单击取消注册身份提供程序