動態群組具有 groupOfURLs 的 objectclass,並具有零個或多個 memberURL 屬性,每一個屬性都是描述物件集的 LDAP URL。
對於 LDAP 服務,如果您想要根據任意屬性將使用者自動分組,或者想要將 ACL 套用至包含相符 DN 的特定群組,Web Server 可使您建立動態群組。例如,您可以建立一個群組,該群組將自動包括含有department=marketing 屬性的任何 DN。如果您為 department=marketing 套用搜尋篩選器,則搜尋將傳回一個群組,其中包括含有 department=marketing 屬性的所有 DN。然後,您可以基於此篩選器的搜尋結果來定義動態群組。隨後,您可以針對結果動態群組定義一個 ACL。
Web Server 在 LDAP 伺服器模式中以 objectclass = groupOfURLs 來實作動態群組。groupOfURLS 類別可以具有多個 memberURL 屬性,每個屬性均包含一個 LDAP URL,用來列舉目錄中的物件集。群組成員將是這些物件集的併集。例如,以下群組僅包含一個成員 URL:
ldap:///o=mcom.com??sub?(department=marketing)
此範例說明包含「o=mcom.com」下部門為「marketing」的所有物件集。LDAP URL 可以包含搜尋基底 DN、範圍和篩選器,但主機名稱和連接埠除外。這就意味著您僅能參考同一 LDAP 伺服器上的物件。支援所有範圍。
將自動包括 DN,而無須您在群組中逐個增加。群組會動態變更,這是因為每次 ACL 驗證需要群組查詢時,Sun ONE Web Server 均會執行 LDAP 伺服器搜尋。ACL 檔案中使用的使用者和群組名稱與 LDAP 資料庫中物件的 cn 屬性相對應。
Web Server 使用 cn (commonName) 屬性做為 ACL 的群組名稱。
ACL 與 LDAP 資料庫的對映定義於 dbswitch.conf 配置檔案 (將 ACL 資料庫名稱與實際 LDAP 資料庫 URL 關聯) 中,以及 ACL 檔案 (定義各資料庫可用於哪個 ACL) 中。例如,如果您想讓「staff」群組中的成員擁有基底存取權限,ACL 代碼將查詢物件類別為 groupOf<anything> 且 CN 設定為 staff 的物件。物件定義群組成員的方式有兩種:明確列舉成員 DN (靜態群組的 groupOfUniqueNames 作業即如此),或指定 LDAP URL (例如,groupOfURLs)。
群組物件可同時具有 objectclass = groupOfUniqueMembers 和 objectclass = groupOfURLs,因此「uniqueMember」和「memberURL」屬性都是有效的。群組的成員關係是其靜態成員和動態成員的併集。
使用動態群組時會影響伺服器的效能。如果您正在測試群組成員關係,且 DN 不是靜態群組的成員,則 Web Server 將會檢查資料庫基底 DN 中的所有動態群組。Web Server 為完成此作業,會檢查基底 DN 和範圍 (對照使用者的 DN),並藉由使用者 DN (做為基底 DN) 和篩選器 memberURL 來執行基底搜尋,從而檢查每一個 memberURL 是否符合。此程序會產生大量的個別搜尋。
使用 Administration Server 建立新動態群組時,請考量以下準則:
動態群組不能包含其他群組。
使用以下格式 (沒有主機和連接埠資訊,因為這些參數被忽略) 輸入群組的 LDAP URL:
ldap:///<basedn>?<attributes>?<scope>?<(filter)>
下表描述了需要的參數:
請注意,<attributes>、<scope> 和 <(filter)> 參數是依據它們在 URL 中的位置進行識別的。即使您不想指定任何屬性,也仍需要包括問號來分隔該欄位。
您也可以選擇性地增加新群組的描述。
如果已為您的目錄定義任何組織單位,則可以使用 [增加新群組至] 清單指定要放置新群組的位置。預設位置為您目錄的根目錄位置或最頂層項目。