共用方式為


建立控件訪問許可權

若要將控件訪問許可權新增至 Active Directory 伺服器,請在 Configuration 數據分割的 Extended-Rights 容器中建立 controlAccessRight 物件。 如需詳細資訊和程式代碼範例,請參閱 建立控件訪問許可權的範例程序代碼。 若要使用控件訪問許可權,您必須再完成幾個步驟,視控件訪問許可權是針對特殊作業還是屬性集而定。

如果您定義屬性集的控件訪問許可權,請使用 controlAccessRight 物件的 rightsGUID 來識別集合中的屬性。 每個屬性都是由 Active Directory 架構中的 attributeSchema 物件所定義。 attributeSchema 物件的 attributeSecurityGUID 屬性會識別屬性集,如果有的話,該屬性屬於該屬性。 請注意 ,attributeSecurityGUID 屬性是單一值,並以二進位格式儲存 GUID (八位字串語法)。

如果您定義控制項訪問許可權來限制特定作業的存取權,則當使用者嘗試作業時,您的應用程式必須執行存取檢查。

設定存取檢查

  1. 建立控制訪問許可權,定義應用程式或服務的存取類型。 如需詳細資訊,請參閱下列程式代碼範例。
  2. 建立 Active Directory 網域服務 物件,代表您要保護的應用程式、服務或資源。
  3. 將物件 ACE 新增至物件安全性描述元中的 DACL,以授與或拒絕使用者或群組該物件的控制訪問許可權。 如需詳細資訊,請參閱 在物件的 ACL 中設定控件訪問許可權 ACE。
  4. 當使用者嘗試執行作業時,將物件安全性描述元和使用者存取令牌傳遞至 AccessCheckByTypeResultList 函式,以驗證用戶權力。 如需詳細資訊,請參閱 檢查物件 ACL 中的控件訪問許可權。

根據物件存取檢查的結果,應用程式或服務可以允許或拒絕使用者存取應用程式或服務。

當您建立 controlAccessRight 物件時,請設定下表所列的屬性,讓對象成為 Active Directory 網域服務 和 Windows 安全性系統所辨識的法律控件存取許可權。

屬性 描述
快遞 之 家 單一值屬性,這是 Extended-Rights 容器中對象的相對辨別名稱 (RDN)。 cn 是 Active Directory 網域服務 中訪問控制許可權的名稱。
appliesTo 多重值屬性,列出訪問控制許可權所套用的物件類別。 例如,Send-As 訪問控制許可權會列出appliesTo 屬性中的使用者計算機物件類別。 在清單中,每個物件類別都會由 classSchema 物件的 schemaIDGUID 來識別。 GUID 會儲存為 COM 連結庫中 StringFromGUID2 函式所產生的表單字串,但不含開頭和終止大括弧 ({ })。 例如,下列 GUID 是計算機類別的 schemaIDGUID:bf967a86-0de6-11d0-a285-00aa003049e2。
請注意,classSchema 物件的 schemaIDGUID 屬性會使用八位字串語法儲存為二進位 GUID。 若要將此八位字串格式轉換為 appliesTo 屬性中使用的字串格式,請使用 StringFromGUID2 函式,並從傳回的字串中移除大括號。
如需其中一個預先定義物件類別之 schemaIDGUID 屬性的詳細資訊,例如使用者計算機,請參閱 Active Directory 網域服務 參考中的 Active Directory 架構參考頁面。 如需詳細資訊和從 classSchema 物件擷取 schemaIDGUID 的程式碼範例,請參閱 Reading attributeSchema 和 classSchema Objects
displayName 字串,用來在使用者介面中顯示訪問控制許可權,例如安全性屬性頁,以及 Active Directory 使用者和電腦 MMC 嵌入式管理單元中的其他地方。
rightsGuid GUID,識別 ACE 中的控制件訪問許可權。 GUID 會儲存為 StringFromGUID2 函式所產生的表單字串,但不含開頭和終止大括號。 使用Uuidgen.exe讓其他公用程式產生控件訪問許可權的 GUID。如果您定義新的屬性集,您可以使用controlAccessRight物件的 rightsGuid 來識別集合中的屬性。 針對屬性集中的每個屬性,將屬性的 attributeSecurityGUID 值設定為屬性集 rightsGUID 的值。 屬性的 attributeSecurityGUID 值會儲存在 Active Directory 架構中的屬性Schema 定義中。 attributeSecurityGUID 屬性是單一值,並以二進位格式儲存 GUID(八位字串語法)。
objectClass 這個屬性會將 controlAccessRight 指定為物件類別。
validAccesses 針對屬性集,請將此屬性設定為 0x30 (ADS_RIGHT_DS_READ_PROP | ADS_RIGHT_DS_WRITE_PROP)。 針對控制訪問許可權,請將此屬性設定為 0x100 (ADS_RIGHT_DS_CONTROL_ACCESS)。 只有在 validAccesses 屬性設定為適當的值時,安全性屬性頁面才會辨識控制訪問許可權。 如果為零,則安全性屬性頁會忽略或未顯示控件訪問許可權。

請注意,預先定義的架構類別會使用controlAccessRight物件的localizDisplayId屬性來指定訊息標識碼,以從Dssec.dll擷取本地化的顯示名稱。 如果您定義新的控件AccessRight 物件,請勿設定localizationDisplayId屬性。