Сопоставление шаблонов в шаблоне отличительных имен LDAP

Я пытаюсь аутентифицировать пользователей с помощью django_auth_ldap. У меня есть пользователи в 2 разных группах (скажем, Theta & Gamma, Alpha & Rho),

В настоящее время для поиска пользователей я создал 2 бэкенда аутентификации & сопоставил USER_DN_TEMPLATE следующим образом:

'CN=%(user)s,OU=Television,OU=Theta,OU=Gamma,DC=example,DC=com'

к первому бэкенду & вот так :

'CN=%(user)s,OU=Television,OU=Alpha,OU=Rho,DC=example,DC=com'

на второй бэкэнд.

Все остальные настройки одинаковы. Я знаю, что это не идеальная установка, но я хочу знать как должен выглядеть мой DN_TEMPLATE, если мне нужно найти всех пользователей только в одном бэкенде аутентификации?

Там должен быть какой-то REGEX, подобный шаблону для замены Theta/Gamma/Alpha/Rho & тогда это должно работать (аналогично %(user)s в вышеприведенных шаблонах.

).

Другой подход будет заключаться в том, чтобы установить некоторые SCOPE_SUBTREE (& другие переменные) так, чтобы он искал всех пользователей в 'DC=example,DC=com'. Мне нужна помощь по этим переменным & значениям.

Вам нужно оставить AUTH_LDAP_USER_DN_TEMPLATE без значения, а вместо него установить AUTH_LDAP_USER_SEARCH.

Метод аутентификации search/bind включает в себя подключение к LDAP-серверу анонимно или с фиксированной учетной записью и поиск отличительного имени аутентифицируемого пользователя. Затем мы можем попытаться снова установить связь с паролем пользователя.

Например, вы можете установить базовый поиск на относительный dn, который является общим для всех пользователей :

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "DC=example,DC=com", ldap.SCOPE_SUBTREE, "(CN=%(user)s)"
)

Или вы можете сузить поиск, используя несколько баз (поисковые союзы) :

AUTH_LDAP_USER_SEARCH = LDAPSearchUnion(
    LDAPSearch("OU=Television,OU=Theta,OU=Gamma,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(CN=%(user)s)"),
    LDAPSearch("OU=Television,OU=Alpha,OU=Rho,DC=example,DC=com", ldap.SCOPE_SUBTREE, "(CN=%(user)s)"),
)

Если вы установите значение AUTH_LDAP_USER_DN_TEMPLATE, django_auth_ldap пропустит фазу поиска и перейдет к прямой привязке, получая DN пользователя из его имени пользователя и пытаясь привязаться как пользователь прямо.

Поскольку шаблон DN допускает только одно заполнение для имени пользователя, вы можете использовать метод прямой привязки только в том случае, если все пользователи имеют свои записи в одном контейнере.

Вернуться на верх