某些應用程式和 API 需要存取帳戶物件上的授權資訊
本文說明某些應用程式和應用程式開發介面 (API) 必須能夠存取用戶帳戶物件上的 token-groups-global-and-universal (TGGAU) 屬性,或存取 Active Directory 目錄服務中的電腦帳戶物件。
原始 KB 編號: 331951
摘要
某些應用程式具有在用戶帳戶物件或 Microsoft Active Directory 目錄服務的電腦帳戶對象上讀取 token-groups-global-and-universal (TGGAU) 屬性的功能。 某些 Win32 函式可讓您更輕鬆地讀取 TGGAU 屬性。 讀取此屬性或呼叫 API 的應用程式,如果呼叫安全性內容沒有屬性的存取權,則讀取此屬性的應用程式不會成功。
根據預設,TGGAU 屬性的存取權取決於 許可權相容性 決策(在DCPromo.exe程序期間建立網域時所做的)。 新 Windows Server 2003 網域的默認許可權相容性不會授與 TGGAU 屬性的廣泛存取權。 讀取 TGGAU 屬性的存取權可以視需要授與 Windows Server 2003 中新的 Windows 授權存取 (WAA) 群組。
其他相關資訊
token-groups-global-and-universal (TGGAU) 屬性是計算機帳戶物件和 Active Directory 中使用者帳戶對象的動態計算值。 這個屬性會列舉對應用戶帳戶或計算機帳戶的全域群組成員資格和通用群組成員資格。 應用程式可以使用 TGGAU 屬性提供的群組資訊,在使用者未登入時,對特定使用者做出各種決策。
例如,應用程式可以使用這項資訊來判斷使用者是否已獲得應用程式控制存取權的資源存取權。 需要這項資訊的應用程式可以使用輕量型目錄存取通訊協定介面或 Active Directory 服務介面,直接讀取 TGGAU 屬性。 不過,Microsoft Windows Server 2003 引進了數個函式(包括 AuthzInitializeContextFromSid 函式和 LsaLogonUser 函式),可簡化 TGGAU 屬性的讀取和解譯。 因此,使用這些函式的應用程式可能不知不覺會讀取 TGGAU 屬性。
若要讓應用程式能夠直接讀取此屬性或間接讀取這個屬性(透過 API 使用),應用程式執行的安全性內容必須已授與用戶物件和計算機物件上 TGGAU 物件的讀取許可權。 您不預期應用程式會假設應用程式可以存取 TGGAU。 因此,當拒絕存取時,您可以預期應用程式不會成功。 在此情況下,您(使用者)可能會收到錯誤訊息或記錄專案,說明嘗試讀取這項資訊時拒絕存取權,並提供如何取得存取權的指示(如本文稍後所述)。
數個現有的應用程式取決於 TGGAU 所提供的資訊,因為根據預設,Microsoft Windows NT 4.0 和舊版作業系統中提供的資訊。 因此,Microsoft Windows 2000 和 Windows Server 2003 操作系統上,TGGAU 屬性的讀取許可權會授與 Windows 2000 相容存取 群組。
對於使用現有應用程式的網域,您可以將這些應用程式執行的安全性內容新增至 Windows 2000 相容存取 群組,以處理這些應用程式。 相反地,您可以在建立網域時,於 DCPromo 程式期間選取 [與 Windows 2000 伺服器 相容的許可權] 選項。 (在 Windows Server 2003 上,此選項的措辭如下:「 與 Windows 2000 伺服器作業系統相容的許可權」。此選取專案會將 Everyone 群組新增至 Windows 2000 相容存取 群組,藉此將 TGGAU 屬性和許多其他網域對象的讀取許可權授 與 Everyone 群組。
建立新的 Windows Server 2003 網域時,預設存取相容性選取範圍是 [僅與 Windows 2000 或 Windows Server 2003 操作系統相容的許可權]。 設定此選項時, 預先 Windows 2000 相容性存取 群組只會包含已驗證的使用者內建安全性識別碼,而且物件的 TGGAU 屬性讀取許可權有限。 在此情況下,除非執行應用程式的帳戶具有網域系統管理員許可權或類似的用戶權力,否則需要存取 TGGAU 群組的應用程式會遭到拒絕。
讓應用程式讀取 TGGAU 屬性
為了簡化將 Token-groups-global-and-universal (TGGAU) 屬性的讀取存取權授與必須讀取屬性的使用者的程式,Windows Server 2003 引進 Windows 授權存取 (WAA) 群組。
在 Windows Server 2003 網域的新安裝上,WAA 群組會授與用戶物件和群組物件上讀取 TGGAU 屬性的存取權。
Windows 2000 網域
如果網域處於 Windows 2000 前相容性存取模式, 則 Everyone 群組在使用者帳戶物件和電腦帳戶物件上具有 TGGAU 屬性的讀取許可權。 在此模式中,應用程式和函式可以存取 TGGAU。
如果網域不在 Windows 2000 之前的相容性存取模式中,您可能必須讓特定應用程式讀取 TGGAU。 由於 Windows 授權存取群組不存在於 Windows 2000 上,因此建議您基於此目的建立網域本地組,並將需要存取 TGGAU 屬性的使用者或計算機帳戶新增至該群組。 此群組必須授與用戶對象、計算機物件和物件上iNetOrgPerson
屬性的存取tokenGroupsGlobalAndUniversal
權。
混合模式網域和升級的網域
將 Windows Server 2003 域控制器新增至 Windows 2000 網域時,不會變更先前選取的存取相容性選取專案。 因此,升級至 Windows Server 2003 且處於 Windows 2000 前相容性存取模式的混合模式網域和網域會繼續在 Windows 2000 前相容性存取群組中擁有 Everyone 群組。 此外, [每個人] 群組仍可存取 TGGAU 屬性。 在此模式中,應用程式和函式可以存取 TGGAU。
如果混合模式網域不在 Windows 2000 前相容性存取模式中,您可以透過 WAA 群組來授與許可權:
- 當 Windows Server 2003 域控制器升級為浮動單一主機 Operations Server 時,會自動建立 WAA 群組。
- WAA 群組不會在混合模式網域和升級網域上自動授與 TGGAU 屬性的存取權。
在 Windows 授權存取 (WAA) 群組具有 TGGAU 屬性的存取權之後,您可以將需要存取權的帳戶放在 WAA 群組中。
新的 Windows Server 2003 網域
如果網域處於 Windows 2000 前相容性存取模式, 則 Everyone 群組在使用者帳戶物件和電腦帳戶物件上具有 TGGAU 屬性的讀取許可權。 在此模式中,應用程式和函式可以存取 TGGAU。
如果網域不在 Windows 2000 前相容性存取模式中,請將 新增至 WAA 群組需要存取 TGGAU 的帳戶。 在 Windows Server 2003 的新安裝中,WAA 群組已經具有使用者對象和計算機物件上 TGGAU 的讀取許可權。