rabbitmq - 如何使用 LDAP 为 AD 组配置 RabbitMQ?
问题描述
我是 LDAP 新手。
到目前为止,我已经设法使用 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)。
“Rabbit User Group”的位置在:sample.companyname.com > City Name (OU) > Groups (OU) > IT Groups (OU) > “Rabbit User Group”(安全组)。
我可以知道我应该如何在 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,
}
].
如果有人能给我一些关于如何使用 LDAP 为 AD 组配置 RabbitMQ 身份验证的指南,我将不胜感激。
感谢你在期待。
解决方案
经过几次反复试验和多次阅读,到目前为止,以下内容对我有用:
我需要将“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 称为“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,
}
].
我在这里发布解决方案。希望这将有助于将来遇到与我相同问题的其他人。=)。*干杯。
推荐阅读
- python - Django Websocket 通信
- android - 使用 fusedLocationProviderClient 使用前台服务跟踪用户位置时,Android 应用程序崩溃
- php - 在 Laravel 中列出本月或每个月的所有日期
- android - 在 MediaMuxer 中重复声音直到视频完成
- javascript - 如何为数组映射中的特定索引设置状态
- excel - 如何将鼠标悬停在 Web 元素上以查看隐藏选项列表,然后单击这些选项?- Selenium ChromeDriver - VBA Excel
- jenkins - MacOS Jenkins Subversion Plugin svn 更新问题
- python - 我试图弄清楚这个 python 程序手动运行它是做什么的
- php - Symfony Sonata 媒体库中的“添加新”按钮引发 PHPCR 错误
- c# - 在 C# 中将 UTC 日期时间转换为本地日期时间