Sering kali, ketika kita membangun suatu sistem, kita akan membuat sistem manajemen pengguna sendiri, yang tidak sulit bagi pengembang. Namun, ketika kita perlu mempertahankan beberapa sistem yang berbeda dan pengguna yang sama digunakan di seluruh sistem, jika setiap sistem mempertahankan informasi penggunanya sendiri, maka sinkronisasi informasi pengguna akan menjadi lebih merepotkan, dan itu akan sangat merepotkan bagi pengguna sendiri. Sangat mudah untuk menyebabkan kata sandi yang tidak konsisten dari sistem yang berbeda. Jika kami memperkenalkan LDAP saat ini untuk secara terpusat menyimpan informasi dasar pengguna dan memberikan antarmuka baca dan tulis yang terpadu dan mekanisme verifikasi, maka masalah seperti itu akan lebih mudah dipecahkan. Mari kita bicara tentang cara mengakses server LDAP saat kita menggunakan boot Spring untuk berkembang.
Pengantar LDAP
LDAP (Protokol Akses Direktori Ringan) adalah layanan informasi yang menyediakan layanan direktori. Layanan Direktori adalah sistem basis data khusus yang secara khusus dioptimalkan untuk operasi membaca, menjelajah, dan pencarian. Direktori umumnya digunakan untuk berisi informasi deskriptif, berbasis atribut, dan mendukung kemampuan penyaringan yang baik dan kompleks. Direktori umumnya tidak mendukung manajemen transaksi yang kompleks atau strategi revolving untuk database umum yang membutuhkan sejumlah besar operasi pembaruan. Pembaruan layanan direktori umumnya sangat sederhana. Direktori semacam ini dapat menyimpan berbagai informasi termasuk informasi pribadi, tautan web, gambar JPEG, dll. Untuk mengakses informasi yang disimpan di direktori, perlu menggunakan protokol akses - LDAP yang berjalan di TCP/IP.
Informasi dalam direktori LDAP diatur sesuai dengan struktur pohon, dan informasi spesifik disimpan dalam struktur data entri (entri). Entri setara dengan catatan tabel dalam database relasional; Entri adalah atribut dengan alias DN (nama terkemuka). DN digunakan untuk merujuk pada entri, dan DN setara dengan kata kunci dalam tabel database relasional. Atribut terdiri dari tipe (jenis) dan satu atau lebih nilai (nilai), yang setara dengan bidang (bidang) dalam database relasional terdiri dari nama bidang dan tipe data. Demi pengambilan, jenis LDAP dapat memiliki beberapa nilai, daripada bidang yang diterapkan dalam database relasional yang membutuhkan pengurangan redundansi data harus tidak relevan. Organisasi entri di LDAP umumnya diselenggarakan sesuai dengan lokasi geografis dan hubungan organisasi, yang sangat intuitif. LDAP menyimpan data dalam file, dan untuk meningkatkan efisiensi, database file berbasis indeks dapat digunakan sebagai pengganti database relasional. Contoh jenis adalah surat, yang nilainya akan menjadi alamat email.
Informasi LDAP disimpan dalam struktur pohon. Akar pohon umumnya mendefinisikan suatu negara (C = CN) atau nama domain (DC = COM), dan di bawahnya, satu atau lebih organisasi (O = ACME) atau unit organisasi (OU = orang). Unit organisasi dapat berisi informasi seperti semua karyawan, semua printer di dalam gedung, dll. Selain itu, LDAP mendukung pengendalian atribut mana yang dapat dan harus didukung oleh entri, yang diimplementasikan dengan atribut khusus yang disebut ObjectClass. Nilai atribut menentukan beberapa aturan yang harus diikuti entri, yang menentukan atribut yang dapat dan setidaknya harus berisi. Misalnya: Kelas objek Inetorgperson perlu mendukung SN (nama keluarga) dan atribut CN (nama umum), tetapi juga dapat berisi atribut opsional seperti email, nomor telepon, dll.
Singkatan LDAP
Memulai contoh
Setelah memahami konsep dasar LDAP, kita dapat lebih memahaminya melalui contoh sederhana!
Buat proyek boot boot dasar (jika Anda belum tahu, Anda dapat merujuk pada dua artikel ini: Memulai 1 atau memulai 2)
Memperkenalkan dua dependensi penting di 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>
Di antara mereka, Spring-Boot-Starter-Data-Ldap adalah implementasi konfigurasi otomatisasi LDAP yang dienkapsulasi oleh Spring Boot. Ini didasarkan pada Spring-Data-Ldap untuk melakukan operasi spesifik di server LDAP.
Unboundid-LdapsDK terutama digunakan untuk menggunakan server LDAP tertanam di sini untuk melakukan operasi pengujian, sehingga ruang lingkup diatur untuk menguji. Dalam aplikasi yang sebenarnya, kami biasanya terhubung ke server LDAP yang nyata dan secara independen, sehingga ketergantungan ini tidak diperlukan.
Buat file ldap-server.ldif di direktori SRC/Test/Resources untuk menyimpan data dasar server LDAP untuk program selanjutnya dapat diakses.
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} nfcebwjxfalbhhg1qk5uu4trbvq =Pengguna dasar dibuat di sini, dengan nama asli Zhaiyongchao dan nama Didi yang umum digunakan. Dalam program selanjutnya, kami akan membaca informasi ini. Untuk penjelasan konten lebih lanjut, Anda dapat mempelajari LDAP secara mendalam untuk memahaminya. Saya tidak akan menjelaskan terlalu banyak di sini.
Menambahkan konfigurasi LDAP tertanam di application.properties
spring.ldap.embedded.ldif = ldap-server.ldifspring.ldap.embedded.base-dn = dc = didispace, dc = com
Gunakan Penggunaan Dasar Spring-Data-Ldap untuk menentukan pemetaan hubungan antara properti dalam LDAP dan entitas yang didefinisikan dalam Java dan repositori yang sesuai
@Data @entri (base = "ou = people, dc = diidspace, dc = com", objectclasses = "inetorgperson") orang kelas publik {@id id name id; @DnAttribute (value = "uid", index = 3) Private String UID; @Attribute (name = "cn") private string commonname; @Attribute (name = "sn") Private String suername; Private String userpassword;} antarmuka publik PersonRepository memperluas crudrepository <Person, name> {}Setelah definisi di atas, objek orang telah dipetakan dengan konten penyimpanan LDAP. Kita hanya perlu menggunakan orang yang bersikap mudah membaca dan menulis konten LDAP.
Buat unit test case untuk membaca semua informasi pengguna:
@Runwith (springrunner.class) @springboottestpublic class applicationTests {@autowired pribadi personrepository personrepository; @Test public void findAll () melempar Exception {personRepository.findall (). Foreach (p -> {System.out.println (p);}); }}Setelah memulai tes ini, kita dapat melihat bahwa informasi pengguna yang baru saja dipelihara di ldap-server.ldif adalah output di konsol:
2018-01-27 14: 25: 06.283 Peringatan 73630 --- [main] osldap.odm.core.impl.objectMetadata: Orang kelas entri harus dinyatakan final
Orang (id = uid = ben, ou = orang, 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)
Tambahkan pengguna
Dengan contoh pemula di atas, jika Anda dapat menyelesaikannya secara mandiri, tujuan dasar pengoperasian LDAP di Spring Boot telah selesai.
Jika Anda cukup tahu data pegas, tidak sulit membayangkan bahwa sub-proyek di bawah ini juga harus mematuhi abstraksi repsitory. Oleh karena itu, kami dapat menggunakan orang yang didefinisikan di atas untuk mengimplementasikan operasi dengan mudah, seperti kode berikut untuk dengan mudah menambahkan pengguna ke LDAP:
Orang orang = orang baru (); person.setuid ("uid: 1"); orang.setsuerName ("aaa"); orang.setCommonname ("AAA"); orang.setUserPassword ("123456"); personrepository.save (orang);Jika Anda ingin menerapkan lebih banyak operasi, Anda dapat merujuk pada dokumentasi Spring-Data-Ldap untuk digunakan.
Terhubung ke server LDAP
Dalam contoh dalam artikel ini, server LDAP tertanam digunakan. Bahkan, metode ini terbatas pada pengujian dan penggunaan pengembangan lokal kami. Di lingkungan nyata, server LDAP harus digunakan secara independen.
Dalam Paket Boot Spring, kita hanya perlu mengonfigurasi parameter berikut untuk menghubungkan contoh di atas ke LDAP jarak jauh alih -alih LDAP tertanam.
spring.ldap.urls = ldap: // localhost: 1235spring.ldap.base = dc = didispace, dc = comspring.ldap.username = didispacespring.ldap.password = 123456
Kode artikel ini
Anda dapat memeriksa direktori Bab3-2-10 melalui dua repositori berikut:
Github: https://github.com/dyc87112/springboot-learning/
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.