【发布时间】:2020-02-05 23:57:34
【问题描述】:
我们有一个域 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(...) 成功,但我的脚本没有适当的访问权限。根据参数的组合,我得到 p>
System.IO.FileLoadException: 文件名: 'System.Data, ...
在 Sysinternals Process Monitor 中,我可以看到 “BAD IMPERSONATION” 错误。
或者,如果我使用 LogonType 和 LogonProvider
System.Data.SqlClient.SqlException: '登录失败。登录来自不受信任的域,不能用于 Windows 身份验证。'
是否有任何方法可以模拟使用替代 UPN 后缀定义的 AD 帐户?
哦,如果我在“foo”帐户下运行一切正常,这意味着 foo 拥有它需要的所有访问权限。不幸的是,我需要从另一个服务帐户运行。
谢谢!!!
【问题讨论】:
标签: c# .net impersonation winlogon upn