LDAP

Модуль 5. Spring
17 уровень , 10 лекция
Открыта

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, как показано в следующем примере:

Properties
spring.ldap.urls=ldap://myserver:1235
spring.ldap.username=admin
spring.ldap.password=secret
Yaml
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, как это показано в следующем примере:

Java
import java.util.List; import org.springframework.ldap.core.LdapTemplate; import org.springframework.stereotype.Component; @Component public class MyBean { private final LdapTemplate template; public MyBean(LdapTemplate template) { this.template = template; }  // ...  public List<User> someMethod() { return this.template.findAll(User.class); } } 
Kotlin
import org.springframework.ldap.core.LdapTemplate import org.springframework.stereotype.Component @Component class MyBean(private val template: LdapTemplate) {  // ...  fun someMethod(): List<User> { return template.findAll(User::class.java) } } 

Встраиваемый LDAP-сервер, размещаемый в оперативной памяти

Для целей тестирования Spring Boot поддерживает автоконфигурирование LDAP-сервера, размещаемого в оперативной памяти, из UnboundID. Чтобы сконфигурировать сервер, добавьте зависимость com.unboundid:unboundid-ldapsdk и объявите свойство spring.ldap.embedded.base-dn, как показано ниже:

Properties
spring.ldap.embedded.base-dn=dc=spring,dc=io
Yaml
spring:
  ldap:
    embedded:
      base-dn: "dc=spring,dc=io"

Можно определять несколько значений базы поиска "base-dn", однако, поскольку отличительные имена обычно содержат запятые, их необходимо определять, используя корректурную запись (нотацию).

В yaml-файлах можно использовать списочную запись yaml. В файлы свойств необходимо включить индекс как часть имени свойства:

Properties
spring.ldap.embedded.base-dn[0]=dc=spring,dc=io
spring.ldap.embedded.base-dn[1]=dc=pivotal,dc=io
Yaml
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 для определения кастомных типов атрибутов или классов объектов.

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ