在界面代理層級設定安全性
有時候用戶端需要對特定介面呼叫的安全性進行更細緻的控制。 例如,安全性可能會設定為處理程式的低層級,但對特定介面的呼叫可能需要較高的驗證層級,例如加密。 IClientSecurity 介面的方法可讓用戶端藉由控制介面 Proxy 層級的安全性設定,來變更與呼叫特定介面相關聯的安全性設定。
客戶端可以查詢現有物件來尋找 IClientSecurity,然後呼叫 IClientSecurity::QueryBlanket 方法來找出特定介面代理目前的安全性設定為何。 IClientSecurity::SetBlanket 方法可用來修改對象上個別介面 Proxy 的安全性設定,然後再呼叫其中一個介面的方法。 新的設定會套用至這個特定介面的任何未來呼叫端。 IClientSecurity::CopyProxy 方法提供一種方式,讓客戶端複製介面 Proxy,讓複製上的後續呼叫 SetBlanket 不會影響原始 Proxy 的呼叫者。
SetBlanket 通常用來將特定介面 Proxy 的驗證層級提升為較高層級的安全性保護。 不過,在某些情況下,降低特定介面 Proxy 的驗證層級可能也很有幫助。 例如,假設進程的預設驗證層級是RPC_C_AUTHN_LEVEL_NONE以外的一些值,而用戶端和伺服器位於不信任彼此的個別網域中。 在此情況下,除非用戶端呼叫 setBlanket setBlanket,以將驗證層級降低為RPC_C_AUTHN_LEVEL_NONE,否則對伺服器的呼叫將會失敗。
使用 Proxy 管理員所提供的 IClientSecurity 預設實作的用戶端,可以直接呼叫 CoQueryProxyBlanket、CoSetProxyBlanket,以及 CoCopyProxy 協助程式函式,而不是直接呼叫 IClientSecurity 方法。 輔助函數可以簡化程式碼,但比直接呼叫相應的 IClientSecurity 方法效能稍差。
在本地,Proxy 管理員會為用戶端實作 IClientSecurity 介面。 某些自訂封送處理物件可能不支援 IClientSecurity。
IClientSecurity 適用於所有支援的驗證服務(目前 NTLMSSP、安全通道和 Kerberos v5 通訊協定)。
相關主題