用戶端模擬
當伺服器必須將用戶端要求傳遞至其他伺服器進程或作業系統時,模擬在分散式運算環境中很有用。 在此情況下,伺服器會模擬用戶端的安全性內容。 其他伺服器進程接著可以處理要求,就像原始用戶端所做的一樣。
例如,用戶端會對伺服器 A 提出要求。如果伺服器 A 必須查詢伺服器 B 以完成要求,伺服器 A 會模擬用戶端安全性內容,並代表用戶端向伺服器 B 提出要求。 伺服器 B 會使用原始用戶端的安全性內容,而不是伺服器 A 的安全性身分識別,以判斷是否要完成工作。
伺服器會呼叫 RpcImpersonateClient ,以使用用戶端安全性內容覆寫伺服器執行緒的安全性。 工作完成之後,伺服器會呼叫 RpcRevertToSelf 或 RpcRevertToSelfEx 來還原為伺服器執行緒定義的安全性內容。
系結時,用戶端可以指定安全性的品質資訊,以指定伺服器如何模擬用戶端。 例如,其中一個設定可讓用戶端指定不允許伺服器模擬伺服器。 如需詳細資訊,請參閱 服務品質。
模擬原始用戶端時呼叫其他伺服器的功能稱為 委派。 使用委派時,模擬用戶端的伺服器可以呼叫另一部伺服器,而且可以使用用戶端的認證進行網路呼叫。 也就是說,從第二部伺服器的觀點來看,來自第一部伺服器的要求與來自用戶端的要求不區分。 並非所有安全性提供者都支援委派。 Microsoft 僅提供一個支援委派的安全性提供者:Kerberos。
委派可能是危險功能,因為用戶端在遠端程序呼叫期間提供伺服器的許可權。 這就是為什麼 Kerberos 只有在要求相互驗證時,才允許使用模擬層級委派的呼叫。 網域管理員可以限制發出委派模擬層級呼叫的電腦,以防止用戶端對可能濫用其認證的伺服器進行呼叫。
委派規則有一個例外:使用 ncalrpc的呼叫。 當進行這些呼叫時,即使指定模擬的模擬層級,伺服器仍會取得委派許可權。 也就是說,伺服器可以代表用戶端呼叫其他伺服器。 這僅適用于一個遠端呼叫。 例如,如果用戶端 A 使用 ncalrpc 本機伺服器 LB 呼叫本機伺服器 LB,則可以模擬和呼叫遠端伺服器 RB。 RB 能夠代表用戶端 A 採取行動,但只能在執行 RB 的遠端電腦上執行。 除非 LB 在呼叫 RB 時指定模擬層級的委派,否則無法對遠端電腦 C 進行另一個網路呼叫。
注意
「 模擬 」一詞代表兩個重迭的意義。 模擬的第一個意義是代表用戶端執行的一般程式。 第二個意義是稱為模擬的特定模擬層級。 文字的內容通常會厘清意義。