miércoles, 11 de diciembre de 2013

Cómo cambiar la contraseña de un usuario de active directory desde Sharepoint 2010

En este post os voy a enseñar a cómo cambiar la cantraseña de un usuario de active directory. Eso si, utilizando .NET Framework 3.5.

Primero de todo definiremos la función que hara que un usuario pueda cambiarse la contraseña:

 using System.DirectoryServices.AccountManagement;  
 public static string ChangePassword(string adminUser, string adminPassword,  
   string domain, string container, string userName, string newPassword)  
 {  
   try  
   {  
     PrincipalContext principalContext =   
       new PrincipalContext(ContextType.Domain, domain, container,   
         adminUser, adminPassword);  
     UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName);  
     if (user == null) return "El usuario no existe";  
     user.SetPassword(newPassword);  
     return user.Name;  
   }  
   catch (Exception ex)  
   {  
     return ex.Message;  
   }  
 }  

Como veis, primero de todo creamos un objecto de tipo PrincipalContext que lo utilizaremos simplemente para buscar el usuario, para que lo encuentre en nuestro site.
A continuación vamos a buscar el usuario con un objecto UserPrincipal pasandole el principalContext y el nombre del usuario conectado (en el caso que sea el Admin que quiera cambiar el pass de un user, le tendra que pasar el login name del user, se entiende...).

Y finalmente la llamada seria asi:

 ChangePassword(@"DOMAIN\Administrator", "password", "DOMAIN",  
  "DC=Domain,DC=COM", userName, newPassword);  

Si veis, como container le paso "DC=CONTOSO,DC=COM", el primer DC es el nombre del servidor y el segundo creo que es el dominio web, pero os lo podria asegurar.

Y como dominio solamente es pasarle el nombre de dominio en el qual esta el servidor.

Para no tener que ir pasando el nombre y pass del Admin, recomiendo tener 2 parametros en el web.config que contenga estos 2 datos.

Espero que os haya ayudado,
Saludos.

No hay comentarios:

Publicar un comentario