移除客户端 ID 的格式限制

https://blueprints.launchpad.net/zaqar/+spec/remove-format-constraint-of-client-id

由于某些客户端使用不同格式的客户端 ID,而不仅仅是 UUID,因此 Zaqar 将支持此功能。这也要求用户确保客户端 ID 是不可变的。

问题描述

现在 Zaqar 对客户端 ID 有格式限制,必须为 UUID 格式。但在某些情况下,此限制不太合理,例如用户希望将 LDAP 中的用户 ID 作为客户端 ID,但 Zaqar 目前不允许这样做。

提议的变更

  • 添加三个配置选项

    1. ‘client_id_uuid_safe’:定义客户端 ID 的格式,值可以是“strict”或“off”。“strict”表示客户端 ID 的格式必须为 UUID,“off”表示移除限制。默认值为‘strict’。

    2. ‘min_length_client_id’:如果移除 UUID 限制,则定义客户端 ID 的最小长度。默认值为 10。

    3. ‘max_length_client_id’:如果移除 UUID 限制,则定义客户端 ID 的最大长度。默认值为 36。

  • 将更改 wsgi/helpers.py 中的 ‘require_client_id’ 方法以支持验证不同格式的客户端 ID。

API 影响

对于 WSGI:将影响 v1.1 和 v2 版本的全部 API。

对于 WebSocket:将影响 v2 版本的消息列表和消息发布。我们将在后续补丁中支持其他 API。

缺点

如果用户使用非常长的客户端 ID,可能会有轻微的性能影响,因为 Zaqar 需要在存储层中存储客户端 ID。

备选方案

N/A

实现

负责人

wanghao<sxmatch1986@gmail.com>

里程碑

Rocky-3

工作项

#* 更改 Zaqar 服务器代码。 #* 更新 API 参考。 #* 为此功能添加发布说明。 #* 此功能的单元测试。

依赖项

N/A