ActiveDirectoryMembershipProvider.ResetPassword(String, String) Método

Definição

Redefine a palavra-passe de um utilizador para uma nova palavra-passe 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 utilizador para redefinir a palavra-passe.

passwordAnswer
String

A resposta por palavra-passe para o utilizador especificado.

Devoluções

A nova palavra-passe para o utilizador especificado.

Exceções

O ResetPassword(String, String) método é chamado antes da ActiveDirectoryMembershipProvider instância ser inicializada.

O valor da EnablePasswordReset propriedade é false.

passwordAnswer é null.

-ou-

username é null.

passwordAnswer está vazio depois de aparar

-ou-

passwordAnswer ultrapassa os 128 caracteres.

-ou-

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

-ou-

username contém vírgulas.

-ou-

O nome de utilizador é mapeado, userPrincipalName mas o username parâmetro contém barras adicionais.

O utilizador fica bloqueado devido a demasiadas tentativas erradas de login ou demasiadas tentativas de redefinição de palavra-passe.

-ou-

passwordAnswer não corresponde à resposta da palavra-passe armazenada.

O utilizador especificado em username não existe na Active Directory data store.

-ou-

Uma palavra-passe gerada não transmite um manipulador de validação personalizado.

-ou-

A palavra-passe gerada não é suficientemente complexa para satisfazer políticas personalizadas de palavras-passe definidas no servidor Active Directory.

-ou-

Não pode ser feita uma ligação segura a um servidor do Active Directory Application Mode para definir a nova palavra-passe.

Ocorreu uma exceção não tratada.

Observações

O método é chamado pela classe Membership para redefinir a palavra-passe de um utilizador na Active Directory data store para um novo valor gerado aleatoriamente. A nova palavra-passe é devolvida.

Note

A palavra-passe aleatória criada pelo ResetPassword método não garante que passe a expressão regular na PasswordStrengthRegularExpression propriedade. No entanto, a palavra-passe aleatória cumprirá os critérios estabelecidos pelas MinRequiredPasswordLength propriedades e MinRequiredNonAlphanumericCharacters .

Se for fornecida uma resposta incorreta ao ResetPassword método, o contador interno que acompanha tentativas inválidas de resposta por palavra-passe é incrementado em um. Isto pode resultar em que o utilizador não consiga iniciar sessão até que o estado do bloqueio seja resolvido por uma chamada ao UnlockUser método. Se for fornecida a resposta correta da palavra-passe e o utilizador não estiver bloqueado, então o contador interno que acompanha tentativas de palavra-passe inválida é reiniciado a zero. Para obter mais informações, consulte as propriedades MaxInvalidPasswordAttempts e PasswordAttemptWindow.

Os espaços à frente e à saída são cortados a partir de todos os valores dos parâmetros.

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

O fornecedor utiliza uma pesquisa em subárvore que começa no ponto de pesquisa especificado na cadeia de ligação. Consulte o ActiveDirectoryMembershipProvider tópico da aula para mais informações sobre cordas de ligação.

Para definir palavras-passe num servidor Active Directory, o atributo connectionProtection deve ser definido para SignAndSeal.

Ao usar um servidor ADAM, o connectionProtection atributo pode ser definido para None, mas apenas se configurar explicitamente o servidor ADAM para permitir alterações de palavra-passe em ligações não seguras.

Importante

Não pode redefinir palavras-passe a menos que as credenciais usadas para se ligar ao servidor Active Directory tenham direitos de Administrador de Domínio (não recomendado) ou o direito de acesso de "redefinir palavra-passe".

Para redefinir uma palavra-passe, todas as seguintes condições devem ser verdadeiras:

  • A EnablePasswordReset propriedade deve ser definida como true.

  • O esquema do Active Directory deve ser modificado para conter atributos para armazenar a pergunta e resposta da palavra-passe, bem como os três campos de rastreamento para alterações de resposta da palavra-passe.

  • Os attributeMapPasswordQuestionatributos , attributeMapPasswordAnswer, attributeMapFailedPasswordAnswerCount, attributeMapFailedPasswordAnswerTime, e attributeMapFailedPasswordAnswerLockedTime devem ser definidos no ficheiro de configuração da aplicação.

  • A RequiresQuestionAndAnswer propriedade deve ser definida como true.

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

Note

As políticas de segurança definidas no servidor Active Directory podem tornar impossível que o método ResetPassword gere uma palavra-passe que satisfaça as políticas. A implementação padrão do método GeneratePassword gerará palavras-passe que satisfaz as políticas de palavras-passe padrão nos controladores de domínio que executam Windows Server 2003 SP1. Se a palavra-passe não puder ser redefinida devido às políticas de segurança do servidor Active Directory, é lançado um ProviderException.

Aplica-se a

Ver também