我们有一个域boo.com,也有人定义了一个替代的UPN后缀bc。有一个创建为foo @bc的帐户。我需要模拟该帐户才能连接到SQL Server。
这是我的工作:
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(String lpszUsername,
String lpszDomain,
String lpszPassword,
int dwLogonType,
int dwLogonProvider,
ref IntPtr phToken);
LogonUser(
"foo",//foo@bc
"boo.com",//"@bc"
"Password",
(int)LogonType.LOGON32_LOGON_INTERACTIVE,//(int)LogonType.LOGON32_LOGON_SERVICE,//(int)LogonType.LOGON32_LOGON_NEW_CREDENTIALS,//(int)LogonType.LOGON32_LOGON_NETWORK,//
(int)LogonProvider.LOGON32_PROVIDER_DEFAULT,//(int)LogonProvider.LOGON32_PROVIDER_WINNT50,//
ref m_Token);
...
模仿似乎可以正常工作-LogonUser(...)成功,但是我的脚本没有适当的访问权限。根据参数的组合,我可以得到
System.IO.FileLoadException:文件名:'System.Data,...
在Sysinternals Process Monitor中,我可以看到“ BAD IMPERSONATION”错误。
或者,如果我使用LogonType和LogonProvider,则>]
System.Data.SqlClient.SqlException:'登录失败。该登录名来自不受信任的域,不能与Windows身份验证一起使用。'
是否有任何方法可以模拟使用备用UPN后缀定义的AD帐户?
哦,如果我使用“ foo”帐户运行,则一切正常,这意味着foo具有所需的所有访问权限。不幸的是,我需要从另一个服务帐户运行。
谢谢!!
我们有一个域名boo.com,也有人定义了一个替代的UPN后缀bc。有一个创建为foo @bc的帐户。我需要模拟该帐户才能连接到SQL Server。这就是我的工作:...
通过反复试验,这对我有用: