在 OpenStack 的 Folsom 版本中,身份机制和 API 不支持任何联合的概念。这是 OpenStack Grizzly 设计峰会上讨论的主题之一——您可以在联邦蓝图上看到该讨论/对话的一些细节。
对于 OpenStack 的 Essex 和 Folsom 版本,身份服务(Keystone)具有一种机制,用于通过从 Driver 继承和实现来编写身份“插件”(在https://github.com/openstack/keystone/blob/master/keystone /identity/core.py)。这方面的示例可以在https://github.com/openstack/keystone/tree/master/keystone/identity/backends上的项目提供的后端中找到。
恐怕没有关于制作自定义身份后端的具体文档和示例,但已经完成 - 在https://gist.github.com/3176390上有一个示例混合 SQL/LDAP 后端的要点
为 DeLac 的扩展扩展一点:
Keystone 提供了一组特定于 OpenStack 的信息,它比基本身份验证更详细一些——最具体地说,它包括项目或租户的概念,以及用户是否被授权访问该项目或租户。当 keystone 提供与其他 OpenStack 项目一起使用的令牌凭证时,这些项目可以查询回 Keystone 以确定这些额外的详细信息,以提供授权策略的实施。
如果您想插入另一个或替代身份验证机制来支持 Keystone(例如联合身份提供者),从 Folsom 版本开始,您可以通过创建一个 Keystone 身份后端来实现,该后端可以针对您的特定提供者进行身份验证,并且还可以执行任何业务您认为合适的逻辑来提供有关用户及其与项目的关联方式以及用户对每个项目的角色的信息。
所有 keystone 都可以修改为使用 SAML 或该方案的其他变体,但这将是对许多组件的整体替换,而不仅仅是在这种情况下对身份验证进行插件升级。正在进行一些努力以使其更容易一些(特别是启用基于 PKI 的身份验证而不是简单的令牌),但在这种方式中任何重要的事情都将是一项艰巨的任务。也就是说,Keystone 和其他 OpenStack 组件具有定义合理的 API 和它们正在使用的接口,因此这不是一项不可能完成的任务。