Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original.
Traducción
Original
Este tema aún no ha recibido ninguna valoración - Valorar este tema

ActiveDirectoryMembershipProvider (Clase)

Administra el almacenamiento de información de pertenencia de aplicaciones ASP.NET en servidores Active Directory y Active Directory Application Mode.

System.Object
  System.Configuration.Provider.ProviderBase
    System.Web.Security.MembershipProvider
      System.Web.Security.ActiveDirectoryMembershipProvider

Espacio de nombres:  System.Web.Security
Ensamblado:  System.Web (en System.Web.dll)
[DirectoryServicesPermissionAttribute(SecurityAction.LinkDemand, Unrestricted = true)]
[DirectoryServicesPermissionAttribute(SecurityAction.InheritanceDemand, Unrestricted = true)]
public class ActiveDirectoryMembershipProvider : MembershipProvider

El tipo ActiveDirectoryMembershipProvider expone los siguientes miembros.

  Nombre Descripción
Método público ActiveDirectoryMembershipProvider Crea una nueva instancia de la clase ActiveDirectoryMembershipProvider.
Arriba
  Nombre Descripción
Propiedad pública ApplicationName Nombre de la aplicación que utiliza el proveedor de pertenencia personalizado. (Invalida a MembershipProvider.ApplicationName).
Propiedad pública CurrentConnectionProtection Obtiene el nivel de seguridad actual utilizado para proteger las comunicaciones con el servidor.
Propiedad pública Description Obtiene una descripción breve y fácil de comprender apropiada para mostrarla en las herramientas administrativas u otras interfaces de usuario. (Se hereda de ProviderBase).
Propiedad pública EnablePasswordReset Obtiene un valor que indica si la instancia de ActiveDirectoryMembershipProvider está configurada para permitir que los usuarios restablezcan sus contraseñas. (Invalida a MembershipProvider.EnablePasswordReset).
Propiedad pública 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. (Invalida a MembershipProvider.EnablePasswordRetrieval).
Propiedad pública EnableSearchMethods Obtiene un valor que indica si están disponibles los métodos ActiveDirectoryMembershipProvider orientados a búsqueda.
Propiedad pública MaxInvalidPasswordAttempts Obtiene el número de intentos de respuesta incorrecta que se permite a un usuario para la pregunta de restablecimiento de contraseña. (Invalida a MembershipProvider.MaxInvalidPasswordAttempts).
Propiedad pública MinRequiredNonAlphanumericCharacters Obtiene el número mínimo de caracteres especiales que deben estar presentes en una contraseña válida. (Invalida a MembershipProvider.MinRequiredNonAlphanumericCharacters).
Propiedad pública MinRequiredPasswordLength Obtiene la longitud mínima necesaria para una contraseña. (Invalida a MembershipProvider.MinRequiredPasswordLength).
Propiedad pública Name Obtiene el nombre descriptivo utilizado para hacer referencia al proveedor durante la configuración. (Se hereda de ProviderBase).
Propiedad pública 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.
Propiedad pública 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. (Invalida a MembershipProvider.PasswordAttemptWindow).
Propiedad pública PasswordFormat Obtiene un valor que indica el formato de contraseñas del almacén de datos de Active Directory. (Invalida a MembershipProvider.PasswordFormat).
Propiedad pública PasswordStrengthRegularExpression Obtiene la expresión regular utilizada para evaluar una contraseña. (Invalida a MembershipProvider.PasswordStrengthRegularExpression).
Propiedad pública 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. (Invalida a MembershipProvider.RequiresQuestionAndAnswer).
Propiedad pública RequiresUniqueEmail Obtiene un valor que indica si las direcciones de correo electrónico almacenadas en el servidor Active Directory deben ser únicas. (Invalida a MembershipProvider.RequiresUniqueEmail).
Arriba
  Nombre Descripción
Método público ChangePassword Cambia la contraseña del usuario especificado. (Invalida a MembershipProvider.ChangePassword(String, String, String)).
Método público ChangePasswordQuestionAndAnswer Actualiza la pregunta y respuesta de contraseña de un usuario del almacén de Active Directory. (Invalida a MembershipProvider.ChangePasswordQuestionAndAnswer(String, String, String, String)).
Método público CreateUser Agrega un nuevo usuario al almacén de datos de Active Directory. (Invalida a MembershipProvider.CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus)).
Método protegido DecryptPassword Descifra una contraseña cifrada. (Se hereda de MembershipProvider).
Método público DeleteUser Elimina información de pertenencia de usuario del almacén de datos de Active Directory. (Invalida a MembershipProvider.DeleteUser(String, Boolean)).
Método protegido EncryptPassword(Byte[]) Cifra una contraseña. (Se hereda de MembershipProvider).
Método protegido EncryptPassword(Byte[], MembershipPasswordCompatibilityMode) Cifra la contraseña especificada usando el modo de compatibilidad de contraseña especificado. (Se hereda de MembershipProvider).
Método público Equals(Object) Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object).
Método protegido Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público FindUsersByEmail 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. (Invalida a MembershipProvider.FindUsersByEmail(String, Int32, Int32, Int32)).
Método público FindUsersByName Devuelve una colección de usuarios del almacén de datos de Active Directory basándose en el nombre de usuario. (Invalida a MembershipProvider.FindUsersByName(String, Int32, Int32, Int32)).
Método público GeneratePassword Genera una contraseña aleatoria.
Método público GetAllUsers Obtiene una colección de todos los usuarios almacenados en un origen de datos de Active Directory. (Invalida a MembershipProvider.GetAllUsers(Int32, Int32, Int32)).
Método público GetHashCode Actúa como función hash para un tipo concreto. (Se hereda de Object).
Método público GetNumberOfUsersOnline Produce una excepción NotSupportedException en todos los casos. (Invalida a MembershipProvider.GetNumberOfUsersOnline()).
Método público GetPassword Devuelve la contraseña del usuario especificado de la base de datos. La clase ActiveDirectoryMembershipProvider no admite este método. (Invalida a MembershipProvider.GetPassword(String, String)).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público GetUser(Object, Boolean) Obtiene la información del usuario de pertenencia asociada a la clave de usuario especificada. (Invalida a MembershipProvider.GetUser(Object, Boolean)).
Método público GetUser(String, Boolean) Obtiene la información del usuario de pertenencia asociada al nombre de usuario especificado. (Invalida a MembershipProvider.GetUser(String, Boolean)).
Método público GetUserNameByEmail Obtiene el nombre de usuario asociado a la dirección de correo electrónico especificada. (Invalida a MembershipProvider.GetUserNameByEmail(String)).
Método público Initialize 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. (Invalida a ProviderBase.Initialize(String, NameValueCollection)).
Método protegido MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método protegido OnValidatingPassword Genera el evento ValidatingPassword si se ha definido un controlador de eventos. (Se hereda de MembershipProvider).
Método público ResetPassword Restablece la contraseña de un usuario a una nueva generada automáticamente. (Invalida a MembershipProvider.ResetPassword(String, String)).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).
Método público UnlockUser Elimina un bloqueo para que se puedan validar usuarios de pertenencia. (Invalida a MembershipProvider.UnlockUser(String)).
Método público UpdateUser Actualiza información sobre un usuario del almacén de datos de Active Directory. (Invalida a MembershipProvider.UpdateUser(MembershipUser)).
Método público ValidateUser Comprueba que el nombre de usuario y contraseña especificados existen en el almacén de datos de Active Directory. (Invalida a MembershipProvider.ValidateUser(String, String)).
Arriba
  Nombre Descripción
Evento público ValidatingPassword Se produce cuando se crea un usuario, o cuando se cambia o se restablece una contraseña. (Se hereda de MembershipProvider).
Arriba

Las clases Membership y MembershipUser utilizan esta clase para proporcionar servicios de pertenencia a aplicaciones ASP.NET con un servidor Active Directory (AD) o Active Directory Application Mode (ADAM).

Nota Nota

El uso de un servidor ADAM requiere una configuración concreta. Para obtener más información, vea la sección Configuración ADAM más adelante.

Nota de seguridad Nota sobre la seguridad

La instancia ActiveDirectoryMembershipProvider sólo funciona en la configuración predeterminada de directiva de plena confianza de ASP.NET. Para utilizar la instancia de ActiveDirectoryMembershipProvider en cualquier nivel de confianza parcial, debe realizar cambios en el archivo de directivas de confianza adecuado para la aplicación o crear un ensamblado de "recinto" que se implementa en GAC.

La clase ActiveDirectoryMembershipProvider requiere el permiso DirectoryServicesPermission sin restricciones para poder ejecutarse. Este permiso no se agrega a cualquiera de los archivos de directivas de confianza parcial proporcionado con ASP.NET. Aunque agregar el permiso DirectoryServicesPermission a un archivo de directivas de confianza parcial habilitará el uso de la clase ActiveDirectoryMembershipProvider, ello hace que las clases de espacio de nombres System.DirectoryServices estén disponibles para cualquier código que se ejecute en sus páginas ASP.NET. No se recomienda esta opción para ningún servidor Web que necesite ejecutarse en modo bloqueado y protegido.

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

Debe crear una entrada Elemento connectionStrings (Esquema de configuración de ASP.NET) en el archivo Web.config que identifica al servidor Active Directory, el dominio de Active Directory o la partición de la aplicación ADAM que se va a utilizar. El proveedor sólo funcionará en el ámbito del dominio o en un subámbito dentro de un dominio. En la tabla siguiente se muestran 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 especificado. Con AD, la creación y eliminación del usuario se realiza en el contenedor de usuarios predeterminado. Todas las demás operaciones, incluido cualquier método de búsqueda, tendrán como raíz el contexto de nombres predeterminado para el dominio.

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

No se permite esta cadena de conexión cuando se utiliza ADAM y se producirá una excepción NotSupportedException.

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 especificado. La creación y eliminación del usuario sólo se realiza en el contenedor especificado. Todas las demás operaciones, incluido cualquier método de búsqueda, realizan búsquedas del subárbol con raíz en el contenedor.

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

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

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

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

Nota de seguridad Nota sobre la seguridad

La clase ActiveDirectoryMembershipProvider no comprueba explícitamente si los atributos del proveedor no están asignados a atributos básicos del objeto de usuario en el directorio. Debe asegurarse de que no se exponga información confidencial del directorio a través de los 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 cadena Unicode.

LastActivityDate

no disponible

No es compatible con ActiveDirectoryMembershipProvider.

LastLoginDate

no disponible

No es compatible con ActiveDirectoryMembershipProvider.

LastPasswordChangedDate

pwdLastSet

No

PasswordQuestion

nada

Sí, pero debe ser un atributo de un solo valor de tipo cadena Unicode.

IsApproved

Control de cuenta de usuario (AD)

mDS-UserAccountDisabled (ADAM)

No

IsLockedOut

se calcula de lockoutTime y la duración de 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 se bloquea un usuario debido a que realiza demasiados intentos con contraseña incorrecta, se devuelve el atributo de hora de bloqueo.

Si se bloquea un usuario debido a que realiza demasiados intentos de respuesta con contraseña incorrecta, se devuelve el valor almacenado en el atributo definido por attributeMapFailedPasswordAnswerLockoutTime.

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

Si la cuenta no está bloqueada, devuelve 1/1/1754 para la compatibilidad con SQL.

No

Cuando las propiedades RequiresQuestionAndAnswer y EnablePasswordReset son true, la clase ActiveDirectoryMembershipProvider admite la seguridad de restablecimiento de contraseña, que solicita al usuario que conteste una pregunta predeterminada. Para admitir la pregunta y respuesta, debe establecer los atributos de configuración siguientes utilizando Elemento add aplicado a providers para membership (Esquema de configuración de ASP.NET) 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 cadena Unicode.

attributeMapPasswordAnswer

Debe ser un atributo de un solo valor de tipo cadena Unicode.

attributeMapFailedPasswordAnswerCount

Debe ser un atributo de un solo valor de tipo Integer.

attributeMapFailedPasswordAnswerTime

Debe ser un atributo con un solo valor de tipo Large Integer/Interval.

attributeMapFailedPasswordAnswerLockoutTime

Debe ser un atributo con un solo valor de tipo Large Integer/Interval.

Para obtener más información sobre cómo utilizar la seguridad de restablecimiento de contraseña, vea la propiedad RequiresQuestionAndAnswer.

Conexiones de Active Directory

Cuando se usa la clase ActiveDirectoryMembershipProvider para conectar con un servidor Active Directory o Active Directory Application Mode (ADAM), el atributo connectionProtection que se establece mediante Elemento add aplicado a providers para membership (Esquema de configuración de ASP.NET) en el archivo de configuración puede reducir los tipos de operaciones que la clase ActiveDirectoryMembershipProvider puede realizar a través de la conexión. El atributo connectionProtection también determina los métodos que la instancia de ActiveDirectoryMembershipProvider utilizará para crear la conexión con el servidor Active Directory o ADAM.

En la tabla siguiente se muestra el efecto del atributo connectionProtection al conectar con Active Directory.

Valor de connectionProtection

Efecto

None

La clase ActiveDirectoryMembershipProvider conectará con un Active Directory, con estas restricciones.

Secure

La clase ActiveDirectoryMembershipProvider intentará conectar con Active Directory utilizando SSL. Si se produce un error en SSL, se intentará por segunda vez conectar con Active Directory mediante la función de rúbrica. Si ambos intentos producen error, la instancia de ActiveDirectoryMembershipProvider producirá una excepción ProviderException.

Se admiten las credenciales de proceso y las explícitas.

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

Valor de connectionProtection

Efecto

None

La clase ActiveDirectoryMembershipProvider conectará con un servidor ADAM, con esta restricción.

  • Cualquier método que establezca contraseñas producirá un error a no ser que configure explícitamente el servidor ADAM para permitir que se envíen y modifiquen contraseñas en una conexión no segura.

Se admiten las credenciales de proceso y las explícitas.

Secure

La clase ActiveDirectoryMembershipProvider intentará conectar con el servidor ADAM utilizando SSL. Si no se puede realizar una conexión, la instancia de ActiveDirectoryMembershipProvider producirá una excepción ProviderException.

Se admiten las credenciales de proceso y las explícitas.

Configuración de ADAM

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

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

Valor de connectionProtection

Puerto ADAM esperado

None

389

Secure

636

Si el servidor ADAM no utiliza los puertos predeterminados, vea el artículo Q817583, "Active Directory Services does not request secure authorization over an SSL connection," de Microsoft Knowledge Base.

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

El primer ejemplo es un archivo de configuración sencillo que utiliza las asignaciones predeterminadas para los 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"
          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>

.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar