共用方式為


RPC_SECURITY_QOS 結構 (rpcdce.h)

RPC_SECURITY_QOS結構會在系結句柄上定義安全性服務質量設定。 如需 Windows 版本的版本可用性,請參閱。

語法

typedef struct _RPC_SECURITY_QOS {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;

成員

Version

所使用的 RPC_SECURITY_QOS 結構版本。 本主題記載 RPC_SECURITY_QOS 結構第1版。 如需其他版本,請參閱RPC_SECURITY_QOS_V2RPC_SECURITY_QOS_V3、RPC_SECURITY_QOS_V4RPC_SECURITY_QOS_V5

Capabilities

提供給應用程式的安全性服務。 功能是一組旗標,可使用位 OR 運算子結合。

意義
RPC_C_QOS_CAPABILITIES_DEFAULT
不需要任何提供者特定功能時使用。
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
指定此旗標會導致 RPC 執行時間向安全性提供者要求相互驗證。 某些安全性提供者不支援相互驗證。 如果安全性提供者不支援相互驗證,或無法建立伺服器的身分識別,則這類伺服器的遠端過程調用會失敗,併發生錯誤RPC_S_SEC_PKG_ERROR。
注意 RPC 依賴 SSP 來指出已成功交涉哪些安全性選項;RPC 接著會失敗任何安全性服務提供者 (SSP) 無法交涉選項的呼叫。 不過,某些安全性提供者已知會報告選項的成功交涉,即使未成功交涉選項也一定。 例如,NTLM 會針對回溯相容性原因回報相互驗證的成功交涉,即使它不支援相互驗證也一樣。 檢查用來判斷其安全性選項行為的特定 SSP。
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
目前未實作。
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
即使證書頒發機構單位 (CA) 不在伺服器信任 CA 清單中,仍接受客戶端的認證。 此常數僅供 SCHANNEL SSP 使用。
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
指定時,此旗標會指示用戶端上的 RPC 執行時間忽略錯誤,以建立支援委派的安全性內容。 一般而言,如果用戶端要求委派,且安全性系統無法建立支援委派的安全性內容,則會傳回錯誤RPC_S_SEC_PKG_ERROR;指定此旗標時,不會傳回任何錯誤。
注意 Windows XP 和舊版用戶端版本不支援,Windows 2000 和舊版伺服器版本不支援。
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
此旗標會指定伺服器是進行 RPC 呼叫之電腦的本機伺服器。 在此情況下,RPC 會指示端點對應程式只挑選 ServerPrincNameSid 成員中指定的主體所註冊的端點, (這些成員只能在 RPC_SECURITY_QOS_V3RPC_SECURITY_QOS_V4RPC_SECURITY_QOS_V5) 。 如需詳細資訊,請參閱「備註」。
注意 Windows XP 和舊版用戶端版本不支援,Windows 2000 和舊版伺服器版本不支援。
 
RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY
如果設定,RPC 運行時間會使用 SChannel SSP 來執行智慧卡型驗證,而不會顯示密碼編譯服務提供者 (CSP) 的 PIN 提示對話方塊。

RpcBindingSetAuthInfoEx 的呼叫中, AuthIdentity 參數必須是 包含 下列SEC_WINNT_AUTH_IDENTITY結構:

  • 用戶 必須是 SCHANNEL_CRED 結構的指標
  • UserLength 必須是 0
  • 網域 必須是 NULL
  • DomainLength 必須是 0
  • 密碼 可能是憑證 PIN 或 NULL。 如果 PasswordPIN,PasswordLength 必須是 PIN 的正確長度,如果 PasswordNULL,PasswordLength 必須為 0
如果RPC_C_QOS_CAPABILITIES_SCHANNEL_FULL_AUTH_IDENTITY旗標用於 SChannel 以外的任何 SSP,或如果SEC_WINNT_AUTH_IDENTITY的成員不符合上述專案,則 RpcBindingSetAuthInfoEx 會傳回RPC_S_INVALID_ARG

IdentityTracking

設定內容追蹤模式。 應該設定為下表所示的其中一個值。

意義
RPC_C_QOS_IDENTITY_STATIC
即使用戶端變更安全性內容,安全性內容只會建立一次,而且永遠不會在整個通訊期間修改。 如果未指定 RPC_SECURITY_QOS ,這是預設行為。
RPC_C_QOS_IDENTITY_DYNAMIC
每當用戶端令牌中的ModifiedId變更時,就會修改內容。 所有通訊協議都會使用ModifiedId (,請參閱附註) 。

Windows 2000: 所有遠端通訊協定 (ncalrpc 以外的所有通訊協定) 使用 AuthenticationID 也稱為 LogonId 來追蹤用戶端身分識別中的變更。 ncalrpc 通訊協定使用ModifiedId。

ImpersonationType

伺服器進程可以模擬客戶端的層級。

意義
RPC_C_IMP_LEVEL_DEFAULT
使用預設模擬層級。
RPC_C_IMP_LEVEL_ANONYMOUS
用戶端不會將識別資訊提供給伺服器。 伺服器無法模擬客戶端或識別用戶端。 許多伺服器會拒絕使用此模擬類型的呼叫。
注意 某些安全性提供者可能會將此模擬類型視為相當於RPC_C_IMP_LEVEL_IMPERSONATE。 從 Windows 安全性提供者,只有在與 ncalrpc 以外的通訊協定序列搭配使用時,RPC_C_AUTHN_WINNT 才能完成此作業。 它也由RPC_C_AUTHN_GSS_NEGOTIATE、RPC_C_AUTHN_GSS_SCHANNEL和RPC_C_AUTHN_GSS_KERBEROS來完成。
 
RPC_C_IMP_LEVEL_IDENTIFY
伺服器可以取得用戶端的身分識別,並模擬客戶端來執行 存取控制 清單 (ACL) 檢查,但無法模擬用戶端。 如需詳細資訊 ,請參閱模擬層級
注意 某些安全性提供者可能會將此模擬類型視為相當於RPC_C_IMP_LEVEL_IMPERSONATE。 從 Windows 安全性提供者,只有在與 ncalrpc 以外的通訊協定序列搭配使用時,RPC_C_AUTHN_WINNT 才能完成此作業。 它也由RPC_C_AUTHN_GSS_NEGOTIATE、RPC_C_AUTHN_GSS_SCHANNEL和RPC_C_AUTHN_GSS_KERBEROS來完成。
 
RPC_C_IMP_LEVEL_IMPERSONATE
伺服器可以在其本機系統上模擬用戶端的安全性內容,但無法在遠端系統上模擬。
RPC_C_IMP_LEVEL_DELEGATE
伺服器代表用戶端動作時可以模擬用戶端的安全性內容。 伺服器也可以代表用戶端對其他伺服器進行傳出呼叫。 伺服器可能會在其他電腦上使用用戶端的安全性內容,以用戶端身分存取本機和遠端資源。

備註

下列清單定義各種 Windows 作業系統上的 QOS 版本可用性:

  • 版本 1:Windows 2000 和更新版本。
  • 版本 2:Windows XP 搭配 Service Pack 1 (SP1) 和更新版本。
  • 版本 3:Windows Server 2003 和更新版本。
  • 版本 4:Windows Vista 和更新版本。
  • 版本 5:Windows 8 和更新版本。
Windows 版本也支援下層版本。 例如,Windows Server 2003 支援第 3 版,但也支援版本 1 和 2。

用戶端安全性功能 RpcBindingInqAuthInfoExRpcBindingSetAuthInfo 會使用 RPC_SECURITY_QOS 結構來查詢或設定系結句柄的安全性服務品質。

RPC 支援RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT提示。 只有在使用動態端點和相互驗證時,才會使用此提示。 此外, 不支援ncadg_ 通訊協定序列。 如果此旗標用於 ncadg_ 通訊協定序列,或不使用相互驗證,則會從 RpcBindingSetAuthInfoEx 函式呼叫傳回RPC_S_INVALID_ARG。 此旗標的設計目的是防止拒絕服務攻擊。 使用此旗標會強制 RPC 運行時間只針對 ServerPrincNameSid 成員中指定的主體所註冊的端點要求端點對應程式。 這可防止本機電腦上的攻擊者嘗試讓您的 RPC 用戶端連線到已在端點對應器中註冊的詐騙端點。 請注意,由於攻擊只是本機 (,例如來自許多使用者) 的終端機伺服器計算機,旗標也適用於本機進行的 RPC 呼叫。

注意 某些安全性提供者,例如 Kerberos,支援委派模擬類型。 在支援委派模擬類型的 Windows 版本上,如果用戶端要求委派,但安全性提供者無法提供委派,除非指定RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE旗標,否則呼叫會失敗並出現PRC_S_SEC_PKG_ERROR。
 

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 rpcdce.h (包含 Rpc.h)

另請參閱

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx