模擬層級

如果模擬成功,表示用戶端已同意讓伺服器在某種程度上成為用戶端。 不同程度的模擬稱為 模擬層級,並指出模擬用戶端時,伺服器授與多少授權單位。

目前有四個模擬層級:匿名、識別模擬委派。 下列清單簡短說明每個模擬層級:

匿名 (RPC_C_IMP_LEVEL_ANONYMOUS)

用戶端對伺服器是匿名的。 伺服器進程可以模擬用戶端,但模擬令牌不包含用戶端的任何資訊。 只有本機進程間通訊傳輸才支援此層級。 所有其他傳輸都會以無訊息方式升級此層級來識別。

識別 (RPC_C_IMP_LEVEL_IDENTIFY)

系統預設層級。 伺服器可以取得用戶端的身分識別,而且伺服器可以模擬客戶端來執行 ACL 檢查。

模擬 (RPC_C_IMP_LEVEL_IMPERSONATE)

伺服器可以模擬用戶端的安全性內容,同時代表用戶端採取行動。 伺服器可以存取本機資源做為用戶端。 如果伺服器是本機伺服器,它可以以用戶端身分存取網路資源。 如果伺服器是遠端伺服器,它只能存取與伺服器位於相同電腦上的資源。

delegate (RPC_C_IMP_LEVEL_DELEGATE)

最強大的模擬層級。 選取此層級時,伺服器 (不論本機或遠端) 代表用戶端動作時可以模擬用戶端的安全性內容。 在模擬期間,客戶端的認證(本機和網路)都可以傳遞至任意數目的計算機。

若要讓模擬在委派層級運作,必須符合下列需求:

  • 客戶端必須將模擬層級設定為 RPC_C_IMP_LEVEL_DELEGATE。
  • 客戶端帳戶不得在 Active Directory 服務中標示為「帳戶敏感且無法委派」。
  • 伺服器帳戶必須標示為 Active Directory 服務中的「委派信任」屬性。
  • 裝載用戶端、伺服器和任何「下游」伺服器的計算機都必須在網域中執行。

藉由選擇模擬層級,用戶端會告訴伺服器模擬用戶端的可能程度。 用戶端會在用來與伺服器通訊的 Proxy 上設定模擬層級。

設定模擬層級

有兩種方式可以設定模擬層級:

您可以透過 dwImpLevel 參數,將適當的RPC_C_IMP_LEVEL_xxx值傳遞至 CoInitializeSecurity CoSetProxyBlanket 來設定模擬層級。

不同的驗證服務支援不同範圍的委派層級模擬。 例如,NTLMSSP 支援跨線程和跨進程委派層級模擬,但不支援跨計算機。 另一方面,Kerberos 通訊協定支援跨計算機界限的委派層級模擬,而 Schannel 不支援委派層級的任何模擬。 如果您在模擬層級有 Proxy,而且想要將模擬層級設定為委派,您應該使用模擬層級以外的每個參數的預設常數呼叫 SetBlanket COM 會在本機選擇NTLM,並從遠端選擇 Kerberos 通訊協定(Kerberos 通訊協定將正常運作時)。

委派和模擬