Олицетворение пользователя домена с компьютера без домена

Я считаю, что я прочитал все соответствующие 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. Но вам все равно нужно ввести пароль вручную. Вы можете сделать / сохранить кредит для кэширования кредитов.

Другие вопросы по тегам