用戶端模擬
當伺服器必須將用戶端要求傳遞至其他伺服器進程或作系統時,模擬在分散式運算環境中很有用。 在此情況下,伺服器會模擬用戶端的安全性內容。 然後,其他伺服器進程可以處理要求,就像原始用戶端所做的一樣。
例如,用戶端向伺服器 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 進行另一個網路呼叫。
注意
模擬 一詞代表兩個重疊的意義。 仿真的第一個意義是代理用戶端的一般程式。 第二個意義是稱為仿真的特定模擬層級。 文字的內容通常會釐清意義。