Dot-Net

我可以在 .NET 中模擬不同 Active Directory 域中的使用者嗎?

  • May 16, 2017

我有兩個 Active Directory 域,A 和 B。域 A 中的使用者需要在其桌面上執行應用程序來查看和操作位於域 B 中的伺服器上的資源。每個使用者在域 B 中也有一個帳戶。是否可能模擬每個使用者的域 B 身份以程式方式對域 B 資源執行操作?

範例工作流程:

  1. 使用者登錄域 A。
  2. 使用者啟動桌面應用程序。
  3. 使用者指定域 B 中的資源。
  4. 應用程序提示使用者輸入域 B 憑據。
  5. 應用程序模擬使用者的域 B 身份來訪問指定的資源。
  6. 使用者使用應用程序操作域 B 資源。

我將談論 Win32 API,但我很確定您可以從 .NET 對這些 API 進行 p/invoke。檢查http://pinvoke.net

您需要呼叫 LogonUser API 來創建代表使用者的域 B 憑據的訪問令牌。

然後呼叫 ImpersonateLoggedOnUser,傳入該訪問令牌。呼叫執行緒將模擬域 B 憑據,直到您模擬一組不同的憑據或呼叫 RevertToSelf API。

我想不言而喻,要使 LogonUser 呼叫成功,您正在執行的機器將需要信任域 B。

如果您的電腦(進行模擬的電腦)是不信任您嘗試模擬的使用者帳戶所在域的域的成員,則模擬將失敗。任何說其他話的人,我都希望看到證據。

引用自:https://stackoverflow.com/questions/997001