Compartir a través de


ActiveDirectoryMembershipProvider Clase

Definición

Administra el almacenamiento de información de pertenencia de aplicaciones ASP.NET en servidores Active Directory y 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
Herencia
ActiveDirectoryMembershipProvider

Ejemplos

En los ejemplos de código siguientes se muestra el archivo Web.config para una aplicación de ASP.NET configurada para usar una ActiveDirectoryMembershipProvider instancia de . En el primer ejemplo se usan las asignaciones predeterminadas para los atributos de Active Directory y no se admite la seguridad de restablecimiento de contraseña con preguntas y respuestas ni la capacidad de llamar a métodos de búsqueda. En el segundo ejemplo se muestran todos los valores de atributo permitidos para una ActiveDirectoryMembershipProvider instancia de .

El primer ejemplo es un archivo de configuración simple mediante asignaciones predeterminadas para atributos de 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>

En este ejemplo se muestran todos los valores de atributo disponibles para una instancia de 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 y serverSearchTimeout el valor predeterminado es minutos. Para cambiar las unidades, establezca el valor del timeoutUnit atributo en uno de los "Días", "Horas", "Minutos", "Segundos" o "Milisegundos". Si no se especifica el atributo , el valor predeterminado es "Minutos".

Comentarios

Las clases y MembershipUser usan Membership esta clase para proporcionar servicios de pertenencia para una aplicación de ASP.NET mediante un servidor de Active Directory (AD) o modo de aplicación de Active Directory (ADAM).

Nota

El uso de un servidor ADAM requiere una configuración específica. Para obtener más información, consulte la sección Configuración de ADAM a continuación.

Importante

La ActiveDirectoryMembershipProvider instancia solo funciona en la configuración predeterminada de la directiva de plena confianza de ASP.NET. Para usar la ActiveDirectoryMembershipProvider instancia en cualquier nivel de confianza parcial, debe realizar cambios en el archivo de directiva de confianza adecuado para la aplicación o debe crear un ensamblado de "espacio aislado" implementado en la GAC.

La ActiveDirectoryMembershipProvider clase requiere permiso sin restricciones DirectoryServicesPermission para ejecutarse. Este permiso no se agrega a ninguno de los archivos de directiva de confianza parcial proporcionados con ASP.NET. Aunque agregar el DirectoryServicesPermission permiso a un archivo de directiva de confianza parcial habilitará el uso de la ActiveDirectoryMembershipProvider clase , al hacerlo, las System.DirectoryServices clases de espacio de nombres estarán disponibles para cualquier código que se ejecute en las páginas de ASP.NET. Esta opción no se recomienda para los servidores web que necesiten ejecutarse en modo seguro y bloqueado.

Como alternativa, puede crear un ensamblado de "espacio aislado" que llame a la ActiveDirectoryMembershipProvider clase . Este ensamblado puede contener una clase contenedora que reenvía las llamadas de método a la ActiveDirectoryMembershipProvider clase o a una clase que deriva de la ActiveDirectoryMembershipProvider clase . En cualquier caso, la clase contenedora debe declarar el permiso sin restricciones DirectoryServicesPermission . Implemente el ensamblado de espacio aislado en la GAC y marque el ensamblado con el AllowPartiallyTrustedCallersAttribute atributo (APTCA). Esto permitirá que el código de ASP.NET de confianza parcial llame a la clase contenedora y, dado que la clase contenedora afirma internamente el permiso sin restricciones DirectoryServicesPermission , la clase contenedora podrá llamar correctamente al proveedor.

Debe crear una entrada connectionStrings Element (ASP.NET Settings Schema) en el archivo Web.config que identifica el servidor de Active Directory, el dominio de Active Directory o la partición de aplicación ADAM que se va a usar. El proveedor solo funcionará en el ámbito del dominio o en un subámbito dentro de un dominio. En la tabla siguiente se enumeran las cadenas de conexión permitidas y el ámbito utilizado.

Cadena de conexión Ámbito
<LDAP:// dominio o servidor>:[puerto]

El número de puerto es opcional para ADAM y no es necesario para Active Directory.
El proveedor se ejecuta en el dominio o servidor especificados. Con AD, la creación y eliminación de usuarios se realiza en el contenedor de usuarios predeterminado. Todas las demás operaciones, incluidos los métodos de búsqueda, se raízrán en el contexto de nomenclatura predeterminado para el dominio.

Si la cadena de conexión especifica un dominio de Active Directory en lugar de un servidor específico y la EnablePasswordReset propiedad es true, la ActiveDirectoryMembershipProvider instancia siempre se conectará al servidor con el rol PDC del dominio para asegurarse de que los cambios de contraseña surtan efecto y estén disponibles cuando se llame al ValidateUser método .

Esta cadena de conexión no se permite al usar ADAM y producirá una NotSupportedExceptionexcepción .
<LDAP:// dominio o servidor>:[puerto]/<contenedor dn>

El número de puerto es opcional para ADAM y no es necesario para Active Directory.
El proveedor se ejecuta en el dominio o servidor especificados. La creación y eliminación de usuarios solo se realiza en el contenedor especificado. Todas las demás operaciones, incluidos los métodos de búsqueda, realizan búsquedas de subárboles raíz en el contenedor.

En el caso de los servidores ADAM, el contenedor especifica la raíz de una partición de aplicación o un contenedor dentro de una partición de aplicación.

Se recomienda que la cadena de conexión defina un contenedor específico para mejorar el rendimiento.

La ActiveDirectoryMembershipProvider instancia asigna atributos de directorio a ActiveDirectoryMembershipUser propiedades. Los atributos predeterminados se usan si no se realiza ninguna asignación de atributos en el archivo Web.config. Para obtener más información sobre las asignaciones de atributos, consulte las propiedades individuales de la documentación de la ActiveDirectoryMembershipUser clase.

En la tabla siguiente se enumeran las ActiveDirectoryMembershipUser propiedades y sus asignaciones de atributos predeterminadas.

Importante

La ActiveDirectoryMembershipProvider clase no comprueba explícitamente que los atributos del proveedor no están asignados a los atributos principales del objeto de usuario en el directorio. Debe asegurarse de que la información confidencial del directorio no se expone a través de atributos asignados.

Propiedad. Atributo de directorio predeterminado ¿Se puede asignar?
ProviderUserKey securityIdentifier No
UserName userPrincipalName Sí, pero debe ser userPrincipalName o sAMAccountName.
Comment comment No
CreationDate whenCreated No
Email mail Sí, pero debe ser un atributo de un solo valor de tipo String Unicode.
LastActivityDate N/D No admitida por ActiveDirectoryMembershipProvider.
LastLoginDate N/D No admitida por ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet No
PasswordQuestion None Sí, pero debe ser un atributo de un solo valor de tipo String Unicode.
IsApproved Control de cuentas de usuario (AD)

mDS-UserAccountDisabled (ADAM)
No
IsLockedOut calculado desde lockoutTime y la duración del bloqueo de AD (AD en Windows 2000)

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

msDS-User-Account-Control-Computed (ADAM)
No
LastLockoutDate Si el usuario está bloqueado debido a demasiados intentos incorrectos de contraseña, se devuelve el atributo de tiempo de bloqueo.

Si el usuario está bloqueado debido a demasiados intentos incorrectos de respuesta de contraseña, se devuelve el valor almacenado en el atributo definido por attributeMapFailedPasswordAnswerLockoutTime .

Si el usuario está bloqueado debido a una contraseña incorrecta y a demasiados intentos de contraseña incorrecta, se devuelve el valor de fecha y hora más reciente.

Si la cuenta no está bloqueada, devuelva 1/1/1754 por compatibilidad con SQL.
No

Cuando las RequiresQuestionAndAnswer propiedades y EnablePasswordReset son true, la clase admite la ActiveDirectoryMembershipProvider seguridad de restablecimiento de contraseña al exigir al usuario que responda a una pregunta predeterminada. Para admitir la pregunta y la respuesta, debe establecer los siguientes atributos de configuración mediante el elemento add para proveedores para la pertenencia (ASP.NET esquema de configuración) en el archivo de configuración de la aplicación.

Atributo de configuración Tipo de atributo
attributeMapPasswordQuestion Debe ser un atributo de un solo valor de tipo String Unicode.
attributeMapPasswordAnswer Debe ser un atributo de un solo valor de tipo String Unicode.
attributeMapFailedPasswordAnswerCount Debe ser un atributo de un solo valor de tipo Integer.
attributeMapFailedPasswordAnswerTime Debe ser un atributo con un solo valor de tipo Integer/Interval grande.
attributeMapFailedPasswordAnswerLockoutTime Debe ser un atributo con un solo valor de tipo Integer/Interval grande.

Para obtener más información sobre el uso de la seguridad de restablecimiento de contraseña, consulte la RequiresQuestionAndAnswer propiedad .

Conexiones de Active Directory

Cuando la ActiveDirectoryMembershipProvider clase se usa para conectarse a un servidor de Active Directory o de modo de aplicación de Active Directory (ADAM), el connectionProtection atributo que se establece mediante el elemento add para proveedores para la pertenencia (esquema de configuración de ASP.NET) en el archivo de configuración de la aplicación puede restringir los tipos de operaciones que la ActiveDirectoryMembershipProvider clase puede realizar a través de la conexión. El connectionProtection atributo también determina los métodos que usará la ActiveDirectoryMembershipProvider instancia para crear la conexión al servidor Active Directory o ADAM.

En la tabla siguiente se muestra el efecto del connectionProtection atributo al conectarse a una instancia de Active Directory.

Valor de connectionProtection Efecto
None La ActiveDirectoryMembershipProvider clase se conectará a una instancia de Active Directory, con estas restricciones.

- Se producirá un error en cualquier método que establezca una contraseña. Active Directory requiere una conexión segura al cambiar las contraseñas.
- Debe establecer explícitamente los connectionUsername atributos y connectionPassword mediante el elemento add para proveedores para la pertenencia (ASP.NET esquema de configuración) en el archivo de configuración de la aplicación; de lo contrario, la ActiveDirectoryMembershipProvider instancia producirá una ProviderException excepción.
Secure La ActiveDirectoryMembershipProvider clase intentará conectarse a Active Directory mediante SSL. Si se produce un error en SSL, se realizará un segundo intento de conexión a Active Directory mediante el inicio de sesión y el sello. Si se produce un error en ambos intentos, la ActiveDirectoryMembershipProvider instancia producirá una ProviderException excepción.

Se admiten tanto las credenciales de proceso como las credenciales explícitas.

En la tabla siguiente se muestra el efecto del connectionProtection atributo al conectarse a un servidor ADAM.

Valor de connectionProtection Efecto
None La ActiveDirectoryMembershipProvider clase se conectará a un servidor ADAM, con esta restricción.

- Cualquier método que establezca contraseñas producirá un error a menos que configure explícitamente el servidor ADAM para permitir que las contraseñas se envíen y cambien a través de una conexión no segura.

Se admiten tanto las credenciales de proceso como las credenciales explícitas.
Secure La ActiveDirectoryMembershipProvider clase intentará conectarse al servidor ADAM mediante SSL. Si no se puede establecer una conexión, la ActiveDirectoryMembershipProvider instancia producirá una ProviderException excepción.

Se admiten tanto las credenciales de proceso como las credenciales explícitas.

Configuración de ADAM

Cuando se usa un servidor ADAM, la instancia de ADAM debe contener un esquema que defina la User clase . Puede importar la User clase con una importación LDIF del MS-User.ldf archivo disponible en el directorio de instalación de ADAM.

La ActiveDirectoryMembershipProvider clase funcionará con un servidor ADAM configurado para usar los puertos de red predeterminados. En la tabla siguiente se muestran los valores predeterminados esperados para el servidor ADAM.

configuración connectionProtection Puerto ADAM esperado
None 389
Secure 636

Constructores

ActiveDirectoryMembershipProvider()

Crea una nueva instancia de la clase ActiveDirectoryMembershipProvider.

Propiedades

ApplicationName

Nombre de la aplicación con el proveedor de pertenencia personalizado.

CurrentConnectionProtection

Obtiene el nivel de seguridad actual utilizado para proteger las comunicaciones con el servidor.

Description

Obtiene una descripción breve y fácil de comprender apropiada para mostrarla en las herramientas administrativas u otras interfaces de usuario.

(Heredado de ProviderBase)
EnablePasswordReset

Obtiene un valor que indica si la instancia de ActiveDirectoryMembershipProvider está configurada para permitir que los usuarios restablezcan sus contraseñas.

EnablePasswordRetrieval

Obtiene un valor que indica si se puede recuperar la contraseña de usuario del almacén de datos de Active Directory. Esta propiedad devuelve siempre false.

EnableSearchMethods

Obtiene un valor que indica si están disponibles los métodos ActiveDirectoryMembershipProvider orientados a búsqueda.

MaxInvalidPasswordAttempts

Obtiene el número de intentos de respuesta incorrecta que se permite a un usuario para la pregunta de restablecimiento de contraseña.

MinRequiredNonAlphanumericCharacters

Obtiene el número mínimo de caracteres especiales que debe contener una contraseña válida.

MinRequiredPasswordLength

Obtiene la longitud mínima necesaria para una contraseña.

Name

Obtiene el nombre descriptivo utilizado para hacer referencia al proveedor durante la configuración.

(Heredado de ProviderBase)
PasswordAnswerAttemptLockoutDuration

Obtiene el tiempo durante el cuál permanece bloqueada una cuenta de usuario después de hacer el usuario demasiados intentos de respuesta de contraseña incorrecta.

PasswordAttemptWindow

Obtiene la ventana del tiempo durante el que se realiza un seguimiento de intentos incorrectos consecutivos para proporcionar una contraseña o respuesta de contraseña válida.

PasswordFormat

Obtiene un valor que indica el formato de contraseñas del almacén de datos de Active Directory.

PasswordStrengthRegularExpression

Obtiene la expresión regular utilizada para evaluar una contraseña.

RequiresQuestionAndAnswer

Obtiene un valor que indica si el proveedor de pertenencia está configurado para solicitar una pregunta y respuesta de contraseña al crear usuarios.

RequiresUniqueEmail

Obtiene un valor que indica si una dirección de correo electrónico almacenada en el servidor de Active Directory tiene que ser única.

Métodos

ChangePassword(String, String, String)

Cambia la contraseña del usuario especificado.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Actualiza la pregunta y respuesta de contraseña de un usuario del almacén de Active Directory.

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

Agrega un nuevo usuario al almacén de datos de Active Directory.

DecryptPassword(Byte[])

Descifra una contraseña cifrada.

(Heredado de MembershipProvider)
DeleteUser(String, Boolean)

Elimina información de pertenencia de usuario del almacén de datos de Active Directory.

EncryptPassword(Byte[])

Cifra una contraseña.

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

Cifra la contraseña especificada usando el modo de compatibilidad de contraseña especificado.

(Heredado de MembershipProvider)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

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

Devuelve una colección de usuarios de pertenencia del almacén de datos de Active Directory basándose en la dirección de correo electrónico del usuario.

FindUsersByName(String, Int32, Int32, Int32)

Devuelve una colección de usuarios del almacén de datos de Active Directory basándose en el nombre de usuario.

GeneratePassword()

Genera una contraseña aleatoria.

GetAllUsers(Int32, Int32, Int32)

Obtiene una colección de todos los usuarios almacenados en un origen de datos de Active Directory.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetNumberOfUsersOnline()

Se produce una excepción NotSupportedException en todos los casos.

GetPassword(String, String)

Devuelve la contraseña del usuario especificado de la base de datos. La clase ActiveDirectoryMembershipProvider no admite este método.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetUser(Object, Boolean)

Obtiene la información del usuario de pertenencia asociada a la clave de usuario especificada.

GetUser(String, Boolean)

Obtiene la información del usuario de pertenencia asociada al nombre de usuario especificado.

GetUserNameByEmail(String)

Obtiene el nombre de usuario asociado con la dirección de correo electrónico especificada.

Initialize(String, NameValueCollection)

Inicializa la instancia de ActiveDirectoryMembershipProvider con los valores de propiedad de los archivos de configuración de la aplicación. No está prevista la llamada a este método desde el código.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Genera el evento ValidatingPassword si se ha definido un controlador de eventos.

(Heredado de MembershipProvider)
ResetPassword(String, String)

Restablece la contraseña de un usuario a una nueva contraseña generada automáticamente.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
UnlockUser(String)

Elimina un bloqueo para que se puedan validar usuarios de pertenencia.

UpdateUser(MembershipUser)

Actualiza información sobre un usuario del almacén de datos de Active Directory.

ValidateUser(String, String)

Comprueba que el nombre de usuario y contraseña especificados existen en el almacén de datos de Active Directory.

Eventos

ValidatingPassword

Se produce cuando se crea un usuario o se cambia o se restablece una contraseña.

(Heredado de MembershipProvider)

Se aplica a

Consulte también