LDAP 對應
LDAP 儲存庫由多個項目組成。每個項目代表目錄中的一個物件,以識別名稱 (DN) 作為識別,可能包含一或多個屬性。在典型的 LDAP 儲存庫中,通常會有使用者專用的項目和群組專用的項目。使用者和群組之間的連接可以透過兩種不同的方式實作:
-
在群組項目的特殊多重值屬性定義屬於某個群組的使用者。
-
在使用者項目的特殊多重值屬性定義使用者所屬的群組。
LDAP 安全性物件和基準安全性物件之間的對應是儲存在可由 LDAP 匯入批次工作處理的 XML 文件中。設定系統的 LDAP 匯入功能時,您需要定義這種對應。基準套件提供一個名為 ldapdef.xml 的對應檔案範例,可以將其當作起點,並根據您的業務需求和特殊的 LDAP 儲存庫進行變更。
定義對應 XML 文件之後,它就會被設定為 F1-LDAP 批次工作的參數。
XML 結構:
-
LDAPEntry 元素會將 LDAP 項目對應至系統物件 (使用者或群組)。對應檔案只能包含一個用於使用者的 LDAPEntry 元素以及一個用於群組的元素。
-
LDAPEntry 元素中的 LDAPCDXAttrMapping 元素,會將 LDAP 項目中的屬性對應至系統物件中的屬性。
-
LDAPEntryLinks 元素描述連結至 LDAP 項目的物件。在對應使用者實體時,您需要描述如何擷取使用者所屬的群組。在對應群組實體時,您需要描述如何擷取群組中包含的使用者。
下表描述要為每個元素定義的屬性。
元素 |
屬性 |
描述 |
---|---|---|
LDAPEntry |
name |
LDAP 項目的名稱: - 群組 - 使用者 |
baseDN |
LDAP 中此項目的基準識別名稱。 |
|
cdxEntity |
LDAP 項目對應之基準產品實體的名稱: - 群組 - 使用者 |
|
searchFilter |
用於尋找 LDAP 項目的 LDAP 搜尋篩選。該篩選中的 %searchParm% 字串會以 F1-LDAP 批次工作提交的使用者或群組參數值取代。 |
|
Scope |
設定搜尋的範圍。有效值為: - onelevel (通常使用的值) - subtree |
|
LDAPCDXAttrMapping |
ldapAttr |
要對應之 LDAP 屬性的名稱。請注意,這可能會被多次參考,以便允許一個 LDAP 元素對應至多個基準產品元素。例如,如果登入 ID 和電子郵件地址二者都需要電子郵件地址。 |
cdxName |
要對應之基準產品屬性的名稱。 對使用者而言,這是 F1-IDMUser 業務物件中的元素。 對於群組而言,這是「群組」或「描述」。 |
|
default |
發生以下情況之一時,cdxName 屬性中參考的元素會被指派的預設值: - LDAP 屬性包含 null 或空值 - LDAP 屬性不存在或未指定。 只有建立新實體的時候才會套用預設值,不會套用至更新之後的實體。 |
|
autoGenerate |
將此設定為真,即可自動產生使用者 ID。如果為真,系統會將使用者 ID 定義為 <名字的首字母>+<姓氏> 全部大寫,最多 8 位數。如果產生的 ID 已有對應的現有使用者,則會以數字取代這 8 位數 (或附加到最後)。系統會遞增這個數字,直到找到唯一的 ID 為止。 |
|
transform |
使用此屬性指示是否應進行資料轉換。有效值:uppercase|truncate。請注意,此屬性不應與 autoGenerate 屬性搭配使用。 |
|
LDAPEntryLink |
linkedToLDAPEntity |
連結之實體的名稱 (使用者或群組)。描述「群組」實體時使用「使用者」。描述「使用者」實體時使用「群組」。 |
linkingLDAPAttr |
包含連結之實體的 LDAP 實體,其多重值屬性名稱。 |
|
linkingSearchFilter |
擷取連結的物件列表時套用的搜尋篩選,例如: (&(objectClass=group)(memberOf=%attr%)) 搜尋篩選可包含作為替代字串的 % attr % 字串,該字串會在執行時間被匯入實體的 attr 屬性值取代。如果描述的 LDAP 項目是群組而且字串是 %name%,則它會被您正匯入之群組的 "name" 屬性值所取代。如果描述的 LDAP 項目是使用者而且字串是 %dn%,則它會被您正匯入之使用者的 "dn" 屬性值所取代。 |
|
linkingSearchScope |
設定搜尋的範圍。有效值為: - onelevel (通常使用的值) - subtree |
範例對應
以下 XML 描述範例對應。該範例做出以下假設:
-
新增使用者時,基準產品屬性 displayProfileCode 預設為 "NORTHAM"。
-
LDAP 群組項目包含 departmentNumber 屬性中屬於該群組的使用者列表。
-
透過套用搜尋篩選的方式,擷取使用者所屬的群組。
<LDAPEntries>
<LDAPEntry name=" User" baseDN="ou=people,dc=example,dc=com" cdxEntity="
user" searchFilter=" (&(objectClass=inetOrgPerson)(uid=%searchParm%))">
<LDAPCDXAttrMappings>
<LDAPCDXAttrMapping ldapAttr="uid" cdxName=" user" />
<LDAPCDXAttrMapping ldapAttr="cn" cdxName="externalUserId" />
<LDAPCDXAttrMapping cdxName="language" default=" ENG" />
<LDAPCDXAttrMapping ldapAttr="givenName" cdxName="firstName"/>
<LDAPCDXAttrMapping ldapAttr="sn" cdxName= "lastName"/>
<LDAPCDXAttrMapping cdxName="displayProfileCode" default="NORTHAM" />
<LDAPCDXAttrMapping cdxName="toDoEntriesAge1" default="30" />
<LDAPCDXAttrMapping cdxName="toDoEntriesAge2" default="90" />
<LDAPCDXAttrMapping cdxName="userEnable" default="ENBL"/>
</LDAPCDXAttrMappings>
<LDAPEntryLinks>
<LDAPEntryLink linkedToLDAPEntity="Group" linkingLDAPAttr="departmentNumber" />
</LDAPEntryLinks>
</LDAPEntry>
<LDAPEntry name="Group" baseDN="ou=people,dc=example,dc=com" cdxEntity="
Group" searchFilter=" (&(objectClass=organizationalUnit)(ou=%searchParm%))">
<LDAPCDXAttrMappings>
<LDAPCDXAttrMapping ldapAttr="name" cdxName="Group" />
<LDAPCDXAttrMapping ldapAttr="description" cdxName=" Description" default="Unknown" />
</LDAPCDXAttrMappings>
<LDAPEntryLinks>
<LDAPEntryLink linkedToLDAPEntity="User" linkingSearchFilter="
(&(objectClass=inetOrgPerson)(departmentNumber=%distinguishedName%))"
linkingSearchScope="onelevel" />
</LDAPEntryLinks>
</LDAPEntry>
</LDAPEntries>