Alterar uma senha do Active Directory em c #

1

Primeiro, por favor, perdoe meu inglês, não é minha língua materna.

Então, aqui está o meu problema: estou trabalhando em uma plataforma web que gerencia o Active Directory. Posso criar, excluir, editar um grupo, usuário, unidade organizacional e assim por diante.

Mas. Sim mas. Quando um usuário conectado deseja alterar sua própria senha com a plataforma, ele falha. Vem de DirectoryEntry.Invoke.

Eu usei o DirectoryServices.DirectoryEntry:

directoryEntry.Invoke("SetPassword", password);
directoryEntry.Commit();

Então eu tentei System.DirectoryServices.AccountManagement, dessa forma:

PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, Username);
user.SetPassword(password_);
user.Save();

Maneira diferente, mesmo problema. Esses códigos funcionam, ele só falha quando um usuário tenta editar sua própria senha.

Como um usuário conectado pode alterar sua própria senha? Por que esse problema estranho?

Qualquer ajuda seria ótima.

    
por Nate B. 06.10.2011 / 14:10

2 respostas

1

Eu acho que o problema aqui é que seu aplicativo não tem permissão para atualizar a senha que está correta!

O método autorizado para conceder a permissão do aplicativo ASP.NET ao diretório é por meio de um pool de aplicativos IIS privilegiado executando sob a identidade de uma conta de serviço ou por meio de uma entidade COM + executando sob a identidade de uma conta de serviço .

    
por 07.10.2011 / 04:36
3

O comando SetPassword só funciona para usuários admin, pois forçosamente define uma nova senha sem precisar saber a senha existente. Os usuários não administradores precisariam usar o ChangePassword, o que requer que você também passe a senha existente junto com a nova senha.

    
por 12.10.2011 / 22:36