Олицетворение пользователя домена с компьютера без домена
Я считаю, что я прочитал все соответствующие Process.Start
вопросы об олицетворении - по крайней мере, все, что я мог найти через Google, но я не нашел такого, который бы соответствовал этой ситуации (и 90% - это re: ASP, который представляет собой совершенно другую игру)
Сценарий: у нас есть небольшой инструмент, который использует учетные данные текущих пользователей для запроса AD, получения списка серверов, соответствующих запросу, подключения к ним через SMB и получения списка общих ресурсов.
Меня попросили сделать так, чтобы этот процесс работал при запуске на компьютере, не входящем в домен, с использованием учетных данных пользователя домена.
Я добавил переключатель, который будет запрашивать учетные данные при запуске, а затем Process.Start() тот же исполняемый файл, используя соответствующие учетные данные (чтобы сохранить кого-то обучения runas /netonly ...
).
Это дает мне пару вопросов. Код, с которым я тестирую, находится ниже...
Dim ProcInfo As New ProcessStartInfo With {
.Domain = dlgImpersonate.Domain,
.UserName = dlgImpersonate.Username,
.Password = dlgImpersonate.Password,
.FileName = Reflection.Assembly.GetEntryAssembly.Location,
.UseShellExecute = False}
Try
Process.Start(ProcInfo)
ShouldEnd = True
Catch ex As Exception
'HandleException(ex)
MessageBox.Show(ex.Message, "Impersonation failed", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
Итак... Если я запускаю код на моей машине (в домене), я могу выдать себя за любого. Есть некоторые причуды, связанные с запросами AD, но это другая проблема.
Если я запускаю код на новой машине (не в домене), я получаю:
Win32Exception: Logon failure: unknown user name or bad password
Stack:
at Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at Process.Start(ProcessStartInfo startInfo)
...My code
Я задавался вопросом, был ли компьютер просто не осведомлен о домене или как аутентифицироваться на нем, поэтому я попытался из командной строки...
runas /netonly /user:MyDomain\MyUser Test.exe
И это прекрасно работает.
Итак... Как я могу отследить, почему Process.Start
не аутентификация, как я ожидаю?
Примечание: учетные данные верны - я даже прибег к копированию / вставке из блокнота в проверку работоспособности
1 ответ
Проверьте эту ссылку: http://codebetter.com/jameskovacs/2009/10/12/tip-how-to-run-programs-as-a-domain-user-from-a-non-domain-computer/
В основном вы используете runas с / netonly. Но вам все равно нужно ввести пароль вручную. Вы можете сделать / сохранить кредит для кэширования кредитов.