我正在尝试在HAProxy中实现一种身份验证形式,其中1个身份验证ID可以映射到多个数据ID,这在用户调用它们时几乎限制了对我的Api的数据访问。我想在地图文件中执行此操作,因为这些ID会经常更改。因此,编写单独的规则并不合理。
所以理论上我想这样做:
用户X使用数据ID 123调用端点。用户可以访问。
用户X使用数据ID 456调用端点。用户被授予访问权限。
用户y使用数据ID 123调用端点。拒绝用户访问。
示例地图文件: Left coloumn是ID,右边是DataID
这可行吗?如果没有,那么什么是模仿这种行为的好方法呢?
答案 0 :(得分:1)
在您的情况下,键(左列)应该是唯一的。 也就是说,这对于如下所示的地图文件是完全可行的:
X-123 allow
X-456 allow
X-789 allow
Y-121 allow
Y-111 allow
Z-123 allow
首先,您必须在临时HTTP标头中连接username和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 }
巴普蒂斯特