Много раз, когда мы создадим систему, мы сами создадим систему управления пользователями, что не сложно для разработчиков. Однако, когда нам нужно поддерживать несколько разных систем, и одни и те же пользователи используются в разных системах, если каждая система сохраняет свою собственную информацию пользователя, то синхронизация информации пользователя станет более неприятной, и она будет очень неприятно для самих пользователей. Легко вызвать противоречивые пароли различных систем. Если в настоящее время мы представим LDAP, чтобы центрально хранить базовую информацию пользователя и предоставить единый интерфейс чтения и записи и механизм проверки, то такая проблема будет легче решить. Давайте поговорим о том, как получить доступ к серверу LDAP, когда мы используем Spring Boot для разработки.
Введение в LDAP
LDAP (протокол доступа к легким каталогам) - это информационная служба, которая предоставляет службу каталогов. Служба каталогов - это специальная система базы данных, которая специально оптимизирована для операций чтения, просмотра и поиска. Каталоги обычно используются для содержания описательной информации, на основе атрибутов и поддержки точных и сложных возможностей фильтрации. Кадровые каталоги, как правило, не поддерживают сложные стратегии управления транзакциями или вращения для общих баз данных, которые требуют большого количества операций обновлений. Обновление сервисов каталогов, как правило, очень простое. Этот вид каталога может хранить различную информацию, включая личную информацию, веб -ссылки, изображения JPEG и т. Д. Чтобы получить доступ к информации, хранящейся в каталоге, необходимо использовать протокол доступа - LDAP, работающий на TCP/IP.
Информация в каталоге LDAP организована в соответствии со структурой дерева, а конкретная информация хранится в структуре данных ввода (запись). Запись эквивалентна записи таблицы в реляционной базе данных; Запись - это атрибут с псевдонимом DN (выдающееся имя). DN используется для обозначения записи, а DN эквивалентен ключевому слову в таблице реляционных баз данных. Атрибут состоит из типа (тип) и одного или нескольких значений (значений), что эквивалентно поле (поле) в реляционной базе данных состоит из имен поля и типов данных. Для поиска типа в LDAP может иметь несколько значений, а не поля, реализованные в реляционной базе данных, которые требуют снижения избыточности данных, должны быть неактуальными. Организация записей в LDAP, как правило, организована в соответствии с географическим положением и организационными отношениями, что очень интуитивно понятно. LDAP сохраняет данные в файлах, а для повышения эффективности можно использовать базу данных файлов на основе индекса вместо реляционной базы данных. Примером типа является почта, значение которой будет адрес электронной почты.
Информация LDAP хранится в структуре деревьев. Корень дерева обычно определяет страну (c = cn) или доменное имя (dc = com), а под ней одну или несколько организаций (O = acme) или организационных единиц (OU = люди). Организационная единица может содержать информацию, такую как все сотрудники, все принтеры в здании и т. Д. Кроме того, LDAP поддерживает контроль того, какие атрибуты могут и должны поддерживаться записью, которая реализована специальным атрибутом, называемым объектно -класс. Значение атрибута определяет некоторые правила, за которыми должна следовать запись, в которых указывается, какие атрибуты вход могут и должны содержать, по крайней мере. Например: класс объекта inetorgperson должен поддерживать атрибуты SN (фамилия) и CN (общее имя), но он также может содержать дополнительные атрибуты, такие как электронная почта, номер телефона и т. Д.
LDAP аббревиатура
Начало работы примером
Понимая основные понятия LDAP, мы можем дополнительно понять их через простой пример!
Создайте базовый проект Spring Boot (если вы еще не знаете, вы можете ссылаться на эти две статьи: начало 1 или начало 2)
Введение двух важных зависимостей в pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-ldap</artifactId></dependency><depend> <groupId>com.unboundid</groupId> <artifactId>unboundid-ldapsdk</artifactId> <scope>test</scope></dependency>
Среди них Spring-Boot-Starter-DATA-LDAP является реализацией конфигурации автоматизации LDAP, инкапсулированной Spring Boot. Он основан на Spring-DATA-LDAP для выполнения конкретных операций на сервере LDAP.
Unboundid-LdapsDK в основном используется для использования встроенного сервера LDAP здесь для выполнения тестовых операций, поэтому Scope установлен для тестирования. В реальных приложениях мы обычно подключаемся к реальному и независимо развернутому серверу LDAP, поэтому эта зависимость не требуется.
Создайте файл ldap-server.ldif в каталоге SRC/Test/Resources, чтобы сохранить основные данные сервера LDAP для получения доступа к последующим программам.
DN: DC = DidSpace, DC = ComoBjectClass: TopObjectClass: Domaindn: OU = People, DC = DidSpace, DC = ComoBjectClass: TopObjectClass: OrganiveUnitou: Peopledn: uid = ben, ou = people, dc = didispace, dc = comobjectclasclass: personobjectsclasclasclasclasclass: combobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobjectobclas inetorgpersoncn: didisn: zhaiyongchaouid: didiuserpassword: {sha} nfcebwjxfalbhhhg1qk5uu4trbvq =Здесь создается базовый пользователь с настоящим именем Zhaiyongchao и обычно используемым именем Didi. В последующей программе мы прочитаем эту информацию. Для получения дополнительных объяснений контента вы можете изучить LDAP, чтобы понять его. Я не буду слишком много объяснять здесь.
Добавление встроенной конфигурации LDAP в Application.properties
spring.ldap.embedded.ldif = ldap-server.ldifspring.ldap.embedded.base-dn = dc = didispace, dc = com
Используйте базовое использование Spring-Data-LDAP для определения картирования взаимосвязи между свойствами в LDAP и объектами, определенными в Java и соответствующем репозитории
@Data @intpirt (base = "ou = people, dc = diidspace, dc = com", objectclass = "inetorgperson") открытый класс Person {@id частное имя; @Dnattribute (value = "uid", index = 3) private String uid; @Attribute (name = "cn") private string commonname; @Attribute (name = "sn") частная строка suername; Private String userPassword;} public interface PersonRepository расширяет CrudRepository <Person, name> {}После приведенного выше определения объект человека был нанесен на карту содержимого хранилища LDAP. Нам нужно только использовать PersonRepository, чтобы легко читать и написать контент LDAP.
Создайте модульный тестовый пример для чтения всей пользовательской информации:
@Runwith (springrunner.class) @springboottestpublic class applicationtests {@autowired частное лицо PersonRepository; @Test public void findall () throws exection {personrepository.findall (). Foreach (p -> {System.out.println (p);}); }}После начала этого тестового примера мы видим, что пользовательская информация, которая только что поддерживалась в ldap-server.ldif, выводится в консоли:
2018-01-27 14: 25: 06.283 Warn 73630 --- [main] osldap.odm.core.impl.objectmetadata: Лицо входного класса должно быть объявлено окончательным
Человек (id = uid = ben, ou = people, dc = didispace, dc = com, uid = ben, commonname = didi, suername = zhaiyongchao, userPassword = 123,83,72,65,125,110,70,67,101,98,87,106,120,102,97,76,98,72,72,71,49,81,107,53,85,85,522,1114,98,118,8111,85,85,52,52,116,98,118,8111,85,85,52,52,116,98,118,85,85,85,52,52,116,98,118,85,85,85,52,52,116,98,118,85,85,85,52,52,116,98,118,85,85,85,52,52,116,98,118,85,85,
Добавить пользователя
С приведенным выше примером начинающего, если вы можете заполнить его независимо, основная цель работы LDAP в Spring Boot была завершена.
Если вы знаете данные о пружине, нетрудно представить, что этот субпроект под ним также должен соответствовать абстракции повторений. Таким образом, мы можем использовать отдел PersonRepository, определенный выше для легкости внедрения операций, таких как следующий код, чтобы легко добавить пользователей в LDAP:
Человек = новый человек (); Person.setuid ("uid: 1"); Person.setsuername ("aaa"); person.setcommonname ("aaa"); Person.setuserPassword ("123456"); PersonRepository.save (человек);Если вы хотите реализовать больше операций, вы можете обратиться к документации Spring-Data-LDAP для использования.
Подключитесь к серверу LDAP
В примерах в этой статье используются встроенные серверы LDAP. Фактически, этот метод ограничен нашим местным тестированием и использованием разработки. В реальной среде сервер LDAP должен быть независимо развернут.
В Spring Boot Package нам нужно только настроить следующие параметры для подключения приведенного выше примера к удаленному LDAP вместо встроенного LDAP.
spring.ldap.urls = ldap: // localhost: 1235spring.ldap.base = dc = didispace, dc = comspring.ldap.username = didispacespring.ldap.password = 123456
Код этой статьи
Вы можете проверить каталог главы3-2-10 через следующие два репозиторию:
Github: https://github.com/dyc87112/springboot-learning/
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.