Alterando as senhas do AD via ASP.NET. Obtendo o acesso negado quando o pool de aplicativos está sendo executado em um usuário privilegiado

2

Estou tentando criar uma ferramenta de redefinição de senha de autoatendimento para um domínio de teste. Estou usando o ASP.NET 4 e o IIS 7.

Meu código:

string userDirectoryEntry = "WinNT://domain/" + usermapping[user[1]]
System.DirectoryServices.DirectoryEntry ADEntryToReset = new System.DirectoryServices.DirectoryEntry(userDirectoryEntry);

ADEntryToReset.Invoke("SetPassword", new object[] { newPassword });
ADEntryToReset.Properties["passwordExpired"][0] = 1;
ADEntryToReset.CommitChanges();

No entanto, estou tendo acesso negado ao confirmar a alteração da senha. Eu mudei o pool de aplicativos padrão para ser executado em uma conta de administrador que pode alterar as senhas. Funciona bem no depurador do Visual Studio.

Eu também tentei fornecer explicitamente credenciais para o objeto DirectoryEntry ( msdn ). Isso também não funciona.

Alguma idéia?

    
por mphuie 17.01.2013 / 01:59

1 resposta

1

Você pode querer usar o provedor LDAP em vez do provedor pré-2000 WinNT , que tem algumas limitações de capacidade em comparação com LDAP . A string userDirectoryEntry deve começar com LDAP:// em vez de WinNT://

Se o exemplo do msdn com credenciais não funcionar, tente inicializar o objeto DirectoryEntry com as credenciais:

new DirectoryEntry(userDN,callerUsername,callerPwd);

link

    
por 17.01.2013 / 02:38