Я пытаюсь настроить свою конфигурацию LDAP-провайдера RabbitMQ, чтобы иметь возможность аутентифицировать моих пользователей, а затем связать их с правильными тегами администрирования пользователей.
В настоящее время rabbitmq, похоже, может аутентифицируйте меня по AD, но тогда не сможете проверить, в каких группах AD я нахожусь.
Конфигурация:
,{rabbitmq_auth_backend_ldap, [
{servers, ["myDC.myDomain.com"]}
,{dn_lookup_bind, {"cn=MyServiceAccount,dc=serviceAccounts,dc=myDomain,dc=com", "Service@ccountPa$$word"}}
,{dn_lookup_attribute, "userPrincipalName"}
,{dn_lookup_base, "DC=myDomain,DC=com"}
,{group_lookup_base, "ou=myLocation,ou=Groups,dc=myDomain,dc=com"}
,{log, true}
,{vhost_access_query, {constant, true}}
,{topic_access_query, {constant, true}}
,{resource_access_query, {constant, true}}
,{tag_queries, [
{ administrator, { in_group, "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com" } },
{ management, { in_group, "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com" } }
]}
]}
Ниже вы можете видеть, что он находит меня и это затем не удается разрешить мои группы.
Некоторые примечания включают в себя:
- В журналах, где отображается мое DN (строка 9), отображается пустой массив.
- Кажется, это работает только тогда, когда мое имя пользователя отформатировано как myDomain \ myUserName
2020-01-15 19:22:17.582 [info] <0.2143.0> LDAP CHECK: login for myDomain\myUserName
2020-01-15 19:22:17.582 [info] <0.2143.0> LDAP filling template "${username}" with
[{username,<<"myDomain\\myUserName">>},{ad_domain,<<"myDomain">>},{ad_user,<<"myUserName">>}]
2020-01-15 19:22:17.582 [info] <0.2143.0> LDAP template result: "myDomain\myUserName"
2020-01-15 19:22:17.589 [info] <0.367.0> LDAP bind succeeded: xxxx
2020-01-15 19:22:17.589 [info] <0.367.0> LDAP filling template "${username}" with
[{username,<<"myDomain\\myUserName">>},{ad_domain,<<"myDomain">>},{ad_user,<<"myUserName">>}]
2020-01-15 19:22:17.589 [info] <0.367.0> LDAP template result: "myDomain\myUserName"
2020-01-15 19:22:17.591 [warning] <0.367.0> Searching for DN for myDomain\myUserName, got back []
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP bind succeeded: CN=xxxx,OU=xxxx,DC=xxxx,DC=xxxx
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP CHECK: does myDomain\myUserName have tag administrator?
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com"}
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com","member"}
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP filling template "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com" with
[{username,<<"myDomain\\myUserName">>},{user_dn,"myDomain\\myUserName"},{ad_domain,<<"myDomain">>},{ad_user,<<"myUserName">>}]
2020-01-15 19:22:17.594 [info] <0.367.0> LDAP template result: "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com"
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP evaluated in_group for "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com": false
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP DECISION: does myDomain\myUserName have tag administrator? false
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP CHECK: does myDomain\myUserName have tag management?
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com"}
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com","member"}
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP filling template "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com" with
[{username,<<"myDomain\\myUserName">>},{user_dn,"myDomain\\myUserName"},{ad_domain,<<"myDomain">>},{ad_user,<<"myUserName">>}]
2020-01-15 19:22:17.596 [info] <0.367.0> LDAP template result: "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com"
2020-01-15 19:22:17.597 [info] <0.367.0> LDAP evaluated in_group for "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com": false
2020-01-15 19:22:17.598 [info] <0.367.0> LDAP DECISION: does myDomain\myUserName have tag management? false
2020-01-15 19:22:17.598 [info] <0.2143.0> LDAP DECISION: login for myDomain\myUserName: ok
2020-01-15 19:22:17.598 [warning] <0.2143.0> HTTP access denied: user 'myDomain\myUserName' - Not management user
В другом посте я прочитал, что они заставили их работать, установив user_dn_pattern, а также изменив dn_lookup_attribute на Вместо этого, "отличительное имя". Кажется, это работает для меня, но, к сожалению, DN моей компании не стандартизированы, поэтому, если бы я это сделал, я мог заставить работать только небольшое подмножество моих пользователей.
Конфигурация:
,{rabbitmq_auth_backend_ldap, [
{servers, ["myDC.myDomain.com"]}
,{dn_lookup_bind, {"CN=myServiceAccount,OU=Services,DC=myDomain,DC=com", "Service@ccountPa$$word"}}
,{dn_lookup_attribute, "distinguishedName"}
,{user_dn_pattern, "CN=${username},OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com"}
,{dn_lookup_base, "DC=myDomain,DC=com"}
,{group_lookup_base, "ou=myLocation,ou=Groups,dc=myDomain,dc=com"}
,{log, true}
,{vhost_access_query, {constant, true}}
,{topic_access_query, {constant, true}}
,{resource_access_query, {constant, true}}
,{tag_queries, [
{ administrator, { in_group, "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com" } },
{ management, { in_group, "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com" } }
]}
]}
В журналах вы можете видеть, что он находит меня, а затем связывает меня с правильными группами, но он не будет работать для пользователей, чьи DN не совпадают точно с моим DN
Некоторые примечания включают в себя:
- Мне не нужно указывать свой домен в этой конфигурации
Мой DN: CN = myUserName, OU = randomSubOU, OU = Разработчики, OU = Пользователи, OU = myLocation, DC = myDomain, DC = com
2020-01-15 21:19:15.795 [info] <0.3040.0> LDAP CHECK: login for myUserName
2020-01-15 21:19:15.804 [info] <0.367.0> LDAP bind succeeded: CN=xxxx,OU=xxxx,DC=xxxx,DC=xxxx
2020-01-15 21:19:15.804 [info] <0.367.0> LDAP filling template "CN=${username},OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com" with
[{username,<<"myUserName">>}]
2020-01-15 21:19:15.804 [info] <0.367.0> LDAP template result: "CN=myUserName,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com"
2020-01-15 21:19:15.812 [info] <0.367.0> LDAP DN lookup: myUserName -> CN=myUserName,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP bind succeeded: CN=xxxx,OU=xxxx,OU=xxxx,OU=xxxx,OU=xxxx,DC=xxxx,DC=xxxx
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP CHECK: does myUserName have tag administrator?
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com"}
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com","member"}
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP filling template "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com" with
[{username,<<"myUserName">>},{user_dn,"CN=myUserName,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com"}]
2020-01-15 21:19:15.825 [info] <0.367.0> LDAP template result: "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com"
2020-01-15 21:19:15.833 [info] <0.367.0> LDAP evaluated in_group for "CN=rabbitAdmins,OU=myLocation,OU=Groups,DC=myDomain,DC=com": true
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP DECISION: does myUserName have tag administrator? true
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP CHECK: does myUserName have tag management?
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com"}
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP evaluating query: {in_group,"CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com","member"}
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP filling template "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com" with
[{username,<<"myUserName">>},{user_dn,"CN=myUserName,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com"}]
2020-01-15 21:19:15.834 [info] <0.367.0> LDAP template result: "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com"
2020-01-15 21:19:15.842 [info] <0.367.0> LDAP evaluated in_group for "CN=rabbitManagers,OU=myLocation,OU=Groups,DC=myDomain,DC=com": true
2020-01-15 21:19:15.843 [info] <0.367.0> LDAP DECISION: does myUserName have tag management? true
и вот как выглядят эти журналы, когда один из моих пиров (из другого OU) входит в систему
DN моего партнера: CN = myPeer, OU = Разработчики, OU = Пользователи, OU = myLocation, DC = myDomain, DC = com
2020-01-15 21:23:30.760 [info] <0.3394.0> LDAP CHECK: login for myPeer
2020-01-15 21:23:30.764 [info] <0.367.0> LDAP bind succeeded: CN=xxxx,OU=xxxx,DC=xxxx,DC=xxxx
2020-01-15 21:23:30.765 [info] <0.367.0> LDAP filling template "CN=${username},OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com" with
[{username,<<"myPeer">>}]
2020-01-15 21:23:30.765 [info] <0.367.0> LDAP template result: "CN=myPeer,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com"
2020-01-15 21:23:30.766 [warning] <0.367.0> Searching for DN for CN=myPeer,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com, got back []
2020-01-15 21:23:30.768 [info] <0.367.0> LDAP bind returned "invalid credentials": CN=xxxx,OU=xxxx,OU=xxxx,OU=xxxx,OU=xxxx,DC=xxxx,DC=xxxx
2020-01-15 21:23:30.768 [info] <0.3394.0> LDAP DECISION: login for myPeer: denied
2020-01-15 21:23:30.768 [warning] <0.3394.0> HTTP access denied: CN=myPeer,OU=randomSubOU,OU=Developers,OU=Users,OU=myLocation,DC=myDomain,DC=com