#spring #spring-security #ldap #spring-ldap #spring-security-ldap
Вопрос:
Я добавляю поддержку LDAP для нашего приложения с использованием Spring LDAP, и я заметил, что, по-видимому, приемлемо оставить некоторые параметры конфигурации пустыми. Чтобы сделать вопрос менее когнитивно сложным, я пронумерую несколько утверждений.
- Существует утверждение, в
FilterBasedLdapUserSearch
котором говорится следующее:searchBase must not be null (an empty string is acceptable).
- Аналогично, в документации
DefaultLdapAuthoritiesPopulator
говорится следующее:groupSearchBase: if this is an empty string the search will be performed from the root DN of the context factory. If null, no search will be performed.
DefaultSpringSecurityContextSource
имеет этот конструктор:public DefaultSpringSecurityContextSource(String providerUrl)
который не указываетBase DN
.
Когда я оставляю все три варианта пустыми, я получаю такие ошибки: javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310021B, problem 2001 (NO_OBJECT), data 0, best match of: ''
Правильно ли я понимаю, что у меня есть следующие два варианта?
- Я должен задать базу поиска как для пользователей, так и для групп, или
- Я должен установить
Base DN
воDefaultSpringSecurityContextSource
втором конструкторе:public DefaultSpringSecurityContextSource(List<String> urls, String baseDn)
Бонусный балл для всех, кто может рассказать мне, как это обычно делается для лучшего пользовательского опыта, потому что я могу получить корневой DN из различных источников:
- Введенное пользователем доменное имя
- URI сервера LDAP:
ldap://company.local
- Из
Bind user DN
введенного пользователем, например:CN=binduser,OU=TestUsers,DC=company,DC=local