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

Joh*_*gle 7 .net impersonation active-directory cross-domain

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

示例工作流程:

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

小智 9

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


Mar*_*tin 2

我将谈论 Win32 API,但我很确定您可以从 .NET p/调用这些 API。检查http://pinvoke.net

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

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

我想不言而喻,为了使 LogonUser 调用成功,您正在运行的计算机将需要信任域 B。