ActiveDirectoryMembershipProvider.ResetPassword(String, String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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
attributeMapPasswordQuestion
atributos ,attributeMapPasswordAnswer
,attributeMapFailedPasswordAnswerCount
,attributeMapFailedPasswordAnswerTime
eattributeMapFailedPasswordAnswerLockedTime
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.