Сбой конфигурации RabbitMQ LDAP при поиске группы - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь настроить свою конфигурацию 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

1 Ответ

0 голосов
/ 16 января 2020

В итоге я понял это. Как упоминал Eri c, похоже, мне нужно было переключить dn_lookup_attribute на имя sAMAccountName.

,{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, "sAMAccountName"}
                ,{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" } },
                ]}
]}
...