我可以在.NET中模拟其他Active Directory域上的用户吗?

时间:2009-06-15 16:17:18

标签: .net active-directory cross-domain impersonation

我有两个Active Directory域,A和B.域A中的用户需要在其桌面上运行应用程序以查看和操作位于域B中的服务器上的资源。每个用户在域B中也有一个帐户。是否可以模拟每个用户的域B身份以编程方式对域B资源执行操作?

示例工作流程:

  1. 用户登录域A.
  2. 用户启动桌面应用程序。
  3. 用户指定域B中的资源。
  4. 应用程序会提示用户输入域B凭据。
  5. 应用程序模拟用户的域B身份以访问指定的资源。
  6. 用户使用应用程序操作域B资源。

3 个答案:

答案 0 :(得分:9)

如果您的计算机(进行模拟的计算机)是不信任您尝试模拟的用户帐户域的域的成员,则模拟将失败。任何不这么说的人,我都希望看到证据。

答案 1 :(得分:2)

我将谈论Win32 API,但我很确定你可以从.NET调用它们。检查http://pinvoke.net

您需要调用LogonUser API来创建表示用户的域B凭据的访问令牌。

然后调用ImpersonateLoggedOnUser,传入该访问令牌。调用线程将模拟域B凭据,直到您模拟一组不同的凭据或调用RevertToSelf API。

我想不用说,为了让LogonUser调用成功,你运行的机器需要信任域B.

答案 2 :(得分:1)

查看this question,其中包含您需要的模拟问题。