模擬層級

如果模擬成功,表示用戶端已同意讓伺服器成為用戶端。 模擬程度不同,稱為模擬 層級,並指出模擬用戶端時提供給伺服器的授權量。

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

匿名 (RPC_C_IMP_LEVEL_ANONYMOUS)

用戶端對伺服器而言是匿名。 伺服器處理序可以模擬用戶端,但模擬語彙基元 (Token) 並不包含用戶端的任何資訊。 只有本機處理序間通訊傳輸才支援此層級。 所有其他傳輸都會以無訊息方式升級此層級以識別。

識別 (RPC_C_IMP_LEVEL_IDENTIFY)

系統預設層級。 伺服器可以取得用戶端的識別 (Identity),而且可以模擬用戶端來做 ACL 檢查。

模擬 (RPC_C_IMP_LEVEL_IMPERSONATE)

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

委派 (RPC_C_IMP_LEVEL_DELEGATE)

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

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

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

藉由選擇模擬層級,用戶端會告知伺服器模擬用戶端的距離。 用戶端會在用來與伺服器通訊的 Proxy 上設定模擬層級。

設定模擬層級

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

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

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

委派和模擬