impersonator impersonate windows security winapi active-directory impersonation

windows - impersonator - impersonate c#



¿Por qué LogonUser(...) no funciona para las cuentas de dominio? (3)

He intentado usar LogonUser(...) para obtener un token de acceso para una cuenta de usuario, como en este ejemplo de 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);

Cuando ejecuto la muestra (con privilegios de administrador) funciona bien cuando se le da un dominio de . y un nombre de usuario y contraseña de cuenta local, pero no importa lo que haga, obtengo el código de error 1326 ( Error de inicio de sesión: nombre de usuario desconocido o contraseña incorrecta ) si intento usar una cuenta de dominio. Obtengo el mismo resultado si ingreso basura para el dominio, lo que me hace preguntarme si realmente se está contactando con el DC.

¿Qué podría estar impidiendo que esto funcione?


Use DOMAIN/LOGIN con un nombre de dominio vacío para ese caso ...


En mi caso, fue el hecho de que, aunque estaba conectado a mi computadora como un usuario de dominio, mi computadora no era en sí misma parte del dominio. Una vez agregado al dominio, la muestra comenzó a funcionar.


En mi caso, el problema, similar al cuestionador de preguntas y respuestas, era que la cuenta a la que intentaba autenticar estaba en un dominio al que mi máquina actual no pertenecía. A diferencia del póster original, mi máquina no debería ni podría formar parte de este otro dominio. Sin embargo, quería que el inicio de sesión realizara acciones en un recurso en este dominio.

La respuesta fue la siguiente

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

con las siguientes constantes definidas:

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

Esperamos que esto ayude a otros que están perdidos en una situación similar.