共用方式為


模擬層級 (授權)

SECURITY_IMPERSONATION_LEVEL列舉會定義四個模擬層級,以決定伺服器可以在用戶端內容中執行的作業。

模擬等級 描述
SecurityAnonymous 伺服器無法模擬或識別用戶端。
SecurityIdentification 伺服器可以取得用戶端的身分識別和許可權,但無法模擬用戶端。
SecurityImpersonation 伺服器可以在本機系統上模擬用戶端的安全性內容。
SecurityDelegation 伺服器可以在遠端系統上模擬用戶端的安全性內容。

 

具名管道、RPC 或 DDE 連線的用戶端可以控制模擬層級。 例如,具名管道用戶端可以呼叫 CreateFile 函式,以開啟具名管道的控制碼,並指定伺服器的模擬層級。

當具名管道、RPC 或 DDE 連線遠端時,會忽略傳遞至 CreateFile 以設定模擬層級的旗標。 在此情況下,用戶端的模擬層級是由伺服器啟用的模擬層級所決定,這是由目錄服務中伺服器帳戶上的旗標所設定。 例如,如果伺服器已啟用委派,即使傳遞至 CreateFile 的旗標指定識別模擬層級,用戶端的模擬層級也會設定為委派。

DDE 用戶端會使用 DdeSetQualityOfService 函式搭配 SECURITY_QUALITY_OF_SERVICE 結構來指定模擬層級。 SecurityImpersonation 層級是具名管道、RPC 和 DDE 伺服器的預設層級。 ImpersonateSelfDuplicateToken 和 DuplicateTokenEx函式可讓呼叫端指定模擬層級。 使用 GetTokenInformation 函式來擷取 存取權杖的模擬層級。

在 SecurityImpersonation 層級,大部分執行緒的動作都會發生線上程模擬權杖的安全性內容中,而不是在擁有線程的進程主要權杖中。 例如,如果模擬執行緒開啟 安全性實體物件,系統會使用模擬權杖來檢查執行緒的存取權。 同樣地,如果模擬執行緒建立新的物件,例如呼叫 CreateFile 函式,則新物件的擁有者是來自用戶端 存取權杖的預設擁有者。

不過,在下列情況下,系統會使用進程的主要權杖,而不是呼叫執行緒的模擬權杖:

  • 如果模擬執行緒呼叫 CreateProcess 函式,新進程一律會繼承進程的主要權杖。
  • 對於需要SE_TCB_NAME許可權的函式,例如 LogonUser 函式,系統一律會在進程的主要權杖中檢查許可權。
  • 對於需要SE_AUDIT_NAME許可權的函式,例如 ObjectOpenAuditAlarm 函式,系統一律會在進程的主要權杖中檢查許可權。
  • OpenThreadToken 函式的呼叫中,執行緒可以指定函式是否使用模擬權杖或主要權杖來判斷是否授與要求的存取權。