RPC_SECURITY_QOS_V3_W結構 (rpcdce.h)
RPC_SECURITY_QOS_V3結構會定義系結控制碼上的第 3 版安全性服務品質設定。 如需 Windows 版本的版本可用性,請參閱。
語法
typedef struct _RPC_SECURITY_QOS_V3_W {
unsigned long Version;
unsigned long Capabilities;
unsigned long IdentityTracking;
unsigned long ImpersonationType;
unsigned long AdditionalSecurityInfoType;
union {
RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
} u;
void *Sid;
} RPC_SECURITY_QOS_V3_W, *PRPC_SECURITY_QOS_V3_W;
成員
Version
所使用的 RPC_SECURITY_QOS 結構版本。 本主題記載 RPC_SECURITY_QOS 結構的第 3 版。 如需其他版本,請參閱 RPC_SECURITY_QOS、 RPC_SECURITY_QOS_V2 和 RPC_SECURITY_QOS_V4,以及 RPC_SECURITY_QOS_V5 。
Capabilities
提供給應用程式的安全性服務。 功能是一組旗標,可使用位 OR 運算子合併。
值 | 意義 |
---|---|
|
不需要任何提供者特定功能時使用。 |
|
指定此旗標會導致 RPC 執行時間向安全性提供者要求相互驗證。 某些安全性提供者不支援相互驗證。 如果安全性提供者不支援相互驗證,或無法建立伺服器的身分識別,則這類伺服器的遠端程序呼叫會失敗,並出現錯誤RPC_S_SEC_PKG_ERROR。
注意 RPC 依賴 SSP 來指出已成功交涉哪些安全性選項;RPC 會失敗任何 SSP 回報無法交涉選項的呼叫。 不過,某些安全性提供者已知會報告選項的成功交涉,即使選項未成功交涉也一般。 例如,NTLM 會針對回溯相容性原因報告相互驗證的成功交涉,即使它不支援相互驗證也一樣。 檢查所使用的特定 SSP,以判斷其與安全性選項相關的行為。
|
|
目前未實作。 |
|
接受用戶端的認證,即使憑證授權單位單位 (CA) 不在伺服器的受信任 CA 清單中也一樣。 此常數僅供 SCHANNEL SSP 使用。 |
|
指定時,此旗標會指示用戶端上的 RPC 執行時間忽略錯誤,以建立支援委派的安全性內容。 一般而言,如果用戶端要求委派,且安全性系統無法建立支援委派的安全性內容,則會傳回錯誤RPC_S_SEC_PKG_ERROR;指定這個旗標時,不會傳回任何錯誤。
注意 不支援 Windows XP 和舊版用戶端版本,在 Windows 2000 和舊版伺服器版本上不受支援。
|
|
指定時,這個旗標會指定 RPC 伺服器是進行 RPC 呼叫之電腦的本機伺服器。 在此情況下,RPC 會指示端點對應程式只挑選 ServerPrincName 或 Sid 成員中所指定主體所註冊的端點, (這些成員只能在 RPC_SECURITY_QOS_V3、 RPC_SECURITY_QOS_V4和 RPC_SECURITY_QOS_V5) 。 如需詳細資訊,請參閱「備註」。
注意 不支援 Windows XP 和舊版用戶端版本,在 Windows 2000 和舊版伺服器版本上不受支援。
|
IdentityTracking
設定內容追蹤模式。 應設定為下表所示的其中一個值。
值 | 意義 |
---|---|
|
安全性內容只會建立一次,而且在整個通訊期間永遠不會修改,即使用戶端變更也一樣。 如果未指定 RPC_SECURITY_QOS_V3 ,這是預設行為。 |
|
每當用戶端權杖中的 ModifiedId 變更時,就會修改內容。 所有通訊協定都會使用 ModifiedId (請參閱附注) 。
Windows 2000: 所有遠端通訊協定都會 (ncalrpc 以外的所有通訊協定) 使用 AuthenticationID,也稱為 LogonId 來追蹤用戶端身分識別中的變更。 ncalrpc通訊協定使用 ModifiedId。 |
ImpersonationType
伺服器進程可以模擬用戶端的層級。
值 | 意義 |
---|---|
|
使用預設模擬層級。 |
|
用戶端不會提供識別資訊給伺服器。 伺服器無法模擬用戶端或識別用戶端。 許多伺服器會拒絕使用此模擬類型的呼叫。 |
|
伺服器可以取得用戶端的身分識別,並模擬用戶端來執行存取控制 List (ACL) 檢查,但無法模擬用戶端。 如需詳細資訊 ,請參閱模擬層級 。
注意 某些安全性提供者可能會將此模擬類型視為相當於RPC_C_IMP_LEVEL_IMPERSONATE。
|
|
伺服器可以在其本機系統上模擬用戶端的安全性內容,但無法在遠端系統上模擬。 |
|
伺服器代表用戶端動作時可以模擬用戶端的安全性內容。 伺服器也可以代表用戶端對其他伺服器進行撥出電話。 伺服器可以在其他電腦上使用用戶端的安全性內容,以用戶端身分存取本機和遠端資源。 |
AdditionalSecurityInfoType
指定 U 等位中存在的其他認證類型。 支援下列常數:
支援的常數 | 意義 |
---|---|
|
U等位中不會傳遞任何其他認證。 |
|
u等位的HttpCredentials成員會指向RPC_HTTP_TRANSPORT_CREDENTIALS結構。 只有當通訊協定序列 ncacn_HTTP時,才能使用這個值。 任何其他通訊協定序列會傳回RPC_S_INVALID_ARG。 |
u
u.HttpCredentials
以 RPC_HTTP_TRANSPORT_CREDENTIALS 結構的形式傳遞至 RPC 的其他一組認證。 當 AdditionalSecurityInfoType 成員設定為RPC_C_AUTHN_INFO_TYPE_HTTP時使用。
Sid
指向 SID) (安全性識別碼。 SID 是 ServerPrincName 成員的替代方案,而且只能指定一個。 如果安全性提供者是 SCHANNEL SSP, 則 Sid 成員無法設定為非Null 。 某些通訊協定序列會在內部使用 Sid 的安全性,有些則使用 ServerPrincName。 例如, ncalrpc 會在內部使用 Sid ,而且如果呼叫端同時知道 SID 和 ServerPrincName,使用 ncalrpc 的呼叫可能會更快完成,在某些情況下如果傳遞 SID。 相反地,ncacn_ 和 ncadg_ 通訊協定序列會在內部使用ServerPrincName,因此在提供 ServerPrincName時,可以更快速地執行呼叫。
備註
下列清單會定義各種 Windows 作業系統上 QOS 版本的可用性:
- 版本 1:Windows 2000 和更新版本。
- 第 2 版:Windows XP Service Pack 1 (SP1) 和更新版本。
- 版本 3:Windows Server 2003 和更新版本。
- 版本 4:Windows Vista 和更新版本。
- 版本 5:Windows 8 和更新版本。
用戶端安全性函式 RpcBindingInqAuthInfoEx 和 RpcBindingSetAuthInfo 會使用 RPC_SECURITY_QOS 結構來查詢系結控制碼的安全性服務品質或設定。
RPC 支援 Windows XP 和舊版用戶端版本不支援的RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT提示 (,不支援 Windows 2000 和舊版伺服器版本) 。 只有在使用動態端點和相互驗證時,才會使用此提示。 此外,不支援ncadg_ 通訊協定序列。 如果此旗標用於 ncadg_ 通訊協定序列,或不使用相互驗證,則會從RpcBindingSetAuthInfoEx函式呼叫傳回RPC_S_INVALID_ARG。 此旗標的設計目的是防止拒絕服務攻擊。 使用此旗標會強制 RPC 執行時間只針對 ServerPrincName 或 Sid 成員中指定的主體所註冊的端點要求端點對應程式。 這可防止本機電腦上的攻擊者嘗試讓您的 RPC 用戶端連線到已在端點對應器中註冊的詐騙端點。 請注意,由於攻擊只是本機 (,例如來自許多使用者) 的終端機伺服器電腦,旗標也適用于本機進行的 RPC 呼叫。
需求
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | rpcdce.h (包含 Rpc.h) |