配置 keystone 到 keystone 联合身份验证

在 keystone 到 keystone 联合身份验证 (k2k) 中,IdP 和 SP keystone 实例安全地交换信息,以便 IdP 云中的用户可以访问 SP 云的资源。

重要提示

本节仅适用于 keystone IdP 和 keystone SP 之间的联合身份验证。它不适用于非 keystone IdP。

k2k 身份验证流程涉及以下步骤

  1. 使用您的凭据登录到 IdP。

  2. 向 IdP 发送请求,为给定的 SP 生成断言。

  3. 将断言提交到 SP 的配置的 sp_url 端点。在 SP 上运行的 Shibboleth 服务接收断言并对其进行验证。如果断言有效,则会启动与客户端的会话,并在 cookie 中返回会话 ID。

  4. 连接到 SP 的配置的 auth_url 端点,提供带有会话 ID 的 Shibboleth cookie。SP 会响应一个未限定范围的令牌,您可以使用该令牌访问 SP。

  5. 您使用未限定范围的令牌、所需的域和项目连接到 SP 上的 keystone 服务,并接收限定范围的令牌和服务目录。

  6. 使用您的令牌,您现在可以对目录中的端点进行 API 请求。

Keystone 到 keystone 联合身份验证包装器

上述步骤涉及手动发送 API 请求。

注意

执行这些步骤以方便用户的命令行工具的基础设施不存在。

为了获得对 SP 云的访问权限,OpenStack-Ansible 提供了一个包装上述步骤的脚本。该脚本称为 federated-login.sh,其用法如下

# ./scripts/federated-login.sh -p project [-d domain] sp_id
  • project 是您想要访问的 SP 云中的项目。

  • domain 是项目所在的域(如果未提供此参数,则使用默认域)。

  • sp_id 是 SP 的唯一 ID。这在 IdP 配置中提供。

该脚本将身份验证流程中所有步骤的结果输出到控制台。最后,它会打印目录中的可用端点和 SP 提供的限定范围的令牌。

使用以下方式将端点和令牌与 openstack 命令行客户端一起使用

# openstack --os-token=<token> --os-url=<service-endpoint> [options]

或者,也可以

# export OS_TOKEN=<token>
# export OS_URL=<service-endpoint>
# openstack [options]

请确保选择适合您操作的端点。例如,如果您想使用服务器,则必须将 OS_URL 参数设置为计算端点。

注意

目前,OpenStack 客户端在使用联合身份验证时无法在服务目录中找到端点。