Vodič za Spring Data LDAP

1. Uvod

U ovom članku, usredotočit ćemo se na integraciju i konfiguraciju LDAP Spring Data. Za korak po korak uvod u Spring LDAP, kratko pogledajte ovaj članak.

Također, ovdje možete pronaći pregled Spring Data JPA vodiča.

2. Maven Ovisnost

Počnimo s dodavanjem potrebnih ovisnosti Mavena:

 org.springframework.data spring-data-ldap 1.0.6.OSLOBOĐENJE 

Najnovije verzije možete pronaći ovdje za spring-data-ldap.

3. Unos domene

Proljetni LDAP projekt pruža mogućnost mapiranja LDAP unosa u Java objekte pomoću mapiranja mapa objekata (ODM).

Definirajmo entitet koji će se koristiti za mapiranje LDAP direktorija koji su već konfigurirani u proljetnom članku LDAP.

@Entry (base = "ou = users", objectClasses = {"person", "inetOrgPerson", "top"}) Korisnik javne klase {@Id private name id; private @Attribute (name = "cn") Korisničko ime niza; private @Attribute (name = "sn") Lozinka niza; // standardni getteri / postavljači}

@ Ulaz je sličan @ Entitet (JPA / ORM) koji se koristi za specificiranje entiteta koji se preslikava u korijen direktorija LDAP unosa.

An Ulazak razred mora imati @Iskaznica napomena deklarirana na polju tipa javax.imenovanje.Ime koja predstavlja entitet DN. The @Atribut napomena se koristi za mapiranje polja klase objekta u polja entiteta.

4. Proljetno spremište podataka

Spring Data Repository je apstrakcija koja pruža osnovne gotove spremne za upotrebu implementacije slojeva pristupa podacima za razne pohrane.

Spring Framework interno osigurava provedbu CRUD operacija za zadanu klasu u spremištu podataka. Cjelovite pojedinosti možemo pronaći u članku Uvod u Spring Data JPA.

Spring Data LDAP pruža sličnu apstrakciju koja omogućuje automatsku implementaciju Spremište sučelja koja uključuju osnovne CRUD operacije za LDAP direktorije.

Također, Spring Data Framework može stvoriti prilagođeni upit na temelju imena metode.

Definirajmo naše sučelje spremišta kojim ćemo upravljati Unos korisnika:

@Repository javno sučelje UserRepository proširuje LdapRepository {User findByUsername (korisničko ime niza); Korisnik findByUsernameAndPassword (korisničko ime niza, lozinka niza); Popis findByUsernameLikeIgnoreCase (korisničko ime niza); }

Kao što vidimo, proširenje smo proglasili sučeljem LdapRepository za ulazak Korisnik. Spring Data Framework automatski će pružiti osnovnu implementaciju CRUD metode kao što je pronaći(), findAll (), uštedjeti(),izbrisati(), itd.

Također, proglasili smo nekoliko prilagođenih metoda. Spring Data Framework pružit će implementaciju ispitivanjem naziva metode strategijom poznatom kao Query Builder Mechanism.

5. Konfiguracija

Možemo konfigurirati LDAP Spring Data koristeći Java-based @Konfiguracija klase ili XML prostor imena. Konfigurirajmo spremište koristeći pristup zasnovan na Javi:

@Configuration @EnableLdapRepositories (basePackages = "com.baeldung.ldap. **") javna klasa AppConfig {}

@EnableLdapRepositories hints Spring da skenira zadani paket za sučelja označena kao @ Repozitorij.

6. Poslovna logika

Definirajmo našu uslužnu klasu koja će koristiti UserRepository za rad s LDAP direktorijima:

@Service javna klasa UserService {@Autowired private UserRepository userRepository; // poslovne metode}

Sada ćemo istražiti jednu po jednu akciju i vidjeti kako lako možemo izvršiti te radnje pomoću Spring Data Repozitorija

6.1. Autentifikacija korisnika

Primijenimo sada jednostavan logički dio za autentifikaciju postojećeg korisnika:

javna logička potvrda identiteta (String u, String p) {return userRepository.findByUsernameAndPassword (u, p)! = null; }

6.2. Stvaranje korisnika

Dalje, kreirajmo novog korisnika i pohranimo hash lozinke:

public void create (String username, String password) {User newUser = novi korisnik (korisničko ime, digestSHA (lozinka)); newUser.setId (LdapUtils.emptyLdapName ()); userRepository.save (newUser); }

6.3. Izmjena korisnika

Postojećeg korisnika ili unos možemo izmijeniti sljedećom metodom:

javna void modify (String u, String p) {User user = userRepository.findByUsername (u); user.setPassword (p); userRepository.save (korisnik); }

6.4. Pretraga korisnika

Postojeće korisnike možemo pretraživati ​​prilagođenom metodom:

javno pretraživanje popisa (niz u) {Popis userList = userRepository .findByUsernameLikeIgnoreCase (u); if (userList == null) {return Collections.emptyList (); } return userList.stream () .map (User :: getUsername) .collect (Collectors.toList ()); }

7. Primjer na djelu

Napokon, možemo brzo testirati jednostavan scenarij autentifikacije:

@Test javna praznina givenLdapClient_whenCorrectCredentials_thenSuccessfulLogin () {Boolean isValid = userService.authenticate (USER3, USER3_PWD); assertEquals (true, isValid); }

8. Zaključak

Ovaj je brzi vodič pokazao osnove proljetne konfiguracije LDAP spremišta i rada CRUD-a.

Primjer korišten u ovom članku možete pronaći na GitHubu.