如何使用LDAP为AD组配置RabbitMQ?

如何使用LDAP为AD组配置RabbitMQ?,rabbitmq,ldap,Rabbitmq,Ldap,我是LDAP新手 到目前为止,我已经成功地使用LDAP配置rabbitMQ并对其进行身份验证(如果是针对单个AD)。 我正在使用以下配置: RabbitMQ配置文件 auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal] 在RabbitMQ管理中, 我已经手动创建了一个没有密码设置的用户名(它可以工作) 但是,假设 我有一个广告组(称为“兔子用户组

我是LDAP新手

到目前为止,我已经成功地使用LDAP配置rabbitMQ并对其进行身份验证(如果是针对单个AD)。 我正在使用以下配置:

RabbitMQ配置文件

auth_backends,[{rabbit_auth_backend_ldap, rabbit_auth_backend_internal},rabbit_auth_backend_internal]
在RabbitMQ管理中, 我已经手动创建了一个没有密码设置的用户名(它可以工作)

但是,假设

我有一个广告组(称为“兔子用户组”),里面有3个用户(User1、User2、User3)

“兔子用户组”的位置位于: sample.companyname.com>城市名称(OU)>组(OU)>IT组(OU)>“兔子用户组”(安全组)

我可以知道我应该如何在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管理中创建一个名为“兔子用户组”的用户名,而无需密码。但当我尝试以“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,
 }
].
如果有人能给我一些关于如何使用LDAP为AD组配置RabbitMQ身份验证的指南,我将不胜感激


感谢您的期待。

经过多次尝试和反复阅读,以下内容对我来说非常有用:

我需要将“dn\u lookup\u属性”设置为DiscrimitedName(dn),而不是userPrincipalName/sAMAccountName,这样它将使用此用户的dn在in\u组中检查成员。如下图所示:

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

我刚刚意识到,用户列表的Microsoft Active Directory组被称为“成员”,而OpenLDAP被称为“uniqueMember”。Microsoft Active Directory和OpenLDAP都是不同的LDAP服务风格,具有不同的组用户列表属性

总体配置文件:

[
 {
  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,
 }
].
我在这里发布解决方案。
希望这将有助于其他在未来遇到与我相同问题的人。=).*干杯。

经过多次尝试和反复阅读,到目前为止,以下内容适用于我:

我需要将“dn_lookup_属性”设置为DifferentizedName(dn),而不是userPrincipalName/sAMAccountName,这样它将使用此用户的dn在in_组中检查成员。如下所示:

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

我刚刚意识到,用户列表的Microsoft Active Directory组称为“成员”,而OpenLDAP称为“唯一成员”。Microsoft Active Directory和OpenLDAP都是不同的LDAP服务风格,具有不同的组用户列表属性

总体配置文件:

[
 {
  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,
 }
].
我在这里发布解决方案。
希望这将有助于将来遇到与我相同问题的其他人*干杯。

-打开
网络日志级别查看发生了什么。这可能也会有所帮助-@LukeBakken感谢您的回复和链接。我很感激。是的,我指的是in_组的github.com/marciallosales/rabbitmq-ldap-integration。但这对我不起作用。经过几次尝试和错误,我终于找到了使它工作的方法。我将分享下面的答案,以防有人遇到与我相同的问题。同时也感谢你提示我使用“网络不安全”,我会尝试一下=)@LukeBakken,如果你不介意的话,我想问一下,是否有一种方法允许用户使用他们的电子邮件地址/“userPrincipalName”而不是使用“cn”登录?我在下面发布的以下解决方案将要求用户根据Microsoft Active Directory中的用户CN名称输入自己的姓名,而不是使用自己的帐户名登录。我的用户CN名为“雪兔”,但我的用户名是“雪”。bunny@domain.comsAMAccountName是“snow.bunny”-打开
网络\u unsafe
日志级别以查看发生了什么。这可能也会有所帮助-@LukeBakken感谢您的回复和链接。我很感激。是的,我指的是in_组的github.com/marciallosales/rabbitmq-ldap-integration。但这对我不起作用。经过几次尝试和错误,我终于找到了使它工作的方法。我将分享下面的答案,以防有人遇到与我相同的问题。同时也感谢你提示我使用“网络不安全”,我会尝试一下=)@LukeBakken,如果你不介意的话,我想问一下,是否有一种方法允许用户使用他们的电子邮件地址/“userPrincipalName”而不是使用“cn”登录?我在下面发布的以下解决方案将要求用户根据Microsoft Active Directory中的用户CN名称输入自己的姓名,而不是使用自己的帐户名登录。我的用户CN名为“雪兔”,但我的用户名是“雪”。bunny@domain.comsAMAccountName是“雪,兔子”