ActiveDirectoryMembershipProvider.ResetPassword(String, String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 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, eattributeMapFailedPasswordAnswerLockedTimedevem 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.