用戶端模擬和委派

在某些情況下,伺服器應用程式必須將用戶端的身分識別呈現給用戶端代表其存取的資源,通常會導致對用戶端的身分識別執行存取檢查或驗證。 在一定程度上,伺服器可以在用戶端的身分識別下採取行動,也就是稱為模擬客戶端的動作。

模擬是線程在安全性內容中執行的能力,與擁有線程的進程不同。 伺服器線程會使用代表客戶端認證的存取令牌,並使用此令牌來存取用戶端可以存取的資源。

使用模擬可確保伺服器能夠精確地執行用戶端可以執行的動作。 視用戶端有權執行的動作而定,對資源的存取可能會受到限制或擴充。

當您連接到資料庫時,您可以選擇讓伺服器模擬用戶端,讓資料庫可以自行驗證和授權用戶端。 或者,如果您的應用程式存取使用安全性描述元保護的檔案,並讓用戶端取得這些檔案中資訊的授權存取權,應用程式可以在存取檔案之前模擬用戶端。

如何實作模擬

模擬需要客戶端和伺服器參與(在某些情況下,系統管理員)。 客戶端必須指出其願意讓伺服器使用其身分識別,而且伺服器必須以程式設計方式明確假設用戶端的身分識別。 如需詳細資訊,請參閱 模擬 的用戶端需求主題和 模擬的伺服器端需求。

委派層級仿真的 管理員 要求

若要有效地使用最強大的模擬形式、 委派,也就是透過網路模擬客戶端,必須在 Active Directory 服務中正確設定用戶端和伺服器使用者帳戶以支援它(除了用戶端授與授權單位來執行委派層級模擬之外),如下所示:

  • 伺服器身分識別必須在 Active Directory 服務中標示為「受信任的委派」。
  • 用戶端身分識別不得在 Active Directory 服務中標示為「帳戶敏感且無法委派」。

這些組態功能可讓網域系統管理員高度控制委派,這是可取的,因為需要多少信任(因此需要安全性風險)。 如需委派的詳細資訊,請參閱 委派和模擬

隱形

除了用戶端透過模擬層級授與伺服器的許可權外,伺服器的遮蓋功能基本上會決定仿真的行為。 「遮蓋」會影響伺服器代表用戶端進行呼叫時實際呈現的身分識別,也就是其本身或用戶端的 。 如需詳細資訊,請參閱 遮蓋

效能影響

模擬可能會大幅影響效能和調整。 模擬呼叫上的用戶端通常比直接進行呼叫更昂貴。 以下是需要考慮的一些問題:

  • 以複雜模式傳遞身分識別的計算額外負荷,特別是啟用動態遮蓋時。
  • 在很多地方強制執行備援安全性檢查的一般複雜度,而不是只集中在中介層中。
  • 當開啟模擬用戶端時,無法跨多個用戶端重複使用資料庫連線之類的資源,這是一個非常大的調整障礙。

有時候問題的唯一有效解決方案是使用模擬,但應該仔細權衡此決定。 如需這些問題的進一步討論,請參閱 多層式應用程式安全性

已排入佇列的元件

佇列元件 不支持模擬。 當用戶端對佇列對佇列對佇列物件進行呼叫時,會實際對錄製器進行呼叫,這會將它封裝為訊息給伺服器的一部分。 接聽程式接著會從佇列讀取訊息,並將其傳遞至播放機,這會叫用實際的伺服器元件,並進行相同的方法呼叫。 因此,當伺服器收到呼叫時,原始用戶端令牌無法透過模擬來使用。 不過,使用 ISecurityCallContext 介面的程式設計安全性仍適用角色型安全性 如需詳細資訊,請參閱 佇列元件安全性

客戶端驗證

連結庫應用程式安全性

多層式應用程式安全性

程序設計元件安全性

角色型安全性 管理員

在 COM+ 中使用軟體限制原則