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

擷取連結的物件列表時套用的搜尋篩選,例如:

(&amp;(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=" (&amp;(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=" (&amp;(objectClass=organizationalUnit)(ou=%searchParm%))">
    <LDAPCDXAttrMappings>
      <LDAPCDXAttrMapping ldapAttr="name" cdxName="Group" />
      <LDAPCDXAttrMapping ldapAttr="description" cdxName=" Description" default="Unknown" />
    </LDAPCDXAttrMappings>
    <LDAPEntryLinks>
      <LDAPEntryLink linkedToLDAPEntity="User" linkingSearchFilter=" 
      (&amp;(objectClass=inetOrgPerson)(departmentNumber=%distinguishedName%))" 
     linkingSearchScope="onelevel" />
    </LDAPEntryLinks>
  </LDAPEntry>
</LDAPEntries>