RPC_BINDING_HANDLE_SECURITY_V1_A結構 (rpcdce.h)
RPC_BINDING_HANDLE_SECURITY_V1 結構包含用來建立 RPC 系結句柄的基本安全性選項。
語法
typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
unsigned long Version;
unsigned char *ServerPrincName;
unsigned long AuthnLevel;
unsigned long AuthnSvc;
SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
RPC_SECURITY_QOS *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;
成員
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 將不會驗證伺服器,因為它使用目前的線程身分識別進行連線。 在此情況下,身分識別追蹤是靜態的,模擬類型會設定為 “Impersonate”,而驗證層級會設定為 “Privacy”。
- 針對通訊協議順序ncacn_np,RPC也會使用傳輸層級安全性。 如果呼叫是遠端的,RPC 會使用 Windows 檔系統重新導向器所提供的安全性機制,而且沒有相互驗證。 在此情況下,身分識別是目前的線程身分識別、身分識別追蹤狀態為靜態、模擬類型設定為「模擬」,而驗證層級是由遠端計算機的原則所決定。
如果呼叫是本機的,RPC 會使用命名管道文件系統所提供的安全性機制 (NPFS) ,而且也沒有任何相互驗證。 在此情況下,身分識別是目前的線程身分識別,或透過伺服器的 「net use」 命令所建立的任何身分識別。 身分識別追蹤狀態是動態的,模擬類型會設定為 “Impersonate”,而驗證層級會設定為 “Privacy”。
- 針對通訊協定序列ncacn_ip_tcp,ncacn_ip_udp和ncacn_http, 當 Security 設定為 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) |