我有两个 Active Directory 域,A 和 B。域 A 中的用户需要在其桌面上运行应用程序来查看和操作位于域 B 中的服务器上的资源。每个用户在域 B 中也有一个帐户。是否可能模拟每个用户的域 B 身份以编程方式对域 B 资源执行操作?
示例工作流程:
- 用户登录域 A。
- 用户启动桌面应用程序。
- 用户指定域 B 中的资源。
- 应用程序提示用户输入域 B 凭据。
- 应用程序模拟用户的域 B 身份来访问指定的资源。
- 用户使用应用程序操作域 B 资源。
我有两个 Active Directory 域,A 和 B。域 A 中的用户需要在其桌面上运行应用程序来查看和操作位于域 B 中的服务器上的资源。每个用户在域 B 中也有一个帐户。是否可能模拟每个用户的域 B 身份以编程方式对域 B 资源执行操作?
示例工作流程:
如果您的计算机(进行模拟的计算机)是不信任您尝试模拟的用户帐户所在域的域的成员,则模拟将失败。任何说其他话的人,我都希望看到证据。
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.
Check out this question, which covers the impersonation issues you need.