配置 keystone 到 keystone 联合身份验证¶
在 keystone 到 keystone 联合身份验证 (k2k) 中,IdP 和 SP keystone 实例安全地交换信息,以便 IdP 云中的用户可以访问 SP 云的资源。
重要提示
本节仅适用于 keystone IdP 和 keystone SP 之间的联合身份验证。它不适用于非 keystone IdP。
k2k 身份验证流程涉及以下步骤
使用您的凭据登录到 IdP。
向 IdP 发送请求,为给定的 SP 生成断言。
将断言提交到 SP 的配置的
sp_url端点。在 SP 上运行的 Shibboleth 服务接收断言并对其进行验证。如果断言有效,则会启动与客户端的会话,并在 cookie 中返回会话 ID。连接到 SP 的配置的
auth_url端点,提供带有会话 ID 的 Shibboleth cookie。SP 会响应一个未限定范围的令牌,您可以使用该令牌访问 SP。您使用未限定范围的令牌、所需的域和项目连接到 SP 上的 keystone 服务,并接收限定范围的令牌和服务目录。
使用您的令牌,您现在可以对目录中的端点进行 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 客户端在使用联合身份验证时无法在服务目录中找到端点。