Wenn wir ein System erstellen, werden wir oft selbst ein Benutzerverwaltungssystem erstellen, das für Entwickler nicht schwierig ist. Wenn wir jedoch mehrere verschiedene Systeme verwalten müssen und dieselben Benutzer in den Systemen verwendet werden, wird die Synchronisation von Benutzerinformationen, wenn jedes System seine eigenen Benutzerinformationen beibehält, problematischer und für Benutzer selbst sehr problematisch. Es ist einfach, inkonsistente Passwörter verschiedener Systeme zu verursachen. Wenn wir zu diesem Zeitpunkt LDAP vorstellen, um die grundlegenden Informationen von Benutzer zentral zu speichern und einen einheitlichen Lese- und Schreibschnittstellen- und Überprüfungsmechanismus bereitzustellen, ist ein solches Problem einfacher zu lösen. Lassen Sie uns darüber sprechen, wie Sie auf den LDAP -Server zugreifen können, wenn wir Spring Boot zur Entwicklung verwenden.
Einführung in LDAP
LDAP (Lightweight Directory Access Protocol) ist ein Informationsdienst, der einen Verzeichnisdienst anbietet. Der Verzeichnisdienst ist ein spezielles Datenbanksystem, das speziell für das Lesen, Surfen und Suchvorgänge optimiert ist. Verzeichnisse werden im Allgemeinen zum beschreibenden, attributbasierten Informationen und zur Unterstützung feiner und komplexer Filterfunktionen verwendet. Verzeichnisse unterstützen im Allgemeinen kein komplexes Transaktionsmanagement oder revolvierende Strategien für gemeinsame Datenbanken, die eine große Anzahl von Aktualisierungsvorgängen erfordern. Die Aktualisierung von Verzeichnisdiensten ist im Allgemeinen sehr einfach. Diese Art von Verzeichnis kann verschiedene Informationen speichern, einschließlich persönlicher Informationen, Weblinks, JPEG -Bilder usw. Um auf die im Verzeichnis gespeicherten Informationen zugreifen zu können, müssen Sie das auf TCP/IP ausgeführte Zugriffsprotokoll verwenden.
Die Informationen im LDAP -Verzeichnis sind nach einer Baumstruktur organisiert, und die spezifischen Informationen werden in der Datenstruktur des Eintrags (Eintrag) gespeichert. Ein Eintrag entspricht einem Datensatz einer Tabelle in einer relationalen Datenbank. Ein Eintrag ist ein Attribut mit dem alias dn (ausgezeichneten Namen). DN wird verwendet, um auf einen Eintrag zu verweisen, und DN entspricht einem Schlüsselwort in einer relationalen Datenbanktabelle. Das Attribut besteht aus einem Typ (Typ) und einem oder mehreren Werten (Werte), der einem Feld (Feld) in einer relationalen Datenbank entspricht, besteht aus Feldnamen und Datentypen. Aus Gründen des Abrufens kann der Typ in LDAP mehrere Werte haben, anstatt die in der relationalen Datenbank implementierten Felder, die eine Reduzierung der Datenreduktion erfordern müssen, muss irrelevant sein. Die Organisation von Einträgen in LDAP ist im Allgemeinen nach geografischer Lage und organisatorischen Beziehungen organisiert, was sehr intuitiv ist. LDAP speichert Daten in Dateien und um die Effizienz zu verbessern, kann eine indexbasierte Dateidatenbank anstelle einer relationalen Datenbank verwendet werden. Ein Beispiel für einen Typ ist Mail, dessen Wert eine E -Mail -Adresse ist.
LDAP -Informationen werden in einer Baumstruktur gespeichert. Die Baumwurzel definiert im Allgemeinen ein Land (C = CN) oder Domain Name (DC = Com) und unter ihm ein oder mehrere Organisationen (o = ACME) oder Organisationseinheiten (OU = People). Eine Organisationseinheit kann Informationen wie alle Mitarbeiter, alle Drucker im Gebäude usw. enthalten. Darüber hinaus unterstützt LDAP die Kontrolle, welche Attribute durch einen Eintrag unterstützt werden können und müssen, der mit einem speziellen Attribut namens ObjectClass implementiert wird. Der Wert des Attributs bestimmt einige der Regeln, die der Eintrag folgen muss, was angibt, welche Attribute der Eintrag zumindest enthalten können und sollte. Zum Beispiel: Die Objektklasse inetorgperson muss SN (Nachname) und CN (Common Name) -attribute unterstützen, kann jedoch auch optionale Attribute wie E -Mail, Telefonnummer usw. enthalten.
LDAP -Abkürzung
Erste Schritte Beispiel
Nachdem wir die grundlegenden Konzepte von LDAP verstanden haben, können wir sie durch ein einfaches Beispiel weiter verstehen!
Erstellen Sie ein grundlegendes Spring -Boot -Projekt (wenn Sie es noch nicht wissen, können Sie sich auf diese beiden Artikel beziehen: Erste Schritte 1 oder Erste Schritte 2)
Einführung zwei wichtiger Abhängigkeiten in 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>
Unter ihnen ist Spring-Boot-Starter-Data-LDAP eine Implementierung der LDAP-Automatisierungskonfiguration, die vom Spring-Start eingekapselt ist. Es basiert auf Spring-DATA-LDAP, um bestimmte Operationen auf dem LDAP-Server auszuführen.
UnBoundid-LDAPSDK wird hier hauptsächlich zur Verwendung eines eingebetteten LDAP-Servers verwendet, um Testvorgänge durchzuführen. Daher wird der Umfang so eingestellt. In den tatsächlichen Anwendungen stellen wir normalerweise eine Verbindung zu einem realen und unabhängig bereitgestellten LDAP -Server her, sodass diese Abhängigkeit nicht benötigt wird.
Erstellen Sie die LDAP-Server.LDIF-Datei im Verzeichnis SRC/Test/Ressourcen, um die grundlegenden Daten des LDAP-Servers für spätere Programme zu speichern.
dn: dc=didispace,dc=comobjectClass: topobjectClass: domaindn: ou=people,dc=didispace,dc=comobjectclass: topobjectclass: organizationalUnitou: peopledn: uid=ben,ou=people,dc=didispace,dc=comobjectclass: topobjectclass: personobjectclass: organizationalPersonobjectclass: inetorgpersoncn: didisn: zhaiyongchaouid: didiuserpassword: {sha} nfcebwjxfalbhg1qk5uu4trbvq =Ein grundlegender Benutzer wird hier erstellt, mit dem richtigen Namen Zhaiyongchao und dem häufig verwendeten Namen Didi. Im nachfolgenden Programm werden wir diese Informationen lesen. Für weitere Inhaltserklärungen können Sie LDAP ausführlich lernen, um es zu verstehen. Ich werde hier nicht zu viel erklären.
Hinzufügen einer eingebetteten LDAP -Konfiguration in application.Properties
spring.ldap.embeded.ldif = ldap-server.ldifspring.ldap.embeded.base-dn = dc = didispace, dc = com
Verwenden Sie die grundlegende Verwendung von Springdata-Ldap, um die Beziehungskartierung zwischen Eigenschaften in LDAP und den in Java definierten Entitäten und dem entsprechenden Repository zu definieren
@Data @eintrag (Base = "ou = people, dc = diidspace, dc = com", ObjectClasses = "inetorgperson") public class Person {@id private name id; @Dnattribute (value = "uid", index = 3) private String uid; @Attribute (name = "cn") private String CommonName; @Attribute (name = "sn") private String Suername; private String -Benutzerpassword;} öffentliche Schnittstelle PersonRepository erweitert Crudrepository <Person, Name> {}Nach der obigen Definition wurde das Personobjekt mit dem LDAP -Speicherinhalt zugeordnet. Wir müssen nur PersonRepository verwenden, um den LDAP -Inhalt einfach zu lesen und zu schreiben.
Erstellen Sie einen Unit -Testfall, um alle Benutzerinformationen zu lesen:
@Runwith (springrunner.class) @springBoottestPublic Class ApplicationTests {@autowired private personRepository PersonRepository; @Test public void findAll () löst Ausnahme aus {PersonRepository.findall (). Foreach (p -> {System.out.println (p);}); }}Nach dem Start dieses Testfalls können wir feststellen, dass die Benutzerinformationen, die gerade in LDAP-server.ldif gepflegt wurden, in der Konsole ausgegeben werden:
2018-01-27 14: 25: 06.283 Warn 73630 --- [Main] osldap.odm.core.impl.objectMetadata: Die Person der Eingangsklasse sollte endgültig deklariert werden
Person (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,52,116,114,98,118,81,61)
Fügen Sie einen Benutzer hinzu
Wenn Sie es mit dem oben genannten Anfängerspiel unabhängig vervollständigen können, wurde das grundlegende Ziel des Betriebs von LDAP im Spring Boot abgeschlossen.
Wenn Sie Federdaten genug kennen, ist es nicht schwer vorstellbar, dass dieses Unterprojekt auch der Wiederholungsabstraktion entsprechen muss. Daher können wir den oben definierten PersonRepository verwenden, um Operationen einfach zu implementieren, z. B. den folgenden Code, um Benutzer einfach zu LDAP hinzuzufügen:
Person Person = New Person (); Person.SetUid ("UID: 1"); Person.Setsuername ("AAA"); Person.SetCommonname ("AAA"); Person.SetUserPassword ("123456"); PersonRepository.save (Person);Wenn Sie mehr Vorgänge implementieren möchten, können Sie sich auf die Dokumentation von Spring-DATA-LDAP zur Verwendung verweisen.
Stellen Sie eine Verbindung zum LDAP -Server her
In den Beispielen in diesem Artikel werden eingebettete LDAP -Server verwendet. Tatsächlich beschränkt sich diese Methode auf unseren lokalen Test- und Entwicklungsnutzung. In der realen Umgebung muss der LDAP -Server unabhängig voneinander bereitgestellt werden.
Im Spring -Boot -Paket müssen wir nur die folgenden Parameter konfigurieren, um das obige Beispiel mit der Remote -LDAP anstelle von eingebettetem LDAP zu verbinden.
spring.ldap.urls = ldap: // localhost: 1235spring.ldap.base = dc = didispace, dc = comspring.ldap.username = didispaSpring.ldap.Password = 123456
Code dieses Artikels
Sie können das Verzeichnis von Kapitel 3-2-10 über die folgenden zwei Repositorys überprüfen:
GitHub: https://github.com/dyc87112/springboot-learning/
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.