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 для визначення кастомних типів атрибутів або класів об'єктів.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ