Partilhar via


ActiveDirectoryMembershipProvider.ResetPassword(String, String) Método

Definição

Redefine a senha de um usuário com uma nova senha gerada automaticamente.

public:
 override System::String ^ ResetPassword(System::String ^ username, System::String ^ passwordAnswer);
public override string ResetPassword (string username, string passwordAnswer);
override this.ResetPassword : string * string -> string
Public Overrides Function ResetPassword (username As String, passwordAnswer As String) As String

Parâmetros

username
String

O usuário para o qual redefinir a senha.

passwordAnswer
String

A resposta da senha para o usuário especificado.

Retornos

A nova senha do usuário especificado.

Exceções

O método ResetPassword(String, String) é chamado antes que a instância ActiveDirectoryMembershipProvider seja inicializada.

O valor da propriedade EnablePasswordReset é false.

passwordAnswer é null.

- ou -

username é null.

passwordAnswer está vazio após a filtragem

- ou -

passwordAnswer excede 128 caracteres.

- ou -

username está vazio ou excede o comprimento máximo permitido para nomes de usuário (normalmente 256 caracteres).

- ou -

username contém vírgulas.

- ou -

O nome de usuário é mapeado para userPrincipalName, mas o parâmetro username contém barras invertidas.

O usuário está bloqueado devido a muitas tentativas de logon inválidas ou muitas tentativas de redefinição da resposta da senha realizadas.

- ou -

passwordAnswer não corresponde à resposta de senha armazenada.

O usuário especificado em username não existe no armazenamento de dados do Active Directory.

- ou -

Uma senha gerada não passa um manipulador de validação personalizado.

- ou -

A senha gerada não é complexa o suficiente para atender às políticas de senha personalizadas definidas no servidor do Active Directory.

- ou -

Não é possível realizar uma conexão segura para um servidor do AD LDS para definir a nova senha.

Ocorreu uma exceção sem tratamento.

Comentários

O método é chamado pela Membership classe para redefinir a senha de um usuário no armazenamento de dados do Active Directory para um novo valor gerado aleatoriamente. A nova senha é retornada.

Observação

Não há garantia de que a ResetPassword senha aleatória criada pelo método passe a expressão regular na PasswordStrengthRegularExpression propriedade . No entanto, a senha aleatória atenderá aos critérios estabelecidos pelas MinRequiredPasswordLength propriedades e MinRequiredNonAlphanumericCharacters .

Se uma resposta incorreta for fornecida ao ResetPassword método , o contador interno que rastreia tentativas inválidas de resposta de senha será incrementado por um. Isso pode fazer com que o usuário não consiga fazer logon até que o status do bloqueio seja limpo por uma chamada para o UnlockUser método . Se a resposta de senha correta for fornecida e o usuário não estiver bloqueado no momento, o contador interno que rastreia tentativas de senha inválidas será redefinido para zero. Para obter mais informações, confira as propriedades MaxInvalidPasswordAttempts e PasswordAttemptWindow.

Os espaços à esquerda e à direita são cortados de todos os valores de parâmetro.

Você pode chamar o ResetPassword método diretamente obtendo primeiro uma referência à ActiveDirectoryMembershipProvider instância da Membership.Provider propriedade .

O provedor usa uma pesquisa de subárvores começando no ponto de pesquisa especificado na cadeia de conexão. Consulte o tópico de ActiveDirectoryMembershipProvider classe para obter mais informações sobre cadeias de conexão.

Para definir senhas em um servidor do Active Directory, o connectionProtection atributo deve ser definido como SignAndSeal.

Ao usar um servidor ADAM, o connectionProtection atributo pode ser definido como None, mas somente se você configurar explicitamente o servidor ADAM para permitir alterações de senha em conexões não seguras.

Importante

Você não pode redefinir senhas, a menos que as credenciais usadas para se conectar ao servidor do Active Directory tenham direitos de Administrador de Domínio (não recomendado) ou o direito de acesso de "redefinir senha".

Para redefinir uma senha, todas as seguintes condições devem ser verdadeiras:

  • A propriedade EnablePasswordReset precisa ser definida como true.

  • O esquema do Active Directory deve ser modificado para conter atributos para armazenar a pergunta e a resposta da senha e os três campos de acompanhamento para alterações de resposta de senha.

  • Os attributeMapPasswordQuestionatributos , attributeMapPasswordAnswer, attributeMapFailedPasswordAnswerCount, attributeMapFailedPasswordAnswerTimee attributeMapFailedPasswordAnswerLockedTime devem ser definidos no arquivo de configuração do aplicativo.

  • A propriedade RequiresQuestionAndAnswer precisa ser definida como true.

  • O contexto de segurança para se conectar ao armazenamento de dados do Active Directory (a conta de processo ou as credenciais explícitas) deve ter privilégios suficientes para alterar senhas. As credenciais usadas para se conectar ao servidor do Active Directory têm direitos de Administrador de Domínio (não recomendado) ou o direito de acesso de "redefinir senha".

Observação

As políticas de segurança definidas no servidor do Active Directory podem tornar impossível para o ResetPassword método gerar uma senha que atenda às políticas. A implementação padrão do método gerará senhas que atendem às políticas de senha padrão em controladores de domínio que executam o GeneratePassword Windows Server 2003 SP1. Se a senha não puder ser redefinida devido a políticas de segurança no servidor do Active Directory, uma ProviderException será gerada.

Aplica-se a

Confira também