OpenLDAP Proxy -- rwm-map vs map

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

OpenLDAP proxy setups often require attribute mapping to present a consistent view to clients when backend servers use varying attribute names for identical data. While `rwm-map` provides global attribute mapping, it becomes problematic with multiple backend LDAP servers, as its uniform application can lead to data loss if a server lacks the globally mapped attribute. The `meta` backend offers a more granular solution through its `map` option, allowing server-specific attribute mappings within each `uri` configuration. This enables mapping distinct foreign attribute names to a single local attribute, ensuring clients consistently retrieve data from all configured backend servers. This approach effectively resolves the limitations of global mapping for multi-server OpenLDAP proxy environments.

โปรแกรมพร็อกซี OpenLDAP ใช้สำหรับเป็นตัวกลางในการรับส่งคำขอและการตอบสนอง ldap ระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ เซิร์ฟเวอร์ต่างๆ อาจมีการแสดง/แอตทริบิวต์ที่แตกต่างกันเพื่อหมายถึงสิ่งเดียวกัน ตัวอย่างเช่น ในเซิร์ฟเวอร์ LDAP หนึ่ง firstName อาจแสดงโดย firstName แต่ในเซิร์ฟเวอร์อื่นอาจแสดงโดย givenName อย่างไรก็ตาม จากมุมมองของไคลเอ็นต์ ไคลเอ็นต์ต้องการรับเฉพาะ firstName เท่านั้น ไคลเอ็นต์ไม่สนใจแอตทริบิวต์ด้านหลัง

ในกรณีนี้ การแมปแอตทริบิวต์สามารถช่วยให้เห็นภาพเสมือนของข้อมูลด้านหลังได้ ในโพสต์อื่น OpenLDAP Proxy -- Tricks and tips เราได้แนะนำวิธีการทำงานของการแมปแอตทริบิวต์โดยใช้ overlay rwm วิธีนี้ทำงานได้ดีมากเมื่อเรามีเซิร์ฟเวอร์ LDAP ด้านหลังเพียงหนึ่งเดียวที่จะทำการพร็อกซี

อย่างไรก็ตาม ถ้าเราตั้งค่าเซิร์ฟเวอร์ LDAP สองตัวขึ้นไปสำหรับ backend database meta จะเกิดอะไรขึ้น เนื่องจาก rwm-map จะใช้การแมปแบบทั่วโลก แต่ไม่ใช่แบบตามเซิร์ฟเวอร์ การแมปแอตทริบิวต์อาจไม่ทำงานกับบางเซิร์ฟเวอร์ ซึ่งจะเป็นปัญหา มาดูกันว่าจะเกิดขึ้นได้อย่างไร

สมมติว่ามีการตั้งค่าเซิร์ฟเวอร์ LDAP สองตัวใน backend meta ของ OpenLDAP proxy และแอตทริบิวต์ในเซิร์ฟเวอร์ทั้งสองนี้คือ:

เซิร์ฟเวอร์ 1

firtsName: myFirstName
sn: myLastName

เซิร์ฟเวอร์ 2

givenName: myFirstName
lastName: myLastName

ใน OpenLDAP proxy givenName ถูกแมปไปยัง firstName

overlay rwm
rwm-map attribute firstName givenName

เมื่อเรียกใช้ ldapsearch เพื่อรับแอตทริบิวต์ firstName firstName จะถูกแมปไปยัง givenName ก่อน และ OpenLDAP proxy จะส่งแอตทริบิวต์ givenName ไปยังเซิร์ฟเวอร์ 1 แต่เห็นได้ชัดว่าเซิร์ฟเวอร์ 1 ไม่มีแอตทริบิวต์ givenName ดังนั้นจึงจะไม่ส่งคืนอะไรเลย ในเซิร์ฟเวอร์ 2 เนื่องจากมี givenName ค่าชื่อจะถูกส่งคืน พฤติกรรมนี้ไม่เป็นไปตามที่คาดหวัง เห็นได้ชัดว่าเราคาดหวังว่าทั้งสองเซิร์ฟเวอร์ควรส่งคืน firstName 

ดูเหมือนว่า rwm-map แก้ปัญหาไม่ได้ โชคดีที่ถ้าคุณอ่าน slapd-meta man page อย่างละเอียด คุณจะพบว่ามีตัวเลือก map ซึ่งสามารถทำการแมปแอตทริบิวต์ได้ที่ระดับเซิร์ฟเวอร์

map {attribute|objectclass} [<local name>|*] {<foreign name>|*}
  นี้  แมปคลาสออบเจ็กต์และแอตทริบิวต์เช่นเดียวกับใน LDAP backend

นั่นหมายความว่าคุณสามารถแมปชื่อแอตทริบิวต์ที่แตกต่างกันไปยังชื่อแอตทริบิวต์ในพื้นที่เดียวกันสำหรับเซิร์ฟเวอร์ต่างๆ สำหรับ firstName ถ้ามีการกำหนดค่าดังต่อไปนี้

uri  "server1"
suffixmassage "local" "target"
map attribute firstName firstName    #สามารถละเว้นได้เช่นกัน

uri "server2"
suffixmassage "local" "target"
map attribute firstName givenName

สำหรับเซิร์ฟเวอร์ 1 firstName จะถูกแมปไปยัง firstName และสำหรับเซิร์ฟเวอร์ 2 givenName จะถูกแมปไปยัง firstName และไคลเอ็นต์จะเห็นค่าที่ส่งคืนจากทั้งสองเซิร์ฟเวอร์เมื่อมีการร้องขอ ldapsearch นี่คือสิ่งที่คาดหวังไว้

ขอเตือนว่า backend ldap ไม่รองรับ map อีกต่อไป คุณควรใช้ rwm-map แทน วิธีนี้ใช้ได้ผลเนื่องจาก database ldap มีไว้สำหรับการพร็อกซีไปยังเซิร์ฟเวอร์ LDAP หนึ่งตัวเมื่อมีการร้องขอใดๆ

หวังว่าจะเป็นประโยชน์

MAP OPENLDAP OPENLDAP PROXY LDAP RWM-MAP

  RELATED

  COMMENTS

0

No comment for this article.