في كثير من الأحيان ، عندما نبني نظامًا ، سنقوم بإنشاء نظام لإدارة المستخدم بأنفسنا ، وهو أمر ليس من الصعب على المطورين. ومع ذلك ، عندما نحتاج إلى الحفاظ على العديد من أنظمة مختلفة ونفس المستخدمين عبر الأنظمة ، إذا كان كل نظام يحتفظ بمعلومات المستخدم الخاصة به ، فإن مزامنة معلومات المستخدم ستصبح أكثر إزعاجًا ، وسيكون ذلك مزعجًا للغاية للمستخدمين أنفسهم. من السهل التسبب في كلمات مرور غير متناسقة لأنظمة مختلفة. إذا قدمنا LDAP في هذا الوقت لتخزين المعلومات الأساسية للمستخدم بشكل مركزي وتقديم واجهة وتكتب قراءة وتكتب موحدة ، فسيكون من الأسهل حل هذه المشكلة. دعنا نتحدث عن كيفية الوصول إلى خادم LDAP عندما نستخدم SPRING BOOT لتطويره.
مقدمة إلى LDAP
LDAP (بروتوكول الوصول إلى الدليل الخفيف) هو خدمة معلومات توفر خدمة دليل. خدمة الدليل عبارة عن نظام قاعدة بيانات خاص تم تحسينه خصيصًا لقراءة عمليات القراءة والتصفح والبحث. تُستخدم الدلائل عمومًا لاحتواء المعلومات الوصفية القائمة على السمات ودعم قدرات التصفية الدقيقة والمعقدة. لا تدعم الدلائل عمومًا إدارة المعاملات المعقدة أو الاستراتيجيات الدوارة لقواعد البيانات الشائعة التي تتطلب عددًا كبيرًا من عمليات التحديث. يعد تحديث خدمات الدليل أمرًا بسيطًا للغاية. يمكن لهذا النوع من الدليل تخزين المعلومات المختلفة بما في ذلك المعلومات الشخصية ، وروابط الويب ، وصور JPEG ، إلخ. من أجل الوصول إلى المعلومات المخزنة في الدليل ، من الضروري استخدام بروتوكول الوصول - LDAP الذي يعمل على TCP/IP.
يتم تنظيم المعلومات الموجودة في دليل LDAP وفقًا لهيكل شجرة ، ويتم تخزين المعلومات المحددة في بنية بيانات الإدخال (الإدخال). الإدخال يعادل سجل جدول في قاعدة بيانات علائقية ؛ الإدخال هو سمة مع الاسم المستعار DN (الاسم المتميز). يتم استخدام DN للإشارة إلى إدخال ، و DN يعادل كلمة رئيسية في جدول قاعدة بيانات علائقية. تتكون السمة من نوع (النوع) وواحد أو أكثر من القيم (القيم) ، وهو ما يعادل حقل (حقل) في قاعدة بيانات علائقية يتكون من أسماء الحقول وأنواع البيانات. من أجل الاسترجاع ، يمكن أن يكون للنوع في LDAP قيم متعددة ، بدلاً من الحقول المنفذة في قاعدة البيانات العلائقية التي تتطلب تقليل التكرار البيانات يجب أن تكون غير ذات صلة. يتم تنظيم تنظيم الإدخالات في LDAP بشكل عام وفقًا للموقع الجغرافي والعلاقات التنظيمية ، وهو أمر بديهي للغاية. تقوم LDAP بتخزين البيانات في الملفات ، ولتحسين الكفاءة ، يمكن استخدام قاعدة بيانات الملفات المستندة إلى الفهرس بدلاً من قاعدة بيانات علائقية. مثال على النوع هو البريد ، الذي ستكون قيمته عنوان بريد إلكتروني.
يتم تخزين معلومات LDAP في بنية شجرة. يعرّف جذر الشجرة عمومًا بلد (C = CN) أو اسم المجال (DC = COM) ، وتحته ، أحد المنظمات أو أكثر (O = ACME) أو الوحدات التنظيمية (OU = الأشخاص). قد تحتوي الوحدة التنظيمية على معلومات مثل جميع الموظفين ، وجميع الطابعات في المبنى ، وما إلى ذلك ، بالإضافة إلى ذلك ، تدعم LDAP التحكم في السمات التي يمكن ويجب دعمها بواسطة إدخال ، يتم تنفيذها بسمة خاصة تسمى ObjectClass. تحدد قيمة السمة بعض القواعد التي يجب أن يتبعها الإدخال ، والتي تحدد السمات التي يمكن أن تحتوي على الإدخال ويجب أن تحتوي على الأقل. على سبيل المثال: تحتاج فئة كائن Inetorgperson إلى دعم سمات SN (اللقب) و CN (الاسم الشائع) ، ولكن يمكن أن تحتوي أيضًا على سمات اختيارية مثل البريد الإلكتروني ورقم الهاتف ، إلخ.
اختصار LDAP
الشروع في البداية
بعد فهم المفاهيم الأساسية لـ LDAP ، يمكننا أن نفهمها من خلال مثال بسيط!
قم بإنشاء مشروع Boot Boot أساسي (إذا كنت لا تعرف حتى الآن ، فيمكنك الرجوع إلى هاتين المادتين: البدء 1 أو البدء في 2)
إدخال اثنين من التبعيات المهمة في pom.xml
<Rependency> <roupeD> org.springframework.boot </rougiD> <intifactid> Spring-Boot-Starter-STARTER-STA-LDAP </SETIFACTID> </redepency> <sophid> com.unboundid </roucopeD>
من بينها ، هو تنفيذ تكوين أتمتة LDAP من الاشتراكية في الربيع. يعتمد على spring-data-ldap لإجراء عمليات محددة على خادم LDAP.
يستخدم UnboundID-LDAPSDK بشكل أساسي لاستخدام خادم LDAP مضمن هنا لإجراء عمليات الاختبار ، لذلك يتم تعيين النطاق على الاختبار. في التطبيقات الفعلية ، عادةً ما نتواصل مع خادم LDAP حقيقي ومستقل ، لذلك ليست هناك حاجة إلى هذه التبعية.
قم بإنشاء ملف LDAP-server.ldif في دليل SRC/Test/Resources لتخزين البيانات الأساسية لخادم LDAP للوصول إلى البرامج اللاحقة.
DN: DC = DIDISPACE ، DC = comObjectClass: TopObjectClass: domaindn: ou = people ، dc = didispace ، dc = comobjectclass: topObjectClass: topoBjassclass: performansclass: personsclass: personsclass: personsclass: personsclass. inetorgpersoncn: didisn: Zhaiyongchaouid: didiuserpassword: {sha} nfceBwJxfalBhhg1qk5uu4trbvq =يتم إنشاء المستخدم الأساسي هنا ، مع الاسم الحقيقي Zhaiyongchao والاسم الشائع DIDI. في البرنامج اللاحق ، سنقرأ هذه المعلومات. لمزيد من تفسيرات المحتوى ، يمكنك تعلم LDAP بعمق لفهمه. لن أشرح الكثير هنا.
إضافة تكوين LDAP المضمن في التطبيق.
spring.ldap.embedded.ldif = ldap-server.ldifspring.ldap.embedded.base-dn = dc = didispace ، dc = com
استخدم الاستخدام الأساسي لـ spring-data-ldap لتحديد رسم خرائط العلاقة بين الخصائص في LDAP والكيانات المحددة في Java والمستودع المقابل
@data @entry (base = "ou = people ، dc = diidspace ، dc = com" ، ObjectClasses = "InetorGperson") public class person {id private name id ؛ dnattribute (value = "uid" ، index = 3) private string uid ؛ attribute (name = "cn") private string commonName ؛ attribute (name = "sn") suername suername الخاصة ؛ سلسلة خاصة userPassword ؛} الواجهة العامة personrepository تمتد crudrepository <شخص ، اسم> {}بعد التعريف أعلاه ، تم تعيين كائن الشخص مع محتوى تخزين LDAP. نحتاج فقط إلى استخدام PersonRepository لقراءة محتوى LDAP بسهولة.
قم بإنشاء حالة اختبار وحدة لقراءة جميع معلومات المستخدم:
Runwith (SpringRunner.Class) springBoottestpublic Class ApplicationTests {autowired personrepository personrepository ؛ test public void bindall () يلقي استثناء {personrepository.findall (). foreach (p -> {system.out.println (p) ؛}) ؛ }}بعد بدء حالة الاختبار هذه ، يمكننا أن نرى أن معلومات المستخدم التي تم الحفاظ عليها للتو في LDAP-server.ldif يتم إخراجها في وحدة التحكم:
2018-01-27 14: 25: 06.283 Warn 73630 --- [Main] Osldap.Core.impl.Objectledata: يجب الإعلان عن شخص فئة الدخول النهائي
الشخص (id = uid = ben ، ou = people ، 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،118،81،81،107،53،53،85،52،116،11،11،11،81،61)
أضف مستخدمًا
مع مثال المبتدئين أعلاه ، إذا كان بإمكانك إكماله بشكل مستقل ، فقد تم الانتهاء من الهدف الأساسي لتشغيل LDAP في SPRING BOOT.
إذا كنت تعرف بيانات الربيع بما فيه الكفاية ، فليس من الصعب تخيل أن هذا المشروع الفرعي تحتها يجب أن يمتثل أيضًا للتجريد المسموح به. لذلك ، يمكننا استخدام personrepository المحددة أعلاه لتنفيذ العمليات بسهولة ، مثل الكود التالي لإضافة المستخدمين بسهولة إلى LDAP:
شخص الشخص = شخص جديد () ؛ person.setuid ("uid: 1") ؛ person.setsuername ("AAA") ؛ person.setCommonname ("AAA") ؛ person.setUserPassword ("123456") ؛ personrepository.save (شخص) ؛إذا كنت ترغب في تنفيذ المزيد من العمليات ، فيمكنك الرجوع إلى وثائق Dring-Data-LDAP للاستخدام.
الاتصال بخادم LDAP
في الأمثلة في هذه المقالة ، يتم استخدام خوادم LDAP المضمنة. في الواقع ، تقتصر هذه الطريقة على الاختبارات المحلية واستخدامنا للتطوير. في البيئة الحقيقية ، يجب نشر خادم LDAP بشكل مستقل.
في حزمة Boot Spring ، نحتاج فقط إلى تكوين المعلمات التالية لتوصيل المثال أعلاه بـ LDAP عن بُعد بدلاً من LDAP المضمّن.
spring.ldap.urls = ldap: // localhost: 1235spring.ldap.base = dc = didispace ، dc = comspring.ldap.username = didispacespring.ldap.password = 123456
رمز هذه المقالة
يمكنك التحقق من دليل الفصل 3-2-10 من خلال المستودعين التاليين:
Github: https://github.com/dyc87112/springboot-learning/
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.