模擬層級
如果模擬成功,表示用戶端已同意讓伺服器成為用戶端。 模擬程度不同,稱為模擬 層級,並指出模擬用戶端時提供給伺服器的授權量。
目前有四個模擬層級: 匿名、 識別、 模擬和 委派。 下列清單會簡短描述每個模擬層級:
-
匿名 (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 上設定模擬層級。
設定模擬層級
有兩種方式可以設定模擬層級:
- 用戶端可以透過對 CoInitializeSecurity的呼叫,將它設定為整個進程。
- 用戶端可以透過呼叫 IClientSecurity::SetBlanket (或協助程式函式 CoSetProxyBlanket) ,在遠端物件的介面上設定 Proxy 層級安全性。
您可以透過dwImpLevel參數,將適當的RPC_C_IMP_LEVEL_xxx值傳遞至CoInitializeSecurity或CoSetProxyBlanket來設定模擬層級。
不同的驗證服務支援委派層級模擬至不同的範圍。 例如,NTLMSSP 支援跨執行緒和跨進程委派層級模擬,但不支援跨電腦。 另一方面,Kerberos 通訊協定支援跨電腦界限的委派層級模擬,而 Schannel 不支援委派層級的任何模擬。 如果您在模擬層級有 Proxy,而且想要將模擬層級設定為委派,您應該使用模擬層級以外的每個參數的預設常數呼叫 SetBlanket 。 COM 會在本機選擇 NTLM,而 Kerberos 通訊協定會在 Kerberos 通訊協定運作) 時從遠端 (。
相關主題