ข้อมูล: วิธีการที่ใช้ ADSI การสอบถามเซิร์ฟเวอร์ LDAP สาม

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 251195
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

ผู้ให้บริการโพรโทคอลการเข้าถึงไดเรกทอรีของ Lightweight (LDAP) สำหรับ Active Directory Service อินเทอร์เฟซ (ADSI) ถูกใช้ในการดึงข้อมูลจากเซิร์ฟเวอร์ LDAP ของบริษัทอื่น บทความนี้อธิบายถึงปัญหาต่าง ๆ ที่อาจเกิดขึ้น และวิธีการ overcome เหล่านั้น

ข้อมูลเพิ่มเติม

เมื่อคุณใช้ ADSI เพื่อดึงข้อมูลจากเซิร์ฟเวอร์ LDAP ของบริษัทอื่น คุณจำเป็นต้อง:
  • ตรวจสอบความพร้อมใช้งานข้อมูล schema
  • การขอรับการรับรองความถูกต้องที่ถูกต้อง
  • ป้องกันการค้นหาบนคอนเทนเนอร์ที่ไม่มีอยู่

ตรวจสอบความพร้อมใช้งานของเค้าร่างข้อมูล

คาดตาม ด้วยการร้องขอสำหรับข้อคิดเห็น (RFC) 2251 เซิร์ฟเวอร์รุ่น 3 ของ LDAP ว่าให้เป็นsubSchemaSubEntryแอตทริบิวต์ออกจากรากของบริการไดเรกทอรีองค์กร (rootDSE) adsi ใช้คุณลักษณะนี้เพื่อค้นหา subschema ข้อมูล ซึ่งดังกล่าวแล้วพยายามตรวจสอบ และการแคช

สำหรับข้อมูลเพิ่มเติมในวิธี ADSI เก็บ subschema ที่ คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
251189ข้อมูล: แบบแผนเซิร์ฟเวอร์ LDAP Cached โดย ADSI การค้นหา
adsi ใช้ข้อมูล subschema เพื่อแสดงถึงอินเทอร์เฟซที่เหมาะสมสำหรับคลาสที่กำหนด และเรียกคืนแอตทริบิวต์ของไวยากรณ์ที่ถูกต้องจากแคชคุณสมบัติ

ถ้าไม่สามารถค้นหา หรืออย่างถูกต้องตรวจสอบข้อมูล subschema ADSI มันใช้ schema เวอร์ชัน 2 LDAP เริ่มต้น เนื่องจากเซิร์ฟเวอร์ LDAP ที่เวอร์ชัน 2 อย่าให้เป็น subschema, ADSI เก็บรักษาข้อมูล schema ภายในเกี่ยวกับแอตทริบิวต์มาตรฐานและคลาสที่จำนวนมาก ถ้า ADSI ใช้ schema ของเวอร์ชัน 2 เป็นค่าเริ่มต้น ไม่มีการเข้าถึงข้อมูล nonstandard schema รวมทั้งคลาสที่กำหนดเองหรือแอตทริบิวต์ที่ถูกสร้างขึ้นบนเซิร์ฟเวอร์

ถ้าไม่มีข้อมูล schema เกี่ยวกับไวยากรณ์ของแอตทริบิวต์มีอยู่ ADSI ไม่สามารถเรียกข้อมูลแอตทริบิวต์จากแคชคุณสมบัติ ในกรณีนี้ คุณสามารถใช้การIADsPropertyList.GetPropertyItemวิธีการระบุไวยากรณ์ของแอตทริบิวต์ของคุณสมบัติที่ร้องขอ เมื่อคุณระบุค่า ADsTYPE คุณหลีกเลี่ยงข้อความแสดงความต้องการรายละเอียดของไวยากรณ์เกี่ยวกับคุณลักษณะนั้น

ถ้าคุณใช้วัตถุข้อมูล ActiveX ของ Microsoft (ADO), และคุณไม่มีข้อมูล schema ที่พร้อมใช้งาน คุณต้องการเรียกสายอักขระ ADsPath ของวัตถุ ผูกกับอ็อบเจกต์ในไดเรกทอรี และใช้การIADsPropertyList.GetPropertyItemวิธีการ ไม่มีวิธีแก้ปัญหาการใช้ ADO โดยตรงโดยไม่มีข้อมูล schema

การขอรับการแก้ไขการรับรองความถูกต้อง

มีหลายวิธีการรับรองความถูกต้องของการที่ไคลเอ็นต์กับเซิร์ฟเวอร์ LDAP ด้วย ADSI LDAP ระหว่างวิธีการเหล่านี้ เฉพาะการผูกแบบง่ายสนับสนุน natively LDAP เพื่อแสดงข้อมูลประจำตัวของเซิร์ฟเวอร์ ในบางกรณี ไคลเอนต์และเซิร์ฟเวอร์ต้องยอมรับในวิธี มักจะมีการใช้อีกหน่วยงานจัดเก็บรักษาความปลอดภัยหรือโพรโทคอลกรรมสิทธิ์

ตัวอย่างGetObjectวิธี (หรือADsGetObjectฟังก์ชันใน C) ใช้ค่าสถานะ ADS_SECURE_AUTHENTICATION ซึ่งอาจทำให้การผูก LDAP ที่ใช้ Microsoft Windows NT รองรับ/การตอบรับ (NTLM) การผูกนี้มีแนวโน้มล้มเหลวเนื่องจากเซิร์ฟเวอร์อื่น ๆ จำนวนมากไม่ยอมรับ NTLM ถ้าการรับรองความถูกต้องล้มเหลว การผูกปลอดภัย downgraded การผูกไม่ระบุชื่อ ตัวอย่างเช่น simple การผูกโดยไม่มีข้อมูลประจำตัวของผู้ใช้ ณจุดนี้ โปรแกรมประยุกต์อาจมีการเข้าถึงชุดย่อยของข้อมูล (หรือแม้แต่การไม่มีข้อมูล) ทั้งนี้ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์เท่านั้น

เพื่อป้องกันการสถานการณ์เช่นนี้ ทำการผูกง่าย ๆ โดยใช้การOpenDSObjectวิธี (หรือADsOpenObjectฟังก์ชันใน C) และระบุศูนย์ (ไม่มีค่าสถานะ) หรืออธิบาย ADS_FAST_BIND (ไว้ด้านล่าง) สำหรับการlnReservedพารามิเตอร์ ด้วยการผูกแบบง่าย ผ่าน username attributed ที่ถูกต้อง (cn =ชื่อผู้ใช้ cn =...) และรหัสผ่านไปยังเซิร์ฟเวอร์ LDAP สำหรับการตรวจสอบ เมื่อต้องการให้การผูกแบบง่าย ๆ ด้วย ADO ตั้งค่านี้รหัสผ่านการเข้ารหัสลับคุณสมบัตินี้ADODB.Connectionวัตถุการ FALSE และกำหนดชื่อผู้ใช้ attributed และรหัสผ่านเพื่อID ผู้ใช้และรหัสผ่าน:คุณสมบัติตามลำดับ

การป้องกันไม่ให้การค้นหาบนคอนเทนเนอร์ที่ไม่มีอยู่

โดยค่าเริ่มต้น ADSI ทำการค้นหา objectClass ของวัตถุฐานที่ระบุในแบบสอบถามหรือผูก ค้นหานี้ล้มเหลวหากไม่มีชื่อที่แตกต่างที่ถูกกำหนดให้อยู่ในไดเรกทอรี

ตัวอย่าง สมมติว่า มีการตั้งค่าการค้นหาจะเริ่มต้นที่ " o =สร้าง c =สหรัฐอเมริกา" สำหรับผู้ใช้ทั้งหมดในไดเรกทอรี โครงสร้างของไดเรกทอรีอยู่ซึ่งไม่มีคอนเทนเนอร์ "สร้าง" ที่แท้จริง แต่จะสองวัตถุที่รากของไดเรกทอรีที่มีชื่อที่แตกต่างของ " ou = NorthAmerica, o =สร้าง c =สหรัฐอเมริกา"และ" ou =ยุโรป o =สร้าง c =สหรัฐอเมริกา" ADSI ปัญหาการค้นหา objectClass สำหรับ " o =สร้าง c =สหรัฐอเมริกา" ล้มเหลวที่ การหยุดการค้นหาสำหรับผู้ใช้ก่อนที่คุณเริ่มการทำงาน

The easiest solution to this problem is to specify a base object that actually exists in the directory. If it is not possible, due to the directory implementation, to perform the desired search with a valid base object, you must prevent ADSI from performing an initial objectClass search.

To prevent an objectClass search on the object, pass the ADS_FAST_BIND flag in thelnReservedparameter of theOpenDSObjectmethod (or theADsOpenObjectfunction in C). Because this flag determines ADSI's actions after the bind has occurred, it does not affect proper authentication. Note that this flag is not available prior to ADSI version 2.5.

The ADO provider for Microsoft Windows 2000 exposesADSI Flagproperties on theADODB.Connectionวัตถุ You can set the ADS_FAST_BIND flag for this property to prevent ADO queries from performing an objectClass search. กระบวนการADSI Flagproperty is not present in ADSI version 2.5 for Microsoft Windows NT version 4.0 or Microsoft Windows 9x. For a possible solution, see the following article:

223049HOWTO: Query Exchange 5.x Anonymously Through ADSI

ข้อมูลอ้างอิง

For additional information on ADSI, see the following articles in the Microsoft Knowledge Base:
233023HOWTO: Find All ADSI Providers on a System
187529HOWTO: Use ADO to Access Objects Through an ADSI LDAP Provider
251189INFO: Locating an LDAP Server Schema Cached by ADSI
223049HOWTO: Query Exchange 5.x Anonymously Through ADSI

For general information on ADSI, see the following Web site:
http://msdn2.microsoft.com/library/aa772170.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 251195 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
Keywords: 
kbinfo kbmsg kbmt KB251195 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:251195
การปฏิเสธความรับผิดชอบในเนื้อหาของ KB ที่จะไม่มีการปรับปรุงอีกต่อไป
บทความนี้กล่าวถึงผลิตภัณฑ์ที่ Microsoft ไม่มีการสนับสนุนอีกต่อไป เนื้อหาของบทความจึงมีการนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com