У нас есть домен 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 я вижу «ПЛОХАЯ ПРЕВЫШЕНИЕ» ошибка.
или, если я играю с LogonType и LogonProvider
System.Data.SqlClient.SqlException: 'Ошибка входа. Логин входит в ненадежный домен и не может использоваться с аутентификацией Windows. '
Есть ли способ выдать себя за учетную запись AD, для которой задан альтернативный суффикс UPN?
Да, и еслиЯ запускаю из-под учетной записи "foo" все работает, то есть foo имеет все необходимые права доступа. К сожалению, мне нужно запустить из другой учетной записи службы.
Спасибо !!!