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