Panduan untuk LDAP Spring Data

1. Pengenalan

Dalam artikel ini, kami akan menumpukan pada integrasi dan konfigurasi LDAP Spring Data. Untuk pengenalan langkah demi langkah ke Spring LDAP, lihat artikel ini dengan cepat.

Anda juga boleh mendapatkan gambaran keseluruhan panduan Spring Data JPA di sini.

2. Ketergantungan Maven

Mari mulakan dengan menambahkan kebergantungan Maven yang diperlukan:

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

Versi terkini boleh didapati di sini untuk spring-data-ldap.

3. Kemasukan Domain

Projek Spring LDAP menyediakan kemampuan untuk memetakan entri LDAP ke objek Java dengan menggunakan Pemetaan Direktori Objek (ODM).

Mari tentukan entiti yang akan digunakan untuk memetakan direktori LDAP yang telah dikonfigurasi dalam artikel Spring LDAP.

@Entry( base = "ou=users", objectClasses = { "person", "inetOrgPerson", "top" }) public class User { @Id private Name id; private @Attribute(name = "cn") String username; private @Attribute(name = "sn") String password; // standard getters/setters }

@Entry serupa dengan @Entity (dari JPA / ORM) yang digunakan untuk menentukan peta entiti mana yang menjadi root direktori entri LDAP.

An Kemasukan kelas mesti mempunyai @Id anotasi diisytiharkan pada bidang jenis javax .naming.Name yang mewakili entiti DN . The @Attribute anotasi digunakan untuk memetakan bidang kelas objek kepada medan entiti.

4. Penyimpanan Data Spring

Spring Data Repository adalah abstraksi yang menyediakan implementasi lapisan akses data yang siap digunakan untuk pelbagai kedai ketekunan.

Spring Framework secara dalaman menyediakan pelaksanaan operasi CRUD untuk kelas tertentu di repositori data. Kami dapat mengetahui perincian yang lengkap dalam artikel Pengenalan Data Spring.

Spring Data LDAP memberikan abstraksi serupa yang menyediakan pelaksanaan automatik antara muka Repositori yang merangkumi operasi CRUD asas untuk direktori LDAP.

Juga, Spring Data Framework dapat membuat pertanyaan khusus berdasarkan nama kaedah.

Mari tentukan antara muka repositori kami yang akan digunakan untuk menguruskan Entri Pengguna:

@Repository public interface UserRepository extends LdapRepository { User findByUsername(String username); User findByUsernameAndPassword(String username, String password); List findByUsernameLikeIgnoreCase(String username); }

Seperti yang kita lihat, kita telah menyatakan antaramuka dengan memperluas LdapRepository untuk Pengguna masuk . Spring Data Framework secara automatik akan menyediakan pelaksanaan kaedah CRUD asas seperti find () , findAll () , save (), delete (), dll.

Kami juga telah menyatakan beberapa kaedah khusus. Spring Data Framework akan memberikan implementasi dengan meneliti nama metode dengan strategi yang dikenali sebagai Query Builder Mechanism.

5. Konfigurasi

Kami dapat mengkonfigurasi Spring Data LDAP menggunakan kelas @Configuration berasaskan Java atau ruang nama XML. Mari konfigurasikan repositori menggunakan pendekatan berasaskan Java:

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

@EnableLdapRepositories mengisyaratkan Spring untuk mengimbas pakej yang diberikan untuk antara muka yang ditandai sebagai @Repository.

6. Logik Perniagaan

Mari tentukan kelas perkhidmatan kami yang akan menggunakan UserRepository untuk beroperasi di direktori LDAP:

@Service public class UserService { @Autowired private UserRepository userRepository; // business methods }

Sekarang, kita akan meneroka satu tindakan pada satu masa dan melihat betapa mudahnya kita dapat melakukan tindakan ini menggunakan Spring Data Repository

6.1. Pengesahan Pengguna

Sekarang mari kita laksanakan logik sederhana untuk mengesahkan pengguna yang ada:

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

6.2. Penciptaan Pengguna

Seterusnya, mari buat pengguna baru dan simpan hash kata laluan:

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

6.3. Pengubahsuaian Pengguna

Kita dapat mengubah pengguna atau entri yang ada dengan kaedah berikut:

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

6.4. Carian Pengguna

Kami dapat mencari pengguna yang ada menggunakan kaedah khusus:

public List search(String u) { List userList = userRepository .findByUsernameLikeIgnoreCase(u); if (userList == null) { return Collections.emptyList(); } return userList.stream() .map(User::getUsername) .collect(Collectors.toList()); }

7. Contoh dalam Tindakan

Akhirnya, kita dapat dengan cepat menguji senario pengesahan mudah:

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

8. Kesimpulannya

Tutorial ringkas ini menunjukkan asas konfigurasi repositori Spring LDAP dan operasi CRUD.

Contoh yang digunakan dalam artikel ini boleh didapati di GitHub.