Почему LogonUser (...) не работает для учетных записей домена? - PullRequest
7 голосов
/ 20 сентября 2011

Я пытался использовать LogonUser(...) для получения токена доступа для учетной записи пользователя, как в этом примере MSDN .

// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, Console.ReadLine(),
    LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
    out safeTokenHandle);

Когда я запускаю образец (с правами администратора), он работает нормально, если ему присвоен домен . и имя и пароль локальной учетной записи пользователя, но независимо от того, что я делаю, я получаю код ошибки 1326 ( Ошибка входа в систему) : неизвестное имя пользователя или неверный пароль ), если я пытаюсь использовать учетную запись домена. Я получаю тот же результат, если ввожу мусор для домена, что заставляет меня задаться вопросом, действительно ли он вообще связывается с DC.

Что может помешать этому работать?

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

В моем случае это был тот факт, что, хотя я вошел в систему на своем компьютере как пользователь домена, сам мой компьютер не был частью домена. После добавления в домен образец начал работать.

1 голос
/ 29 августа 2017

В моем случае проблема, аналогичная задающему вопрос, заключалась в том, что учетная запись, к которой я пытался пройти аутентификацию, находилась в домене, к которому не принадлежала моя текущая машина.В отличие от оригинального постера, моя машина не должна и не может быть частью этого другого домена.Я хотел, чтобы логин выполнил действие над ресурсом в этом домене.

Ответ был следующим

bool success = LogonUser(
                userName,
                domain,
                password,
                (int)LOGON32_LOGON_NEW_CREDENTIALS, //9
                (int)LOGON32_PROVIDER_DEFAULT, //0
                out userToken);

со следующими определенными константами:

public const int LOGON32_LOGON_NEW_CREDENTIALS = 9;
public const int LOGON32_PROVIDER_DEFAULT = 0;

Надеюсь, это поможет другим, кто погиб в подобной ситуации.

0 голосов
/ 20 сентября 2011

Используйте DOMAIN\LOGIN с пустым доменным именем для этого случая ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...