ActiveDirectoryMembershipProvider Classe

Definição

Gere o armazenamento de informações de adesão para uma aplicação ASP.NET nos servidores Active Directory e Active Directory Application Mode.

public ref class ActiveDirectoryMembershipProvider : System::Web::Security::MembershipProvider
public class ActiveDirectoryMembershipProvider : System.Web.Security.MembershipProvider
type ActiveDirectoryMembershipProvider = class
    inherit MembershipProvider
Public Class ActiveDirectoryMembershipProvider
Inherits MembershipProvider
Herança
ActiveDirectoryMembershipProvider

Exemplos

O exemplo seguinte mostra o ficheiro Web.config para uma aplicação ASP.NET configurada para usar uma instância ActiveDirectoryMembershipProvider. Utiliza os mapeamentos predefinidos para atributos do Active Directory. Não suporta segurança de redefinição de palavra-passe com perguntas e respostas nem a capacidade de chamar métodos de pesquisa.

<configuration>
  <connectionStrings>
    <add name="ADService" connectionString="LDAP://ldapServer/" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
      <providers>
        <add name="AspNetActiveDirectoryMembershipProvider"
          type="System.Web.Security.ActiveDirectoryMembershipProvider,
          System.Web, Version=2.0.3600, Culture=neutral,
          PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </membership>
  </system.web>
</configuration>

Observações

Esta classe é usada pelas classes Membership e MembershipUser para fornecer serviços de adesão a uma aplicação ASP.NET usando um servidor Active Directory (AD) ou Active Directory Application Mode (ADAM).

Note

Usar um servidor ADAM requer uma configuração específica. Para mais informações, consulte a secção de Configuração ADAM abaixo.

Importante

A instância ActiveDirectoryMembershipProvider funciona apenas na configuração padrão de política de confiança total do ASP.NET. Para usar a ActiveDirectoryMembershipProvider instância a qualquer nível de confiança parcial, ou deve fazer alterações ao ficheiro de política de confiança apropriado para a sua aplicação, ou deve criar um assembly "sandbox" que seja implementado no GAC.

A ActiveDirectoryMembershipProvider aula requer permissão irrestrita DirectoryServicesPermission para se realizar. Esta permissão não é adicionada a nenhum dos ficheiros de política de confiança parcial fornecidos com o ASP.NET. Embora adicionar a permissão DirectoryServicesPermission a um ficheiro de política de confiança parcial permita a utilização da classe ActiveDirectoryMembershipProvider, ao fazê-lo, as classes de namespace System.DirectoryServices estão disponíveis para qualquer código a correr nas suas páginas de ASP.NET. Esta opção não é recomendada para servidores Web que necessitem de funcionar num modo seguro e bloqueado.

Como alternativa, podes criar uma assembleia "sandbox" que chama a ActiveDirectoryMembershipProvider classe. Este assembly pode conter uma classe wrapper que encaminha chamadas de método para a ActiveDirectoryMembershipProvider classe ou uma classe que deriva dessa ActiveDirectoryMembershipProvider classe. Em qualquer dos casos, a classe wrapper deve afirmar permissão irrestrita DirectoryServicesPermission . Implemente o conjunto sandbox no GAC e marque o conjunto com o AllowPartiallyTrustedCallersAttribute atributo (APTCA). Isto permitirá que o seu código de ASP.NET parcialmente confiável chame a sua classe wrapper, e como a classe wrapper afirma internamente a permissão irrestrita DirectoryServicesPermission, a sua classe wrapper poderá contactar com sucesso o fornecedor

Deve criar uma entrada connectionStrings (ASP.NET Settings Schema) no ficheiro Web.config que identifique o servidor Active Directory, domínio Active Directory ou partição de aplicação ADAM a utilizar. O fornecedor só operará no âmbito do domínio, ou num subescopo dentro de um domínio. A tabela seguinte lista cadeias de ligação permitidas e o âmbito utilizado.

Cadeia de ligação Scope
LDAP://< domínio ou servidor>:[porta]

O número de porta é opcional para ADAM e não é necessário para o Active Directory.
O fornecedor corre contra o domínio ou servidor especificado. Com o AD, a criação e eliminação de utilizadores é feita no contentor padrão dos utilizadores. Todas as outras operações, incluindo quaisquer métodos de pesquisa, serão enraizadas no contexto de nomenclatura predefinido do domínio.

Se o cadeia de ligação especificar um domínio Active Directory em vez de um servidor específico e a propriedade EnablePasswordReset for true, a instância ActiveDirectoryMembershipProvider irá sempre ligar-se ao servidor com o papel PDC do domínio para garantir que as alterações à palavra-passe tenham efeito e estejam disponíveis quando o método ValidateUser for chamado.

Este cadeia de ligação não é permitido ao usar ADAM, e lança um NotSupportedException.
LDAP://< domínio ou servidor>:[porta]/<container dn>

O número de porta é opcional para ADAM e não é necessário para o Active Directory.
O fornecedor corre contra o domínio ou servidor especificado. A criação e eliminação de utilizadores só é feita no contentor especificado. Todas as outras operações, incluindo quaisquer métodos de pesquisa, realizam pesquisas em subárvores com raízes no contentor.

Para servidores ADAM, o contentor especifica a raiz de uma partição de aplicação, ou um contentor dentro de uma partição de aplicação.

Recomendamos que a cadeia de ligação defina um contentor específico para melhorar o desempenho.

A ActiveDirectoryMembershipProvider instância mapeia atributos do diretório para ActiveDirectoryMembershipUser propriedades. Os atributos padrão são usados se não for feito mapeamento de atributos no ficheiro Web.config. Para mais informações sobre mapeamentos de atributos, consulte as propriedades individuais na ActiveDirectoryMembershipUser documentação da classe.

A tabela seguinte lista as ActiveDirectoryMembershipUser propriedades e os seus mapeamentos de atributos predefinidos.

Importante

A ActiveDirectoryMembershipProvider classe não verifica explicitamente se os atributos do fornecedor não estão mapeados para os atributos principais do objeto utilizador no diretório. Deve garantir que a informação sensível do diretório não é exposta através de atributos mapeados.

Property Atributo predefinido do diretório Pode ser mapeado?
ProviderUserKey identificadorDeSegurança No
UserName userPrincipalName Sim, mas deve ser userPrincipalName ou sAMAccountName
Comment comentário No
CreationDate quandoCriado No
Email correio Sim, mas deve ser um atributo de valor único do tipo Unicode String.
LastActivityDate não aplicável Não suportado por ActiveDirectoryMembershipProvider.
LastLoginDate não aplicável Não suportado por ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet No
PasswordQuestion nenhuma Sim, mas deve ser um atributo de valor único do tipo Unicode String.
IsApproved Utilizador -Account-Control (AD)

mDS-UserAccountDisabled (ADAM)
No
IsLockedOut calculado a partir do lockoutTime e da duração do bloqueio AD (AD no Windows 2000)

msDS-User-Account-Control-Computed (AD em Windows Server 2003)

msDS-Conta-de-Utilizador-Control-Computed (ADAM)
No
LastLockoutDate Se o utilizador for bloqueado devido a demasiadas tentativas de passwords erradas, o atributo de tempo de bloqueio é devolvido.

Se o utilizador for bloqueado devido a demasiadas tentativas de resposta por palavra-passe errada, o valor armazenado no atributo definido por attributeMapFailedPasswordAnswerLockoutTime é devolvido.

Se o utilizador for bloqueado devido a uma palavra-passe errada e a demasiadas tentativas de passwords erradas, o valor mais recente da data/hora é devolvido.

Se a conta não estiver bloqueada, devolve o 1/1/1754 para compatibilidade SQL.
No

Quando ambas as RequiresQuestionAndAnswer propriedades e EnablePasswordReset são true, a ActiveDirectoryMembershipProvider classe suporta segurança por redefinição de palavra-passe ao exigir que o utilizador responda a uma pergunta pré-determinada. Para suportar a pergunta e resposta, deve definir os seguintes atributos de configuração usando o elemento add para fornecedores de adesão (ASP.NET Settings Schema) no ficheiro de configuração da aplicação.

Atributo de configuração Tipo de atributo
attributeMapPasswordQuestion Deve ser um atributo de valor único do tipo Unicode String.
attributeMapPasswordAnswer Deve ser um atributo de valor único do tipo Unicode String.
attributeMapFailedPasswordAnswerCount Deve ser um atributo de valor único do tipo Inteiro.
attributeMapFailedPasswordAnswerTime Deve ser um atributo de valor único do tipo Grande Inteiro/Intervalo.
attributeMapFailedPasswordAnswerLockoutTime Deve ser um atributo de valor único do tipo Grande Inteiro/Intervalo.

Para mais informações sobre o uso da segurança por redefinição de palavra-passe, consulte a RequiresQuestionAndAnswer propriedade.

Ligações ao Active Directory

Quando a classe ActiveDirectoryMembershipProvider é usada para se ligar a um servidor Active Directory ou Active Directory Modo de Aplicação (ADAM), o atributo connectionProtection que é definido usando o elemento add para fornecedores de adesão (ASP.NET Settings Schema) no ficheiro de configuração da aplicação pode restringir os tipos de operações que a classe ActiveDirectoryMembershipProvider pode realizar na ligação. O atributo connectionProtection também determina os métodos que a instância ActiveDirectoryMembershipProvider usará para criar a ligação ao servidor Active Directory ou ADAM.

A tabela seguinte mostra o efeito do atributo connectionProtection ao ligar a um Active Directory.

Configuração connectionProtection Effect
None A classe ActiveDirectoryMembershipProvider liga-se a um Active Directory, com estas restrições.

- Qualquer método que defina uma palavra-passe falhará. O Active Directory requer uma ligação segura ao alterar palavras-passe.
- Deve definir explicitamente os atributos connectionUsername e connectionPassword usando o elemento add for providers for membership (ASP.NET Settings Schema) no ficheiro de configuração da aplicação; caso contrário, a instância ActiveDirectoryMembershipProvider irá lançar uma exceção ProviderException.
Secure A classe ActiveDirectoryMembershipProvider tentará ligar-se a Active Directory usando SSL. Se o SSL falhar, será feita uma segunda tentativa de ligação ao Active Directory usando assinatura e selo. Se ambas as tentativas falharem, a ActiveDirectoryMembershipProvider instância lançará uma ProviderException exceção.

São suportadas tanto credenciais de processo como credenciais explícitas.

A tabela seguinte mostra o efeito do connectionProtection atributo ao ligar-se a um servidor ADAM.

Configuração connectionProtection Effect
None A ActiveDirectoryMembershipProvider classe liga-se a um servidor ADAM, com esta restrição.

- Qualquer método que defina palavras-passe falhará, a menos que configure explicitamente o servidor ADAM para permitir que as palavras-passe sejam enviadas e alteradas através de uma ligação insegura.

São suportadas tanto credenciais de processo como credenciais explícitas.
Secure A ActiveDirectoryMembershipProvider classe tentará ligar-se ao servidor ADAM usando SSL. Se não for possível estabelecer uma ligação, a ActiveDirectoryMembershipProvider instância lançará uma ProviderException exceção.

São suportadas tanto credenciais de processo como credenciais explícitas.

Configuração ADAM

Ao usar um servidor ADAM, a instância ADAM deve conter um esquema que defina a User classe. Pode importar a User classe com uma importação LDIF do MS-User.ldf ficheiro disponível na pasta de instalação do ADAM.

A ActiveDirectoryMembershipProvider classe funcionará com um servidor ADAM configurado para usar as portas de rede padrão. A tabela seguinte mostra os valores predefinidos esperados para o servidor ADAM.

Configuração connectionProtection Porta esperada para ADAM
None 389
Secure 636

Construtores

Name Description
ActiveDirectoryMembershipProvider()

Cria uma nova instância da ActiveDirectoryMembershipProvider classe.

Propriedades

Name Description
ApplicationName

O nome da aplicação usando o fornecedor de subscrição personalizado.

CurrentConnectionProtection

Obtém o nível atual de segurança usado para proteger as comunicações com o servidor.

Description

Recebe uma descrição breve e amigável, adequada para exibição em ferramentas administrativas ou outras interfaces de utilizador (UIs).

(Herdado de ProviderBase)
EnablePasswordReset

Recebe um valor que indica se a ActiveDirectoryMembershipProvider instância está configurada para permitir que os utilizadores redefinam as suas palavras-passe.

EnablePasswordRetrieval

Recebe um valor que indica se a palavra-passe do utilizador pode ser recuperada do armazenamento de dados do Active Directory. Esta propriedade devolve falsesempre .

EnableSearchMethods

Obtém um valor que indica se existem métodos orientados ActiveDirectoryMembershipProvider para pesquisa disponíveis.

MaxInvalidPasswordAttempts

Obtém o número de tentativas falhadas de resposta que um utilizador tem permitido para a pergunta de redefinição de palavra-passe.

MinRequiredNonAlphanumericCharacters

Obtém o número mínimo de caracteres especiais que devem estar presentes numa palavra-passe válida.

MinRequiredPasswordLength

Obtém o comprimento mínimo necessário para uma palavra-passe.

Name

Recebe o nome amigável usado para se referir ao fornecedor durante a configuração.

(Herdado de ProviderBase)
PasswordAnswerAttemptLockoutDuration

Perceba o tempo durante o qual uma conta de utilizador fica bloqueada depois de o utilizador ter feito demasiadas tentativas erradas de resposta por palavra-passe.

PasswordAttemptWindow

Obtém a janela temporal durante a qual tentativas consecutivas falhadas de fornecer uma palavra-passe válida ou uma resposta de palavra-passe válida são rastreadas.

PasswordFormat

Recebe um valor que indica o formato das palavras-passe no armazenamento de dados do Active Directory.

PasswordStrengthRegularExpression

Obtém a expressão regular usada para avaliar uma palavra-passe.

RequiresQuestionAndAnswer

Recebe um valor que indica se o fornecedor de membros está configurado para exigir uma pergunta e resposta por palavra-passe ao criar um utilizador.

RequiresUniqueEmail

Recebe um valor que indica se um endereço de email armazenado no servidor Active Directory deve ser único.

Métodos

Name Description
ChangePassword(String, String, String)

Altera a palavra-passe do utilizador especificado.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Atualiza a pergunta e resposta da palavra-passe para um utilizador na loja do Active Directory.

CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus)

Adiciona um novo utilizador ao armazenamento de dados do Active Directory.

DecryptPassword(Byte[])

Desencripta uma palavra-passe encriptada.

(Herdado de MembershipProvider)
DeleteUser(String, Boolean)

Remove a informação de membro do utilizador do armazenamento de dados do Active Directory.

EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Encripta a palavra-passe especificada usando o modo de compatibilidade de palavra-passe especificado.

(Herdado de MembershipProvider)
EncryptPassword(Byte[])

Encripta uma palavra-passe.

(Herdado de MembershipProvider)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Devolve uma coleção de utilizadores membros do armazenamento de dados do Active Directory com base no endereço de email do utilizador.

FindUsersByName(String, Int32, Int32, Int32)

Devolve uma coleção de utilizadores do armazenamento de dados do Active Directory com base no nome de utilizador.

GeneratePassword()

Gera uma senha aleatória.

GetAllUsers(Int32, Int32, Int32)

Obtém uma coleção de todos os utilizadores armazenados numa fonte de dados do Active Directory.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetNumberOfUsersOnline()

Faz NotSupportedException exceção em todos os casos.

GetPassword(String, String)

Devolve a palavra-passe do utilizador especificado da base de dados. A ActiveDirectoryMembershipProvider classe não suporta este método.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetUser(Object, Boolean)

Obtém a informação de utilizador de membro associada à chave de utilizador especificada.

GetUser(String, Boolean)

Obtém a informação de utilizador de membro associada ao nome de utilizador especificado.

GetUserNameByEmail(String)

Obtém o nome de utilizador associado ao endereço de email especificado.

Initialize(String, NameValueCollection)

Inicializa a ActiveDirectoryMembershipProvider instância com os valores das propriedades dos ficheiros de configuração da aplicação. Este método não é pensado para ser chamado do seu código.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Levanta o ValidatingPassword evento se um gestor de eventos tiver sido definido.

(Herdado de MembershipProvider)
ResetPassword(String, String)

Redefine a palavra-passe de um utilizador para uma nova palavra-passe gerada automaticamente.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
UnlockUser(String)

Limpa um bloqueio para que um utilizador de subscrição possa ser validado.

UpdateUser(MembershipUser)

Atualiza informações sobre um utilizador no armazenamento de dados do Active Directory.

ValidateUser(String, String)

Verifica se o nome de utilizador e a palavra-passe especificados existem no armazenamento de dados do Active Directory.

evento

Name Description
ValidatingPassword

Ocorre quando um utilizador é criado, uma palavra-passe é alterada ou uma palavra-passe é redefinida.

(Herdado de MembershipProvider)

Aplica-se a

Ver também