【问题标题】:How to configure RabbitMQ with LDAP for AD Groups?如何使用 LDAP 为 AD 组配置 RabbitMQ?
【发布时间】:2019-11-21 08:24:40
【问题描述】:

我已经设法使用 LDAP 配置 RabbitMQ 并对其进行身份验证,如果它是针对个人 AD 帐户的。我正在使用以下配置:

RabbitMQ 配置文件:

auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal]

在 RabbitMQ 管理中,我手动创建了一个未设置密码的用户名(它有效)。但是,假设我有一个 AD 组(称为“Rabbit 用户组”),其中有 3 个用户(User1、User2、User3)。

“兔子用户组”的位置在:

sample.companyname.com > City Name (OU) > Groups (OU) > IT Groups (OU) > "Rabbit User Group" (Security Group)

我应该如何在 RabbitMQ 管理和配置文件中配置它,以便在我更新特定组后,组内的所有成员都能够进行身份验证并拥有相同的权限(例如,只有这个组具有管理员权限) 在 RabbitMQ 中?

我想避免在 RabbitMQ 管理中手动创建每个单独的用户进行身份验证?

我已将以下内容添加到我的 RabbitMQ 配置文件中

{
    tag_queries, [
                    {administrator,{in_group,'CN="Rabbit User Group",OU="City Name", OU=Groups, OU="IT Group",DC=sample,DC=companyname,DC=com',"uniqueMember"}},
                    {management,    {constant, true}}
                 ]
}

并尝试在没有密码的情况下在 RabbitMQ 管理中创建一个名为“Rabbit User Group”的用户名。但是当我尝试以“User1”身份登录时,我无法登录。

这是我的整体配置文件:

[
 {
  rabbit,
  [
   {
     auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal]
   }
  ]
 },
 {
   rabbitmq_auth_backend_ldap,
   [   
        {servers, ["sample.companyname.com","192.168.63.123"]},
        {dn_lookup_attribute, "userPrincipalName"},
        {dn_lookup_base, "DC=AS,DC=companyname,DC=com"},
        {user_dn_pattern, "${username}@as.companyname.com"},
        {use_ssl, false},
        {port, 636},   
        {log, true},
        {
            tag_queries, [
                            {administrator,{in_group,'CN="Rabbit User Group",OU="City Name", OU=Groups, OU="IT Group",DC=sample,DC=companyname,DC=com',"uniqueMember"}},
                            {management,    {constant, true}}
                         ]
        }
    ]%% rabbitmq_auth_backend_ldap,
 }
].

【问题讨论】:

  • rabbitmq.com/ldap.html - 打开network_unsafe 日志级别以查看发生了什么。这也可能有所帮助 - github.com/MarcialRosales/rabbitmq-ldap-integration
  • @LukeBakken 感谢您的回复以及链接。我很感激。是的,我一直在指的是 in_group 的 github.com/MarcialRosales/rabbitmq-ldap-integration。但这对我不起作用。经过几次反复试验,我终于找到了使它起作用的方法。我将在下面分享答案,以防有人遇到与我相同的问题。也感谢您使用“network_unsafe”的提示,我会尝试一下=)
  • @LukeBakken ,如果你不介意,我想问一下我是否有办法让用户使用他们的电子邮件地址/“userPrincipalName”而不是使用“cn”登录“?我在下面发布的以下解决方案将要求用户根据 Microsoft Active Directory 中的用户 CN 名称输入他们的姓名来登录,而不是使用他们的 accountName。我的用户 CN 称为“Snow Bunny”,但我的 userPrincipalName 是“snow.bunny@domain.com”,sAMAccountName 是“snow.bunny”

标签: rabbitmq ldap


【解决方案1】:

您需要将“dn_lookup_attribute”设置为 distinctName (DN) 而不是 userPrincipalName / sAMAccountName,以便它将使用此用户的 DN 来检查 in_group 的成员。如下图:

{dn_lookup_attribute, "distinguishedName"}, 
{user_dn_pattern, "CN=${username},OU=Users,DC=sample,DC=companyname,DC=com"},

代替:

{dn_lookup_attribute, "userPrincipalName"},
{user_dn_pattern, "${username}@as.companyname.com"},

Microsoft Active Directory 和 OpenLDAP 是不同的 LDAP 服务风格,并且具有不同的组用户列表属性。用户列表的 Microsoft Active Directory 组称为“成员”,而 OpenLDAP 组称为“uniqueMember”。

整体配置文件:

[
 {
  rabbit,
  [
   {
     auth_backends, [rabbit_auth_backend_ldap, rabbit_auth_backend_internal]  
   }
  ]
 },
 {
   rabbitmq_auth_backend_ldap,
   [   
        {servers, ["sample.companyname.com","192.168.63.123"]},

        {dn_lookup_attribute, "distinguishedName"},
        {dn_lookup_base, "DC=AS,DC=companyname,DC=com"},
        {user_dn_pattern, "CN=${username},OU=Users,DC=sample,DC=companyname,DC=com"},
        
        {use_ssl, false},
        {port, 636},   
        {log, true},
        {
            tag_queries, [
                            {administrator,{in_group,"CN=Rabbit User Group,OU=City Name, OU=Groups, OU=IT Group,DC=sample,DC=companyname,DC=com","member"}},
                            {management,    {constant, true}}
                         ]
        }
    ]%% rabbitmq_auth_backend_ldap,
 }
].

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2018-08-24
    • 2018-08-20
    • 2013-08-10
    • 1970-01-01
    • 2017-01-22
    相关资源
    最近更新 更多