AuthzInitializeContextFromSid 函式 (authz.h)

AuthzInitializeContextFromSid 函式會從使用者安全性識別碼建立使用者模式用戶端內容, (SID) 。 網域 SID 會從 Active Directory 擷取令牌群組屬性。

注意 可能的話,請呼叫 AuthzInitializeContextFromToken 函式,而不是 AuthzInitializeContextFromSid。 如需詳細資訊,請參閱<備註>。

 

語法

AUTHZAPI BOOL AuthzInitializeContextFromSid(
  [in]           DWORD                         Flags,
  [in]           PSID                          UserSid,
  [in, optional] AUTHZ_RESOURCE_MANAGER_HANDLE hAuthzResourceManager,
  [in]           PLARGE_INTEGER                pExpirationTime,
  [in]           LUID                          Identifier,
  [in, optional] PVOID                         DynamicGroupArgs,
  [out]          PAUTHZ_CLIENT_CONTEXT_HANDLE  phAuthzClientContext
);

參數

[in] Flags

定義下列旗標。

從 Windows 8 和 Windows Server 2012 開始,當您在遠端內容句柄上呼叫此函式時,上限 16 位必須是零。

意義
0 (0x0)
預設值。

AuthzInitializeContextFromSid 嘗試藉由執行 S4U 登入來擷取使用者的令牌群組資訊。

如果使用者的網域或呼叫計算機不支援 S4U 登入, AuthzInitializeContextFromSid 會查詢用戶帳戶物件以取得群組資訊。 直接查詢帳戶時,會省略代表登入特性的某些群組,例如網路、互動式、匿名、網路服務或本機服務。 應用程式可以藉由實作 AuthzComputeGroupsCallback 函式或呼叫 AuthzAddSidsToContext 函式來明確新增這類群組 SID。

AUTHZ_SKIP_TOKEN_GROUPS
2 (0x2)
導致 AuthzInitializeContextFromSid 略過所有群組評估。 使用此旗標時,傳回的內容只包含 UserSid 參數所指定的SID。 指定的 SID 可以是任意或應用程式特定的 SID。 實作 AuthzComputeGroupsCallback 函式或呼叫 AuthzAddSidsToContext 函式,即可將其他 SID 新增至此內容。
AUTHZ_REQUIRE_S4U_LOGON
4 (0x4)
如果 Windows Services For User 無法擷取令牌群組資訊, AuthzInitializeContextFromSid 就會失敗。

Windowsxp: 不支援此旗標。

AUTHZ_COMPUTE_PRIVILEGES
8 (0x8)
導致 AuthzInitializeContextFromSid 擷取新內容的許可權。 如果此函式執行 S4U 登入,它會從令牌擷取許可權。 否則,函式會從內容中的所有 SID 擷取許可權。

[in] UserSid

將建立客戶端內容之使用者的 SID。 除非使用AUTHZ_SKIP_TOKEN_GROUPS旗標,否則這必須是有效的使用者或計算機帳戶。

[in, optional] hAuthzResourceManager

建立此客戶端內容的 Resource Manager 句柄。 此句柄會儲存在用戶端內容結構中。

從 Windows 8 和 Windows Server 2012 開始,資源管理員可以是本機或遠端,而且可藉由呼叫 AuthzInitializeRemoteResourceManager 函式來取得。

[in] pExpirationTime

令牌的到期日期和時間。 如果未傳遞任何值,令牌永遠不會過期。 目前不會強制執行到期時間。

[in] Identifier

資源管理員的特定標識碼。 目前未使用此參數。

[in, optional] DynamicGroupArgs

要傳遞至計算動態群組之回呼函式的參數指標。 如果未將動態參數傳遞至回呼函式,這個參數可以是 NULL

從 Windows 8 和 Windows Server 2012 開始,如果資源管理員是遠端,此參數必須是 NULL。 否則,將會設定ERROR_NOT_SUPPORTED。

[out] phAuthzClientContext

AuthzInitializeContextFromSid 函式所建立之用戶端內容的句柄指標。 當您完成使用句柄時,請呼叫 AuthzFreeContext 函式來釋放它。

傳回值

如果函式成功,函式會傳回非零。

如果函式失敗,它會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

可能的話,請呼叫 AuthzInitializeContextFromToken 函式,而不是 AuthzInitializeContextFromSidAuthzInitializeContextFromSid 嘗試擷取登入令牌中可用的資訊,而客戶端實際上已登入。 實際的登入令牌提供詳細資訊,例如登入類型和登入屬性,並反映用於登入的驗證套件行為。 AuthzInitializeContextFromToken 所建立的用戶端內容會使用登入令牌,產生的用戶端內容比 AuthzInitializeContextFromSid 所建立的用戶端內容更完整且精確。

此函式只會解析有效的使用者 SID。

Windowsxp: 除非) 使用AUTHZ_SKIP_TOKEN_GROUPS旗標,否則此函式會解析有效使用者和群組 S (ID 的群組成員資格。 支援解析群組 SID 的成員資格,可能會改變或無法在後續版本中使用。

此函式會呼叫 AuthzComputeGroupsCallback 回 呼函式,以將 SID 新增至新建立的內容。

重要 應用程式不應該假設呼叫內容具有使用此函式的許可權。 AuthzInitializeContextFromSid 函式會讀取呼叫中所指定 SID 的 tokenGroupsGlobalAndUniversal 屬性,以判斷目前使用者的群組成員資格。 如果使用者的對象位於 Active Directory 中,呼叫內容必須具有用戶物件上 tokenGroupsGlobalAndUniversal 屬性的讀取許可權。 建立新的網域時,預設存取相容性選取專案是 與 Windows 2000 和 Windows Server 2003 操作系統相容的許可權。 設定此選項時, Pre-Windows 2000 相容存取 群組只會包含 已驗證的用戶 內建安全性標識碼。 因此,應用程式可能無法存取 tokenGroupsGlobalAndUniversal 屬性;在此情況下, AuthzInitializeContextFromSid 函式會失敗並ACCESS_DENIED。 使用此函式的應用程式應該正確處理此錯誤,並提供支援的檔案。 若要簡化授與帳戶查詢使用者群組信息的許可權,請新增需要查詢 Windows 授權存取群組資訊的帳戶。
 

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 authz.h
程式庫 Authz.lib
Dll Authz.dll
可轉散發套件 Windows XP 上的 Windows Server 2003 系統管理工具套件

另請參閱

允許匿名存取

AuthzFreeContext

基本 存取控制 函式