سؤال

لذا المشروع المباشر تضرب مرة ثانية. أنا لست خبيرًا في LDAP ، لكنني أحاول إعداد بيئة اختبار لأن المعيار يتطلب أي حزمة لدعم الحصول على شهادات من LDAP وكذلك DNS CERT ، بغض النظر عن الطريقة التي يتم تنفيذها بواسطة الحزمة.

وفق وثائق, ، التسلسل المحدد للأحداث (تم تقليصه من أجل الأهمية) من القسم "3.3.3 استعلام LDAP":

* Discover the Base DNs
     Branches in LDAP must be defined by a “Base DN”. The list of Base DNs that are
     provided by a LDAP directory are found by doing a LDAP Query with a NULL (i.e.
     “”) Base DN, and ObjectClass=”DN”.
* Query across the Base DN for entries where "Mail" contains the endpoint address

أحاول تنفيذ هذه العملية في PHP ، باستخدام وظائف LDAP_* ، ولكن لا يبدو أن طريقها تعمل. من الواضح أن NULL ليس هو نفسه سلسلة فارغة (يقوم الأخير بإجراء أي مكالمة إلى LDAP_Search بإرجاع خطأ "لا كائن") ، و "DN" ليست قيمة صالحة لسمة ObjectClass.

لذا ، TL ؛ DR ، هل هناك طريقة أخرى لمستخدم جهاز عن بعد مجهول يسترجع DNS (قائمة؟) قاعدة DNS التي أفتقدها؟

تحديث: إعادة صياغة العنوان لتعكس السبب الجذري لمشكلتي: قراءة الجذر من PHP عندما لا تسمح لك API LDAP_* بتحديد نطاق "الأساس".

هل كانت مفيدة؟

المحلول

لذلك قرأ آخر من خلال المستندات أجاب على سؤالي من أجلي.

على ما يبدو ، فإن الفرق الوحيد بين LDAP_Search () و LDAP_LIST () و LDAP_READ () هما SCOPES (LDAP_SCOPE_SUBTREE (SUB) ، LDAP_SCOPE_ONELEVEL (واحد) ، و LDAP_SCOPE_BASE (قاعدة) ، على التوالي). لذا فإن استخدام LDAP_READ () بدلاً من الآخرين سيسمح للمرء بالحصول على الجذر.

نصائح أخرى

في ال الجذر DSE. انظر "NamingContexts".

تحديث:

في جافا:

LDAPConnection conn = new LDAPConnection(hostname,port);
SearchRequest req = new SearchRequest("",SearchScope.BASE,"(&)","+");
SearchResult result = conn.search(req);

// If the search succeeds, the result will comprise one entry,
// and that entry is the Root DSE:

dn: 
subschemaSubentry: cn=schema
namingContexts: C=us
vendorName: UnboundID Corp.
vendorVersion: UnboundID Directory Server 4.1.0.6
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top