Partilhar via


ActiveDirectoryMembershipProvider Classe

Definição

Gerencia o armazenamento de informações de associação de um aplicativo ASP.NET em servidores do Active Directory e do Modo de Aplicativo do Active Directory.

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

Os exemplos de código a seguir mostram o arquivo Web.config para um aplicativo ASP.NET configurado para usar uma ActiveDirectoryMembershipProvider instância. O primeiro exemplo usa os mapeamentos padrão para atributos do Active Directory e não dá suporte à segurança de redefinição de senha com pergunta e resposta nem à capacidade de chamar métodos de pesquisa. O segundo exemplo mostra todas as configurações de atributo permitidas para uma ActiveDirectoryMembershipProvider instância.

O primeiro exemplo é um arquivo de configuração simples usando mapeamentos padrão para atributos do Active Directory.

<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>

Este exemplo mostra todas as configurações de atributo disponíveis para uma instância do ActiveDirectoryMembershipProvider.

<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=1.0.3600, Culture=neutral,
          PublicKeyToken=b03f5f7f11d50a3a"
          connectionStringName="ADService"
          connectionUsername="UserWithAppropriateRights"
          connectionPassword="PasswordForUser"
          connectionProtection="Secure"
          enablePasswordReset="true"
          enableSearchMethods="true"
          requiresQuestionAndAnswer="true"
          applicationName="/"
          description="Default AD connection"
          requiresUniqueEmail="false"
          clientSearchTimeout="30"
          serverSearchTimeout="30"
          timeoutUnit="Minutes"
          attributeMapPasswordQuestion="department"
          attributeMapPasswordAnswer="division"
          attributeMapFailedPasswordAnswerCount="singleIntAttribute"
         attributeMapFailedPasswordAnswerTime="singleLargeIntAttribute"
         attributeMapFailedPasswordAnswerLockoutTime="singleLargeIntAttribute"
          attributeMapEmail = "mail"
          attributeMapUsername = "userPrincipalName"
          maxInvalidPasswordAttempts = "5"
          passwordAttemptWindow = "10"
          passwordAnswerAttemptLockoutDuration = "30"
          minRequiredPasswordLength="7"
          minRequiredNonalphanumericCharacters="1"
          passwordStrengthRegularExpression="
          @\"(?=.{6,})(?=(.*\d){1,})(?=(.*\W){1,})" />
        />
      </providers>
    </membership>
  </system.web>
</configuration>

clientSearchTimeout e serverSearchTimeout o padrão é minutos. Para alterar as unidades, defina o valor do timeoutUnit atributo como um de "Dias", "Horas", "Minutos", "Segundos" ou "Milissegundos". Se o atributo não for especificado, o padrão será "Minutos".

Comentários

Essa classe é usada pelas Membership classes e MembershipUser para fornecer serviços de associação para um aplicativo ASP.NET usando um servidor AD (Active Directory) ou ADAM (Modo de Aplicativo do Active Directory).

Observação

O uso de um servidor ADAM requer uma configuração específica. Para obter mais informações, consulte a seção Configuração do ADAM abaixo.

Importante

A ActiveDirectoryMembershipProvider instância funciona apenas na configuração padrão da política de confiança total de ASP.NET. Para usar a ActiveDirectoryMembershipProvider instância em qualquer nível de confiança parcial, você deve fazer alterações no arquivo de política de confiança apropriado para seu aplicativo ou criar um assembly de "área restrita" implantado no GAC.

A ActiveDirectoryMembershipProvider classe requer permissão irrestrita DirectoryServicesPermission para ser executada. Essa permissão não é adicionada a nenhum dos arquivos de política de confiança parcial fornecidos com ASP.NET. Embora a adição da DirectoryServicesPermission permissão a um arquivo de política de confiança parcial habilite o ActiveDirectoryMembershipProvider uso da classe , isso torna as System.DirectoryServices classes de namespace disponíveis para qualquer código em execução em suas páginas ASP.NET. Essa opção não é recomendada para servidores Web que precisam ser executados em um modo seguro e bloqueado.

Como alternativa, você pode criar um assembly de "área restrita" que chama a ActiveDirectoryMembershipProvider classe . Esse assembly pode conter uma classe wrapper que encaminha chamadas de método para a ActiveDirectoryMembershipProvider classe ou uma classe derivada da ActiveDirectoryMembershipProvider classe . Em ambos os casos, a classe wrapper deve declarar permissão irrestrita DirectoryServicesPermission . Implante o assembly de área restrita no GAC e marque o assembly com o AllowPartiallyTrustedCallersAttribute atributo (APTCA). Isso permitirá que seu código de ASP.NET parcialmente confiável chame sua classe wrapper e, como a classe wrapper declara internamente a permissão irrestrita DirectoryServicesPermission , sua classe wrapper poderá chamar o provedor com êxito

Você deve criar uma entrada connectionStrings Element (ASP.NET Settings Schema) no arquivo Web.config que identifica o servidor do Active Directory, o domínio do Active Directory ou a partição de aplicativo ADAM a ser usada. O provedor só funcionará no escopo do domínio ou em um subescopo dentro de um domínio. A tabela a seguir lista as cadeias de conexão permitidas e o escopo usado.

Cadeia de conexão Escopo
<LDAP:// domínio ou servidor>:[porta]

O número da porta é opcional para ADAM e não é necessário para o Active Directory.
O provedor é executado no domínio ou servidor especificado. Com o AD, a criação e a exclusão do usuário são feitas no contêiner de usuários padrão. Todas as outras operações, incluindo quaisquer métodos de pesquisa, terão raiz no contexto de nomenclatura padrão para o domínio.

Se a cadeia de conexão especificar um domínio do Active Directory em vez de um servidor específico e a EnablePasswordReset propriedade for true, a ActiveDirectoryMembershipProvider instância sempre se conectará ao servidor com a função PDC do domínio para garantir que as alterações de senha entrem em vigor e estejam disponíveis quando o ValidateUser método for chamado.

Essa cadeia de conexão não é permitida ao usar ADAM e gerará um NotSupportedException.
<LDAP:// domínio ou servidor>:[port]/<container dn>

O número da porta é opcional para ADAM e não é necessário para o Active Directory.
O provedor é executado no domínio ou servidor especificado. A criação e a exclusão do usuário só são feitas no contêiner especificado. Todas as outras operações, incluindo quaisquer métodos de pesquisa, executam pesquisas de subárvores com raiz no contêiner.

Para servidores ADAM, o contêiner especifica a raiz de uma partição de aplicativo ou um contêiner dentro de uma partição de aplicativo.

Recomendamos que a cadeia de conexão defina um contêiner específico para melhorar o desempenho.

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

A tabela a seguir lista as ActiveDirectoryMembershipUser propriedades e seus mapeamentos de atributo padrão.

Importante

A ActiveDirectoryMembershipProvider classe não verifica explicitamente se os atributos do provedor não são mapeados para os atributos principais do objeto de usuário no diretório. Você deve garantir que informações confidenciais do diretório não sejam expostas por meio de atributos mapeados.

Propriedade Atributo de diretório padrão Pode ser mapeado?
ProviderUserKey securityIdentifier Não
UserName userPrincipalName Sim, mas deve ser userPrincipalName ou sAMAccountName
Comment comentário Não
CreationDate whenCreated Não
Email mail Sim, mas deve ser um atributo de valor único do tipo Cadeia de Caracteres Unicode.
LastActivityDate N/D Não há suporte para ActiveDirectoryMembershipProvider.
LastLoginDate N/D Não há suporte para ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet Não
PasswordQuestion nenhum Sim, mas deve ser um atributo de valor único do tipo Cadeia de Caracteres Unicode.
IsApproved Controle de Conta de Usuário (AD)

mDS-UserAccountDisabled (ADAM)
Não
IsLockedOut computado do lockoutTime e da duração do bloqueio do AD (AD no Windows 2000)

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

MSDS-User-Account-Control-Computed (ADAM)
Não
LastLockoutDate Se o usuário estiver bloqueado devido a muitas tentativas de senha incorretas, o atributo de tempo de bloqueio será retornado.

Se o usuário estiver bloqueado devido a muitas tentativas de resposta de senha incorretas, o valor armazenado no atributo definido por attributeMapFailedPasswordAnswerLockoutTime será retornado.

Se o usuário estiver bloqueado devido a uma senha inválida e muitas tentativas de senha incorretas, o valor de data/hora mais recente será retornado.

Se a conta não estiver bloqueada, retorne 1/1/1754 para compatibilidade do SQL.
Não

Quando as RequiresQuestionAndAnswer propriedades e EnablePasswordReset são true, a ActiveDirectoryMembershipProvider classe dá suporte à segurança de redefinição de senha exigindo que o usuário responda a uma pergunta predeterminada. Para dar suporte à pergunta e resposta, você deve definir os seguintes atributos de configuração usando o elemento add para provedores para associação (ASP.NET Esquema de Configurações) no arquivo de configuração do aplicativo.

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

Para obter mais informações sobre como usar a segurança de redefinição de senha, consulte a RequiresQuestionAndAnswer propriedade .

Conexões do Active Directory

Quando a ActiveDirectoryMembershipProvider classe é usada para se conectar a um servidor do Active Directory ou do ADAM (Modo de Aplicativo do Active Directory), o connectionProtection atributo definido usando o elemento add para provedores para associação (ASP.NET Esquema de Configurações) no arquivo de configuração do aplicativo pode restringir os tipos de operações que a ActiveDirectoryMembershipProvider classe pode executar na conexão. O connectionProtection atributo também determina os métodos que a ActiveDirectoryMembershipProvider instância usará para criar a conexão com o servidor Active Directory ou ADAM.

A tabela a seguir mostra o efeito do connectionProtection atributo ao se conectar a um Active Directory.

Configuração de connectionProtection Efeito
None A ActiveDirectoryMembershipProvider classe se conectará a um Active Directory, com essas restrições.

- Qualquer método que define uma senha falhará. O Active Directory requer uma conexão segura ao alterar senhas.
– Você deve definir explicitamente os connectionUsername atributos e connectionPassword usando o elemento add para provedores para associação (ASP.NET Esquema de Configurações) no arquivo de configuração do aplicativo; caso contrário, a ActiveDirectoryMembershipProvider instância gerará uma ProviderException exceção.
Secure A ActiveDirectoryMembershipProvider classe tentará se conectar ao Active Directory usando SSL. Se o SSL falhar, será feita uma segunda tentativa de conexão com o Active Directory usando o sinal e o selo. Se ambas as tentativas falharem, a ActiveDirectoryMembershipProvider instância gerará uma ProviderException exceção.

Há suporte para credenciais de processo e credenciais explícitas.

A tabela a seguir mostra o efeito do connectionProtection atributo ao se conectar a um servidor ADAM.

Configuração de connectionProtection Efeito
None A ActiveDirectoryMembershipProvider classe se conectará a um servidor ADAM, com essa restrição.

- Qualquer método que define senhas falhará, a menos que você configure explicitamente o servidor ADAM para permitir que as senhas sejam enviadas e alteradas em uma conexão insegura.

Há suporte para credenciais de processo e credenciais explícitas.
Secure A ActiveDirectoryMembershipProvider classe tentará se conectar ao servidor ADAM usando SSL. Se uma conexão não puder ser feita, a ActiveDirectoryMembershipProvider instância gerará uma ProviderException exceção.

Há suporte para credenciais de processo e credenciais explícitas.

Configuração de ADAM

Ao usar um servidor ADAM, a instância ADAM deve conter um esquema que defina a User classe . Você pode importar a User classe com uma importação LDIF do MS-User.ldf arquivo disponível no diretório de instalação do ADAM.

A ActiveDirectoryMembershipProvider classe funcionará com um servidor ADAM configurado para usar as portas de rede padrão. A tabela a seguir mostra os padrões esperados para o servidor ADAM.

configuração connectionProtection Porta ADAM esperada
None 389
Secure 636

Construtores

ActiveDirectoryMembershipProvider()

Cria uma nova instância da classe ActiveDirectoryMembershipProvider.

Propriedades

ApplicationName

O nome do aplicativo que está usando o provedor de associação personalizado.

CurrentConnectionProtection

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

Description

Obtém uma breve descrição amigável adequada para exibição em ferramentas administrativas ou outras IUs (interfaces do usuário).

(Herdado de ProviderBase)
EnablePasswordReset

Obtém um valor que indica se a instância ActiveDirectoryMembershipProvider está configurada para permitir que os usuários redefinam suas senhas.

EnablePasswordRetrieval

Obtém um valor que indica se a senha do usuário pode ser recuperada do armazenamento de dados do Active Directory. Essa propriedade sempre retorna false.

EnableSearchMethods

Obtém um valor que indica se os métodos ActiveDirectoryMembershipProvider orientados à pesquisa estão disponíveis.

MaxInvalidPasswordAttempts

Obtém o número de tentativas de resposta com falha que um usuário tem permissão para a pergunta de redefinição de senha.

MinRequiredNonAlphanumericCharacters

Obtém o número mínimo de caracteres especiais que devem estar presentes em uma senha válida.

MinRequiredPasswordLength

Obtém o comprimento mínimo necessário para uma senha.

Name

Obtém o nome amigável usado para referir-se ao provedor durante a configuração.

(Herdado de ProviderBase)
PasswordAnswerAttemptLockoutDuration

Obter o período durante o qual uma conta de usuário é bloqueada depois que o usuário faz muitas tentativas de resposta de senha incorretas.

PasswordAttemptWindow

Obtém a janela de tempo durante a qual as tentativas com falha consecutivas de fornecer uma senha válida ou uma resposta de senha válida são rastreadas.

PasswordFormat

Obtém um valor que indica o formato das senhas no armazenamento de dados do Active Directory.

PasswordStrengthRegularExpression

Obtém a expressão regular usada para avaliar uma senha.

RequiresQuestionAndAnswer

Obtém um valor que indica se o provedor de associação foi configurado para exigir uma pergunta e uma resposta de senha ao criar um usuário.

RequiresUniqueEmail

Obtém um valor que indica se um endereço de email armazenado no servidor do Active Directory deve ser exclusivo.

Métodos

ChangePassword(String, String, String)

Altera a senha para o usuário especificado.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Atualiza a pergunta e a resposta da senha para um usuário no repositório do Active Directory.

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

Adiciona um novo usuário ao armazenamento de dados do Active Directory.

DecryptPassword(Byte[])

Descriptografa uma senha criptografada.

(Herdado de MembershipProvider)
DeleteUser(String, Boolean)

Remove informações de associação do usuário do armazenamento de dados do Active Directory.

EncryptPassword(Byte[])

Criptografa uma senha.

(Herdado de MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Criptografa a senha especificada usando o modo de compatibilidade de senha especificado.

(Herdado de MembershipProvider)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

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

Retorna uma coleção de usuários associados de armazenamento de dados do Active Directory com base no endereço de email do usuário.

FindUsersByName(String, Int32, Int32, Int32)

Retorna uma coleção de usuários de armazenamento de dados do Active Directory com base no nome de usuário.

GeneratePassword()

Gera uma senha aleatória.

GetAllUsers(Int32, Int32, Int32)

Obtém uma coleção de todos os usuários armazenados em uma fonte de dados do Active Directory.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetNumberOfUsersOnline()

Gera uma exceção NotSupportedException em todos os casos.

GetPassword(String, String)

Retorna a senha do usuário especificado do banco de dados. A classe ActiveDirectoryMembershipProvider não dá suporte a este método.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetUser(Object, Boolean)

Obtém as informações de usuário associado relacionadas à chave de usuário especificada.

GetUser(String, Boolean)

Obtém as informações de usuário associado relacionadas ao nome de usuário especificado.

GetUserNameByEmail(String)

Obtém o nome de usuário associado ao endereço de email especificado.

Initialize(String, NameValueCollection)

Inicializa a instância de ActiveDirectoryMembershipProvider com os valores de propriedade dos arquivos de configuração do aplicativo. Esse método não deve ser chamado do seu código.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Gerará o evento ValidatingPassword se um manipulador de eventos tiver sido definido.

(Herdado de MembershipProvider)
ResetPassword(String, String)

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
UnlockUser(String)

Limpa um bloqueio de modo que um usuário associado possa ser validado.

UpdateUser(MembershipUser)

Atualiza as informações sobre um usuário no armazenamento de dados do Active Directory.

ValidateUser(String, String)

Verifica se o nome de usuário especificado e a senha existem no armazenamento de dados do Active Directory.

Eventos

ValidatingPassword

Ocorre quando um usuário é criado, uma senha é alterada ou uma senha é redefinida.

(Herdado de MembershipProvider)

Aplica-se a

Confira também