Sprievodca jarnými údajmi LDAP

1. Úvod

V tomto článku zameriame sa na integráciu a konfiguráciu Spring Data LDAP. Ak chcete získať podrobný úvod do jarného protokolu LDAP, pozrite si tento článok.

Tu tiež nájdete prehľad Sprievodcu Spring Data JPA.

2. Maven Závislosť

Začnime pridaním požadovaných závislostí Maven:

 org.springframework.data spring-data-ldap 1.0.6.RELEASE 

Najnovšie verzie nájdete tu pre spring-data-ldap.

3. Vstup do domény

Jarný projekt LDAP poskytuje schopnosť mapovať položky LDAP na objekty Java pomocou mapovania adresárov objektov (ODM).

Definujme entitu, ktorá sa použije na mapovanie adresárov LDAP, ktoré už boli nakonfigurované v článku Spring LDAP.

@Entry (base = "ou = users", objectClasses = {"person", "inetOrgPerson", "top"}) verejná trieda User {@Id private Name id; private @Attribute (name = "cn") Reťazec užívateľské meno; private @Attribute (name = "sn") Reťazcové heslo; // štandardné getre / settery}

@ Vstup je podobný @Entity (protokolu JPA / ORM), ktorá sa používa na určenie, ktorá entita sa mapuje na koreň adresára záznamov LDAP.

An Vstup trieda musí mať @Id anotácia deklarovaná v poli typu javax.pomenovanie.Meno ktorý predstavuje entitu DN. The @ Atribút anotácia sa používa na mapovanie polí tried objektov na polia entít.

4. Jarné úložisko údajov

Spring Data Repository je abstrakcia, ktorá poskytuje základnú okamžitú implementáciu vrstiev prístupu k dátam pripravenú na použitie pre rôzne úložiská perzistencie.

Jarný rámec interne zaisťuje implementáciu operácií CRUD pre danú triedu v úložisku údajov. Kompletné podrobnosti nájdete v článku Úvod do jarných údajov JPA.

Spring Data LDAP poskytuje podobnú abstrakciu, ktorá poskytuje automatickú implementáciu Úložisko rozhrania, ktoré obsahujú základné operácie CRUD pre adresáre LDAP.

Spring Data Framework tiež dokáže vytvoriť vlastný dotaz na základe názvu metódy.

Poďme definovať naše rozhranie úložiska, ktoré sa bude používať na správu Vstup používateľa:

@ Verejné rozhranie úložiska UserRepository rozširuje LdapRepository {User findByUsername (String username); User findByUsernameAndPassword (meno používateľa reťazca, heslo reťazca); Zoznam findByUsernameLikeIgnoreCase (reťazec používateľského mena); }

Ako vidíme, rozhranie sme deklarovali rozšírením LdapRepository pre vstup Používateľ. Spring Data Framework automaticky poskytne základnú implementáciu metódy CRUD ako napr Nájsť(), findAll (), uložiť (),delete (), atď.

Tiež sme deklarovali niekoľko vlastných metód. Spring Data Framework poskytne implementáciu sondovaním názvu metódy so stratégiou známou ako Mechanizmus vytvárania dotazov.

5. Konfigurácia

Môžeme nakonfigurovať Spring Data LDAP pomocou Java @ Konfigurácia triedy alebo menný priestor XML. Nakonfigurujme úložisko pomocou prístupu založeného na prostredí Java:

@Configuration @EnableLdapRepositories (basePackages = "com.baeldung.ldap. **") verejná trieda AppConfig {}

@EnableLdapRepositories rady Spring vyhľadať v danom balíku rozhrania označené ako @Úložisko.

6. Obchodná logika

Definujme našu triedu služieb, ktorá bude používať UserRepository pracovať v adresároch LDAP:

@Service verejná trieda UserService {@Autowired private UserRepository userRepository; // obchodné metódy}

Teraz preskúmame jednu akciu po druhej a uvidíme, ako ľahko môžeme tieto akcie vykonať pomocou Spring Data Repository

6.1. Autentifikácia užívateľa

Poďme teraz implementovať jednoduchú logiku na autentifikáciu existujúceho používateľa:

public Boolean authenticate (String u, String p) {return userRepository.findByUsernameAndPassword (u, p)! = null; }

6.2. Tvorba používateľov

Ďalej vytvoríme nového používateľa a uložíme hodnotu hash hesla:

public void create (String username, String password) {User newUser = new User (username, digestSHA (password)); newUser.setId (LdapUtils.emptyLdapName ()); userRepository.save (newUser); }

6.3. Úprava používateľa

Existujúceho používateľa alebo položku môžeme upraviť nasledujúcim spôsobom:

public void modify (String u, String p) {User user = userRepository.findByUsername (u); user.setPassword (p); userRepository.save (užívateľ); }

6.4. Vyhľadávanie používateľov

Existujúcich používateľov môžeme vyhľadať pomocou vlastnej metódy:

vyhľadávanie vo verejnom zozname (reťazec u) {List userList = userRepository .findByUsernameLikeIgnoreCase (u); if (userList == null) {return Collections.emptyList (); } návrat userList.stream () .map (User :: getUsername) .collect (Collectors.toList ()); }

7. Príklad v akcii

Na záver môžeme rýchlo otestovať jednoduchý scenár autentifikácie:

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

8. Záver

Tento rýchly tutoriál demonštroval základy konfigurácie jarného úložiska LDAP a operácie CRUD.

Príklad použitý v tomto článku nájdete na GitHub.