impersonateSecurityCoNtext 函式 (sspi.h)
ImpersonateSecurityCoNtext函式可讓伺服器使用先前透過呼叫AcceptSecurityCoNtext 取得的權杖來模擬用戶端, (General) 或QuerySecurityCoNtextToken。 此函式可讓應用程式伺服器做為用戶端,因此會強制執行所有必要的存取控制。
語法
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
[in] PCtxtHandle phContext
);
參數
[in] phContext
要模擬之內容的控制碼。 呼叫 AcceptSecurityCoNtext (General) 函式時,必須取得此控制碼。
傳回值
如果函式成功,函式會傳回SEC_E_OK。
如果函式失敗,它會傳回下列錯誤碼。
傳回碼 | 描述 |
---|---|
|
傳遞至函式的控制碼無效。 |
|
無法模擬用戶端。 |
|
這個值是由安全通道核心模式傳回,表示不支援此函式。 |
備註
伺服器應用程式需要模擬用戶端時,會呼叫 ImpersonateSecurityCoNtext 函式。 這麼做之前,伺服器必須已取得有效的內容控制碼。 若要取得內容控制碼,伺服器必須呼叫 AcceptSecurityCoNtext (General) ,才能將用戶端的傳入安全性權杖提交至安全性系統。 如果驗證輸入內容,伺服器就會取得內容控制碼。 函式會建立 模擬權杖 ,並允許執行緒或進程使用模擬內容來執行。
使用安全通道安全性支援提供者 (SSP) 時,伺服器應用程式必須在呼叫AcceptSecurityCoNtext (General) 時傳遞ASC_REQ_MUTUAL_AUTH旗標。 這可確保用戶端在 SSL/TLS 交握期間要求用戶端憑證。 收到用戶端憑證時,安全通道套件會驗證用戶端憑證,並嘗試將其對應至使用者帳戶。 當此對應成功時,就會建立用戶端使用者權杖,且此函式會成功。
當應用程式伺服器完成或需要還原自己的安全性內容時,應用程式伺服器必須呼叫RevertSecurityCoNtext函式。
ImpersonateSecurityCoNtext 不適用於所有平臺上的所有 安全性套件 。 一般而言,它只會在支援模擬的平臺和安全性套件上實作。 若要瞭解安全性套件是否支援模擬,請呼叫 QuerySecurityPackageInfo 函 式。
- 要求的權杖模擬層級小於 SecurityImpersonation,例如 SecurityIdentification 或 SecurityAnonymous。
- 呼叫端具有 SeImpersonatePrivilege 許可權。
- 呼叫端登入會話中的進程 (或其他進程,) 透過 LogonUser 或 LsaLogonUser 函式使用明確認證來建立權杖。
- 已驗證的身分識別與呼叫端相同。
Windowsxp: 在 Windows XP Service Pack 2 (SP2) 之前,不支援 SeImpersonatePrivilege 許可權。
需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | sspi.h (包含 Security.h) |
程式庫 | Secur32.lib |
Dll | Secur32.dll |