如何使用Erlang条件(RabbitMQ和Erlang)

时间:2018-01-08 14:25:58

标签: erlang rabbitmq

我试图弄清楚如何在rabbitmq.config中创建更精细的身份验证/授权。我认为它使用的语言被称为Erlang(是吗?)。

我尝试使用以下条件试图使用条件,但它失败了:

{vhost_access_query,
  {in_group,
    {'or', [
      "CN=${vhost}-users,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com",
      "CN=${vhost}-admins,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com",
      "CN=${vhost}-consumers,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com",
      "CN=${vhost}-producers,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com"
    ]}
}},

无论如何,它不喜欢它。我试图做的是说四个组中的任何一个都允许vhost访问 - group1group2group3等。

1 个答案:

答案 0 :(得分:0)

除此之外:RabbitMQ是用Erlang编写的。配置文件使用Erlang风格的术语({a, tuple}["a", list]),但它不是 Erlang。

查看RabbitMQ documentation for the LDAP plugin,它说'or'列出了一些子查询

{'or', [SubQuery1, SubQuery2, SubQuery3, ...]}

这意味着您实际需要的是这样的:

{vhost_access_query,
    {'or',
        [
         {in_group, "CN=${vhost}-users,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com"},
         {in_group, "CN=${vhost}-admins,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com"},
         {in_group, "CN=${vhost}-consumers,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com"},
         {in_group, "CN=${vhost}-producers,ou=vhosts,ou=MIS,ou=ISD,ou=US,ou=Servers,dc=domain,dc=com"}
        ]
    }
},

...但不要引用我(除非我是对的);我从未使用过LDAP插件。