跳转到: 导航, 搜索

Swift/ideas/swiftclient-keystone-session

< Swift‎ | ideas

Swiftclient Keystone 会话支持

关于正确使用 Keystone 会话,我们已经在峰会/黑客马拉松上讨论了一段时间了 :(

过去曾有人做过一些工作,使用一种非常轻量级的方法,允许 python-swiftclient 在保持现有 API 的同时使用 Keystone 会话。然而,Keystone 的最新更新以及特定版本会话的弃用,意味着我们使用 Keystone 的方式(特定 Keystone 版本会话和提取令牌直接使用)与 Keystone 开发人员的当前期望不符。

在使用 Keystone 进行身份验证时,python-swiftclient 应该使用 Keystone 会话来发出请求,并允许将现有的会话对象传递给 API 调用(或 SwiftService 实例)。当前的 python-swiftclient 代码通过从会话中获取访问令牌来直接使用访问令牌,以避免更改现有的方法签名。

为了按照 Keystone 项目的期望使用会话,我们需要执行以下操作

  • 所有客户端 API 函数都需要重构,以停止处理重新身份验证、添加身份验证头和手动处理令牌
  • 所有客户端请求都应通过 Keystone 会话进行

因此,这需要大量的工作,并且可能会破坏 API:S

另一个讨论点来自之前的(现在已放弃)补丁,提出了我们也许不应该指定 Keystone 版本,而是使用 keystoneauth 的版本发现,但同样,这也会给 swiftclient 的所有层带来细微的行为变化,包括 CLI(例如,发现身份验证端点而不是使用确切指定的端点,或者完全忽略请求的身份验证版本)。

当前补丁和相关讨论

补丁“尽可能使用 keystone 会话” [1] 已由 jaosorior 添加,作为起点,并表明在 python-swiftclient 中正确支持通用 Keystone 会话和 Keystone 版本检测需要哪些更改。

过去的相关补丁

  • 使用通用 keystone 客户端而不是版本化的客户端 [2] (已放弃)
  • WIP:尽可能使用 keystone 会话 [3]
  • 将会话添加到 switfclient [4] (已放弃)
  • 添加 v1password keystoneauth 插件 [5] (已合并)
  • 添加 keystoneauth 会话支持 [6] (已合并)