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

时间:2015-07-27 14:40:31

标签: authentication dictionary haproxy

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

所以理论上我想这样做:

用户X使用数据ID 123调用端点。用户可以访问。

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

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

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

  • X 123
  • X 456
  • X 789
  • Y 121
  • Y 111
  • Z 123

这可行吗?如果没有,那么什么是模仿这种行为的好方法呢?

1 个答案:

答案 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 }

巴普蒂斯特