RPC_BINDING_HANDLE_SECURITY_V1_W 結構 (rpcdce.h)
RPC_BINDING_HANDLE_SECURITY_V1 結構包含用來建立 RPC 系結句柄的基本安全性選項。
語法
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_W {
unsigned long Version;
unsigned short *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_W *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_W, *PRPC_BINDING_HANDLE_SECURITY_V1_W;
成員
Version
這個結構的版本。 對於 RPC_BINDING_HANDLE_SECURITY_V1 ,這必須設定為1。
ServerPrincName
字串的指標,其中包含系結句柄所參考的伺服器主體名稱。 名稱和其語法的內容是由使用中的驗證服務所定義。
AuthnLevel
要在此系結句柄進行之遠程過程調用上執行的驗證層級。 如需 RPC 支援的驗證層級清單,請參閱 驗證層級常數。
如果 AuthnSvc 設定為 RPC_C_AUTHN_NONE,則此成員必須同樣設定為 RPC_C_AUTHN_NONE。
AuthnSvc
系結時要使用的驗證服務。
指定RPC_C_AUTHN_NONE,以關閉使用系結句柄進行之遠端過程調用的驗證。
如果指定RPC_C_AUTHN_DEFAULT,RPC 運行時間連結庫會針對使用系結句柄進行的遠端過程調用使用RPC_C_AUTHN_WINNT驗證服務。
如果 AuthnLevel 設定為 RPC_C_AUTHN_NONE,則此成員必須同樣設定為 RPC_C_AUTHN_NONE。
AuthIdentity
SEC_WINNT_AUTH_IDENTITY 結構,其中包含適用於所選驗證和授權服務的客戶端驗證和授權認證。
SecurityQos
RPC_SECURITY_QOS 結構,其中包含系結句柄的安全性服務質量設定。
備註
如果這個結構未傳遞至 RpcBindingCreate -- 也就是說,如果 RpcBindingCreate 的 Security 參數設定為 NULL,則會假設下列預設安全性行為:
- 針對通訊協定序列 ncalrpc (本機 RPC) ,RPC 將會使用傳輸層級安全性。 這表示 RPC 會使用 Windows 核心所提供的安全性機制來提供安全性,而 RPC 將不會驗證伺服器,因為它會使用目前的線程身分識別進行連線。 在此情況下,身分識別追蹤是靜態的,模擬類型會設定為 「模擬」,而驗證層級會設定為「隱私權」。
- 針對通訊協議順序ncacn_np,RPC也會使用傳輸層級安全性。 如果呼叫是遠端的,RPC 會使用 Windows 檔系統重新導向器所提供的安全性機制,而且沒有相互驗證。 在此情況下,身分識別是目前的線程身分識別、身分識別追蹤狀態為靜態、模擬類型設定為「模擬」,而驗證層級是由遠端計算機的原則決定。
如果呼叫是本機的,RPC 會使用命名管道文件系統所提供的安全性機制, (NPFS) ,而且也不會有相互驗證。 在此情況下,身分識別是目前線程身分識別,或透過伺服器的「net use」命令所建立的任何身分識別。 身分識別追蹤狀態是動態的,模擬類型會設定為 「Impersonate」,而驗證層級會設定為 「隱私權」。
- 針對通訊協定序列ncacn_ip_tcp,ncacn_ip_udp和ncacn_http, 當 [安全性 ] 設定為 NULL 時,不會使用任何安全性。 伺服器不會執行模擬,而且所有數據都會以純文本傳送。 為了提供數據的最大保護,應用程式必須一律提供安全性數據。
如果 RpcBindingCreate 的 Security 參數設定為 NULL,下表摘要說明不同通訊協定序列的預設安全性設定。
預設安全性設定 | ncalrpc | 本機ncacn_np | remote ncacn_np | ncacn_ip_tcp、ncacn_ip_udp和ncacn_http |
---|---|---|---|---|
安全性機制 | Windows 核心 | NPFS | 檔系統重新導向器 | 無 |
驗證等級 | 隱私權 | 隱私權 | 伺服器原則相依 | 無 |
相互驗證? | No | No | No | No |
模擬類型 | Impersonate | Impersonate | Impersonate | N/A |
身分識別追蹤類型 | 靜態 | 動態 | 靜態 | N/A |
僅有效? | 是 | 否 | N/A | N/A |
通話身分識別 | 目前的執行緒 | 目前的執行緒 | 目前的線程或「net use」設定 | N/A |
如果您藉由呼叫 RpcBindingCreate API 來建立快速系結句柄,在缺少特定安全性設定的情況下,ncalrpc 的預設身分識別追蹤是靜態的。
如果您要在應用程式中切換這兩個 API,您應該注意這兩個 API 的差異。
建立系結句柄之後,可以使用 RpcBindingSetAuthInfo 和 RpcBindingSetAuthInfoEx API 來變更以此結構設定的系結句柄設定。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
標頭 | rpcdce.h (包含 Rpc.h) |