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
- X 456
- X 789
- Y 121
- Y 111
- Z 123
这可行吗?如果不是,模仿这种行为的替代方法是什么?
密钥(左列)在您的情况下应该是唯一的。
也就是说,这对于像下面这样的地图文件是完全可行的:
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 }
巴蒂斯特
我正在尝试在 HAProxy 中实现一种身份验证形式,其中 1 个身份验证 ID 可以映射到多个数据 ID,这在用户调用它们时几乎限制了对我的 Api 的数据访问。我想在地图文件中执行此操作,因为这些 ID 会非常频繁地更改。所以写单独的规则是不合理的。
所以理论上我想这样做:
用户 X 使用数据 ID 123 调用端点。用户被授予访问权限。
用户 X 使用数据 ID 456 调用端点。用户获得访问权限。
用户 y 使用数据 ID 123 调用端点。用户被拒绝访问。
示例地图文件: 左边是ID,右边是DataID
- X 123
- X 456
- X 789
- Y 121
- Y 111
- Z 123
这可行吗?如果不是,模仿这种行为的替代方法是什么?
密钥(左列)在您的情况下应该是唯一的。 也就是说,这对于像下面这样的地图文件是完全可行的:
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 }
巴蒂斯特