كيف يمكنني أن أجعل استعلام معقد مع صافي بيرل :: LDAP؟

StackOverflow https://stackoverflow.com/questions/242621

  •  04-07-2019
  •  | 
  •  

سؤال

وأواجه مشكلة في تشغيل استعلام معقد ضد خادمنا LDAP الشركة. أنا باستخدام مخطوطة برل التالية:

use Data::Dumper;
use Net::LDAP;

die "Can't connect to LDAP-Server: $@\n" 
    unless $ldap = Net::LDAP->new( 'xLDAPx' );


foreach my $filter ( 'ou=Personal', 'ou=BAR', 'ou=Personal,ou=BAR', 'ou=Personal,ou=FOO,o=FOO,dc=foo,dc=com' )
{ 
    $mesg = $ldap->search( base => "o=FOO,dc=foo,dc=com", filter => $filter );
    print Dumper($mesg), "\n\n";
}

وعلى الرغم من أن أول اثنين من المرشحات العمل (كما هو الحال في إعادة القيم المتوقعة) آخر واحد ومعقدة لا. تقوم بإرجاع مجموعة فارغة. ما يحيرني حقا هو أن بالضبط سلسلة الاستعلام نفس يعمل عندما استخدمه مع أداة مثل متصفح Softerra LDAP.

ولقد حاولت أيضا نفس الاستعلام باستخدام PHP في ldap_search وشركاه، لكن دون جدوى.

ويمكن لأي شخص أن يلقي بعض الضوء على هذا؟

وشكرا لقراءة

وهولي

وتحرير: هذا هو هيكل الخادم:

Server
    ou=FOO
        ou=...
        ou=Personal
            uid=something

وأحتاج إلى قائمة uids.

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

المحلول

وأعتقد أنك تريد أن تكون أشبه (&(ou=Personal)(ou=FOO)(o=FOO)(dc=foo)(dc=com)). ولكن لم تكن واضحة على الإطلاق على ما تريد بالضبط، لذلك لا يمكن إجراء التصفية بالنسبة لك.

ومحرر لإضافة: أنا التخمين هذا هو ما تريد القيام به: (|(ou=Personal)(ou=FOO))

نصائح أخرى

والسبب هو أنك لا تقدم سلاسل مرشح الصحيحة نحويا، ولكن أجزاء من DN. لا أستطيع أن أتخيل هذا يعمل في متصفح LDAP - أنا فقط حاولت نفسي دون جدوى

وأول هما سلاسل مرشح الصحيحة. أنها تصفية على سمة الكائن واحدة في "({سمة} = {قيمة})" الموضة. فإن أول ( "أوو = الشخصية") إرجاع أي OU المسمى "الشخصية" داخل قاعدة البحث الخاصة بك.

إذا كنت أشرح بمزيد من التفصيل ما كنت في محاولة للعثور يمكنني المحتمل ان اقول لكم ما التعبير تصفية التي تحتاج إليها.

وكتابة مرشح الذي يتوافق مع RFC 2254  ومن ثم نرى ما سيحدث. لا تحتاج استعلام معقد، وتريد سمة واحدة لكل دخول تحت فرع واحد. نظرة على حجة attrs للأسلوب البحث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top