usuarios ejemplos consultar conexion active c# active-directory

ejemplos - Cambio de contraseñas de usuario de Active Directory en c#/ asp.net después del parche de MS KB3167679



directorysearcher c# ejemplos (1)

He encontrado un problema similar. Intenta cambiar ContextOptions.SimpleBind a ContextOptions.Negotiate

Actualmente estoy buscando algún tipo de práctica recomendada para cambiar la contraseña de usuario del directorio activo para un usuario para los casos en que el usuario inicia sesión en una aplicación web basada en asp.net y la contraseña expira, y durante una sesión iniciada .

Estamos ejecutando la aplicación en Windows Server 2008 R2, IIS7 con .NET Framework 3.5

Hasta ahora he usado esto:

public int changeUserPassword(String _userID, String _oldPassword, String _newPassword, bool _change) { try { PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, "do.ma.in", "DC=do,DC=ma,DC=in", ContextOptions.SimpleBind, @"domain/admin_account", "admin_pw"); UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, _userID); if (_change) { oUserPrincipal.ChangePassword(_oldPassword, _newPassword); } else { oUserPrincipal.SetPassword(_newPassword); } oUserPrincipal.Save(); } catch (Exception e) { //error handling } return 1; }

Este método maneja los casos de cambio de pw iniciado por el usuario después del inicio de sesión, el cambio durante el inicio de sesión de pw caducado (método ChangePassword) y el restablecimiento de contraseña, donde se genera una contraseña temporal, etc. (método SetPassword).

La razón por la que necesitamos el método ChangePassword es para que haya una confirmación del usuario sobre la contraseña actual y para que se aplique el historial de contraseñas de AD, ya que no permitimos las últimas x contraseñas. SetPassword simplemente establece la contraseña, sin importar si está en el historial reciente.

SetPassword parece funcionar bien, pero desde el parche de Microsoft KB3167679, el método de cambio de contraseña ya no parece funcionar. KB3167679 El artículo menciona específicamente que esto solo sucede con las cuentas que están bloqueadas o deshabilitadas, pero tampoco funciona cuando la cuenta simplemente está activa o en el modo "contraseña expirada". El mensaje de excepción I geet es "Uno o más parámetros de entrada no son válidos".

Anteriormente utilicé otra implementación usando DirectoryEntry, pero era defectuosa, ya que a veces funcionaba y otras veces no, lo cual era bastante molesto. Así que prefiero no volver a eso.

Observamos esto en una instancia que tiene el nuevo parche, una instancia sin él funciona bien. También pude reproducir el comportamiento en un servidor de prueba, el método dejó de funcionar después de que se instaló el parche mencionado.

Desafortunadamente Microsoft no proporciona una mejor práctica en este artículo y parece que no puedo encontrar uno. Entonces la pregunta es si tal vez usted tiene un consejo para mí, cuál es la forma estándar de ir aquí.