Vejledning til Spring Data LDAP

1. Introduktion

I denne artikel vi fokuserer på Spring Data LDAP integration og konfiguration. For en trinvis introduktion til Spring LDAP, se hurtigt på denne artikel.

Du kan også finde oversigten over Spring Data JPA-guide her.

2. Maven Afhængighed

Lad os begynde med at tilføje de krævede Maven-afhængigheder:

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

De nyeste versioner kan findes her for spring-data-ldap.

3. Domæneindgang

Spring LDAP-projekt giver mulighed for at kortlægge LDAP-poster til Java-objekter ved hjælp af Object-Directory Mapping (ODM).

Lad os definere den enhed, der skal bruges til at kortlægge LDAP-mapper, som allerede er konfigureret i foråret LDAP-artiklen.

@Entry (base = "ou = brugere", objectClasses = {"person", "inetOrgPerson", "top"}) offentlig klasse bruger {@Id privat navn id; private @Attribute (name = "cn") String brugernavn; private @Attribute (name = "sn") Adgangskode til streng; // standard getters / setters}

@Indgang ligner @Enhed (af JPA / ORM), som bruges til at specificere, hvilken enhed der tilordnes rod til LDAP-posterne.

En Indgang klasse skal have @Id annotation erklæret på et felt af typen javax.navngivning. navn som repræsenterer enhed DN. Det @Attribut annotation bruges til at kortlægge objektklassefelter til enhedsfelter.

4. Spring Data Repository

Spring Data Repository er en abstraktion, der giver grundlæggende out-of-the-box klar til brug implementering af dataadgangslag til forskellige persistensbutikker.

Spring Framework giver intern implementering af CRUD-operationer for given klasse i datalageret. Vi kan finde den komplette detalje i Introduktion til Spring Data JPA-artikel.

Spring Data LDAP giver lignende abstraktion, som giver automatisk implementering af Datalager grænseflader, der inkluderer grundlæggende CRUD-operation for LDAP-mapper.

Spring Data Framework kan også oprette en brugerdefineret forespørgsel baseret på et metodenavn.

Lad os definere vores arkivgrænseflade, som skal bruges til at styre Brugerindgang:

@Repository offentlig grænseflade UserRepository udvider LdapRepository {User findByUsername (String username); Bruger findByUsernameAndPassword (streng brugernavn, streng adgangskode); Liste findByUsernameLikeIgnoreCase (streng brugernavn); }

Som vi kan se, har vi erklæret en grænseflade ved at udvide LdapRepository til indrejse Bruger. Spring Data Framework leverer automatisk grundlæggende implementering af CRUD-metoden som f.eks finde(), findAll (), Gemme(),slet (), etc.

Vi har også erklæret et par brugerdefinerede metoder. Spring Data Framework giver implementeringen ved at undersøge metodens navn med en strategi kendt som Query Builder Mechanism.

5. Konfiguration

Vi kan konfigurere Spring Data LDAP ved hjælp af Java-baseret @Konfiguration klasser eller et XML-navneområde. Lad os konfigurere lageret ved hjælp af den Java-baserede tilgang:

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

@EnableLdapRepositories tip Spring for at scanne den givne pakke efter grænseflader markeret som @Repository.

6. Forretningslogik

Lad os definere vores serviceklasse, som bruger UserRepository at operere på LDAP-mapper:

@Service offentlig klasse UserService {@Autowired privat UserRepository userRepository; // forretningsmetoder}

Nu vil vi undersøge en handling ad gangen og se, hvor let vi kan udføre denne handling ved hjælp af Spring Data Repository

6.1. Brugergodkendelse

Lad os nu implementere et simpelt stykke logik til at godkende en eksisterende bruger:

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

6.2. Oprettelse af bruger

Lad os derefter oprette en ny bruger og gemme en adgangskodes hash:

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

6.3. Brugerændring

Vi kan ændre en eksisterende bruger eller post med følgende metode:

offentlig tomrumsmodifikation (String u, String p) {Brugerbruger = userRepository.findByUsername (u); user.setPassword (p); userRepository.save (bruger); }

6.4. Brugersøgning

Vi kan søge efter eksisterende brugere ved hjælp af en tilpasset metode:

offentlig Listesøgning (String u) {List userList = userRepository .findByUsernameLikeIgnoreCase (u); hvis (userList == null) {returner Collections.emptyList (); } returner userList.stream () .map (Bruger :: getUsername) .collect (Collectors.toList ()); }

7. Eksempel i aktion

Endelig kan vi hurtigt teste et simpelt godkendelsesscenarie:

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

8. Konklusion

Denne hurtige vejledning demonstrerede det grundlæggende i Spring LDAP-lagerkonfiguration og CRUD-drift.

Eksemplet brugt i denne artikel kan findes på GitHub.