Haproxy映射:将1个ID映射到多行

Haproxy map: Mapping 1 ID to multiple rows

我正在尝试在 HAProxy 中实现一种身份验证形式,其中 1 个身份验证 ID 可以映射到多个数据 ID,这在用户调用它们时几乎限制了对我的 Api 的数据访问。我想在地图文件中执行此操作,因为这些 ID 会非常频繁地更改。所以写单独的规则是不合理的。

所以理论上我想这样做:

用户 X 使用数据 ID 123 调用端点。用户被授予访问权限。

用户 X 使用数据 ID 456 调用端点。用户获得访问权限。

用户 y 使用数据 ID 123 调用端点。用户被拒绝访问。

示例地图文件: 左边是ID,右边是DataID

这可行吗?如果不是,模仿这种行为的替代方法是什么?

密钥(左列)在您的情况下应该是唯一的。 也就是说,这对于像下面这样的地图文件是完全可行的:

X-123  allow
X-456  allow
X-789  allow
Y-121  allow
Y-111  allow
Z-123  allow

首先,您必须在临时 HTTP header 中连接用户名和 data-id,然后像这样使用它:

http-request set-header X-my-internal-key %[req.hdr(Username)]-%[req.hr(myendpoint_id)]
http-request deny unless { req.hdr(X-my-internal-key),map(/path/to/mapfile.map) -m found }

巴蒂斯特