7

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

示例工作流程:

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

3 回答 3

10

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

于 2009-09-02T16:10:09.730 回答
2

I'm going to speak in terms of Win32 APIs, but I'm pretty sure you can p/invoke to these from .NET. Check http://pinvoke.net.

You need to call the LogonUser API to create an access token that represents the user's domain B credentials.

Then you call ImpersonateLoggedOnUser, passing in that access token. The calling thread will impersonate the domain B credentials until you impersonate a different set of credentials or call the RevertToSelf API.

I guess it goes without saying that, for the LogonUser call to succeed, the machine you're running on will need to trust domain B.

于 2009-06-15T16:26:48.303 回答
1

Check out this question, which covers the impersonation issues you need.

于 2009-06-15T16:23:30.000 回答