2011-12-04 35 views
2

試圖用OpenLDAP做一些應該很簡單的事情,但似乎無法找到明確的答案。我需要能夠根據他們的「類型」組織任何人的聯繫人屬性。例如,電子郵件將是類型6.因此,如果我想發送電子郵件給我的OU的所有成員,我會選擇那些具有類型6地址的。具有「聯繫類型」屬性的ldap對象類

由於LDAP屬性是一個名稱,值對,我沒有看到如何分配一個額外的屬性到聯繫地址,但它似乎是一個足夠普遍的問題。有什麼建議麼?

回答

1

目錄服務器模型中的屬性實際上是名稱[可選選項]值結構。要完成您描述的任務,您可以爲條目分配另一個屬性。 RFC2798定義了employeeTypelink)屬性類型,其語法爲DirectoryString,等式匹配規則爲caseIgnoreMatch。也許這個屬性可以用於你的目的。如果您分配了類似的屬性:

employeeType: type 6 

那麼LDAP客戶端會發現所有的員工提供一個過濾器像

(&(employeeType=type 6)(objectClass=inetOrgPerson)). 

如果你有關於匹配是caseIgnoreMatch擔心,你可以指定服務器使用caseExactMatch通過使用可擴展的匹配濾波器等:

(&(employeeType:caseExactMatch:=type 6)(objectClass=inetOrgPerson)) 

employeeType是多值的,因此,員工可能有多個employeeType。任何有效的DirectoryString值都可以分配給employeeType

+0

謝謝,這對一個人很有用,但如果我需要爲擁有電話號碼和電子郵件的人創建記錄,並且我希望將電話號碼標記爲聯繫類型10,並將電子郵件作爲聯繫人類型35? – Mordechai

+0

爲了滿足這個要求,可能有必要定義新的屬性來保存關於聯繫人類型的信息。如果在模式中定義了新屬性,則可以將它們命名爲'companyNameHereMailContactType','companyNameHereTelephoneNumberContactType'。或者,「employeeType」屬性值的格式可以是「mailContactType type 6」,另一個「employeeType」屬性的值爲「telephoneNumberContactType type 10」等等。有很多方法可以完成我認爲你正在描述的內容。否則我可能完全誤解你。 –

+0

你對我的理解很好。而我的問題恰恰來自衆多選擇。接觸點是一個物體,一個人是一個物體。在一個面向對象的宇宙中,人們會有一個接觸點屬性來保存聯繫點信息。問題是在LDAP的名稱/值對世界中執行此操作的最佳方式是什麼。 – Mordechai

相關問題