LDAP (Lightweight Directory Access Protocol) – это открытый, платформонезависимый, стандартизированный отраслевой протокол прикладного уровня для организации доступа и сопровождения распределенных информационных служб каталогов через IP-сеть. Spring Boot предусматривает автоконфигурацию для любого совместимого LDAP-сервера, а также средства поддержки встраиваемого LDAP-сервера, размещаемого в оперативной памяти, из UnboundID.
LDAP-абстракции предоставляются через Spring Data LDAP. Для удобного сбора зависимостей существует "стартер" spring-boot-starter-data-ldap.
Подключение к LDAP-серверу
Чтобы подключиться к LDAP-серверу, убедитесь, что вы объявили зависимость от "стартера" spring-boot-starter-data-ldap или spring-ldap-core, а затем объявите URL-адрес вашего сервера в вашем application.properties, как показано в следующем примере:
spring.ldap.urls=ldap://myserver:1235
spring.ldap.username=admin
spring.ldap.password=secret
spring:
ldap:
urls: "ldap://myserver:1235"
username: "admin"
password: "secret"
Если необходимо настроить параметры подключения, можно использовать свойства spring.ldap.base и spring.ldap.base-environment.
LdapContextSource автоматически конфигурируется на основе этих параметров. Если имеется бин DirContextAuthenticationStrategy, он привязывается к автоконфигурируемому LdapContextSource. Если нужно настроить его, например, на использование PooledContextSource, все равно можно внедрить автоконфигурируемый LdapContextSource. Обязательно отметьте ваш настроенный ContextSource как @Primary, чтобы автоконфигурируемый LdapTemplate мог использовать его.
Репозитории Spring Data LDAP
Spring Data содержит средства поддержки репозиториев для LDAP.
Автоконфигурируемый экземпляр LdapTemplate можно внедрять так же, как и любой другой Spring Bean, как это показано в следующем примере:
@Component public class MyBean { private final LdapTemplate template; public MyBean(LdapTemplate template) { this.template = template; } }
@Component class MyBean(private val template: LdapTemplate) { }
Встраиваемый LDAP-сервер, размещаемый в оперативной памяти
Для целей тестирования Spring Boot поддерживает автоконфигурирование LDAP-сервера, размещаемого в оперативной памяти, из UnboundID. Чтобы сконфигурировать сервер, добавьте зависимость com.unboundid:unboundid-ldapsdk и объявите свойство spring.ldap.embedded.base-dn, как показано ниже:
spring.ldap.embedded.base-dn=dc=spring,dc=io
spring:
ldap:
embedded:
base-dn: "dc=spring,dc=io"
Можно определять несколько значений базы поиска "base-dn", однако, поскольку отличительные имена обычно содержат запятые, их необходимо определять, используя корректурную запись (нотацию).
В yaml-файлах можно использовать списочную запись yaml. В файлы свойств необходимо включить индекс как часть имени свойства:
spring.ldap.embedded.base-dn[0]=dc=spring,dc=io
spring.ldap.embedded.base-dn[1]=dc=pivotal,dc=io
spring.ldap.embedded.base-dn:
- "dc=spring,dc=io"
- "dc=pivotal,dc=io"
По умолчанию сервер запускается через случайный порту, а также инициирует запуск стандартных сресдтв поддержки для LDAP. Задавать свойство spring.ldap.urls нет необходимости.
Если в classpath есть файл schema.ldif, он используется для инициализации сервера. Если вы хотите загрузить скрипт инициализации из другого ресурса, то также можете использовать свойство spring.ldap.embedded.ldif.
По умолчанию для валидации файлов в формате LDIF используется стандартная схема. Можно полностью отключить валидацию, установив свойство spring.ldap.embedded.validation.enabled. Если имеются кастомные атрибуты, можно использовать spring.ldap.embedded.validation.schema для определения кастомных типов атрибутов или классов объектов.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ