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
|
ActiveDirectoryMembershipProvider (Clase)
Administra el almacenamiento de información de pertenencia de aplicaciones ASP.NET en servidores Active Directory y Active Directory Application Mode.
System.Configuration.Provider.ProviderBase
System.Web.Security.MembershipProvider
System.Web.Security.ActiveDirectoryMembershipProvider
Ensamblado: System.Web (en System.Web.dll)
El tipo ActiveDirectoryMembershipProvider expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
ActiveDirectoryMembershipProvider | Crea una nueva instancia de la clase ActiveDirectoryMembershipProvider. |
| Nombre | Descripción | |
|---|---|---|
|
ApplicationName | Nombre de la aplicación que utiliza el proveedor de pertenencia personalizado. (Invalida a MembershipProvider.ApplicationName). |
|
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. (Se hereda de ProviderBase). |
|
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). |
|
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). |
|
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. (Invalida a MembershipProvider.MaxInvalidPasswordAttempts). |
|
MinRequiredNonAlphanumericCharacters | Obtiene el número mínimo de caracteres especiales que deben estar presentes en una contraseña válida. (Invalida a MembershipProvider.MinRequiredNonAlphanumericCharacters). |
|
MinRequiredPasswordLength | Obtiene la longitud mínima necesaria para una contraseña. (Invalida a MembershipProvider.MinRequiredPasswordLength). |
|
Name | Obtiene el nombre descriptivo utilizado para hacer referencia al proveedor durante la configuración. (Se hereda 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. (Invalida a MembershipProvider.PasswordAttemptWindow). |
|
PasswordFormat | Obtiene un valor que indica el formato de contraseñas del almacén de datos de Active Directory. (Invalida a MembershipProvider.PasswordFormat). |
|
PasswordStrengthRegularExpression | Obtiene la expresión regular utilizada para evaluar una contraseña. (Invalida a MembershipProvider.PasswordStrengthRegularExpression). |
|
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). |
|
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). |
| Nombre | Descripción | |
|---|---|---|
|
ChangePassword | Cambia la contraseña del usuario especificado. (Invalida a MembershipProvider.ChangePassword(String, String, String)). |
|
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)). |
|
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)). |
|
DecryptPassword | Descifra una contraseña cifrada. (Se hereda de MembershipProvider). |
|
DeleteUser | Elimina información de pertenencia de usuario del almacén de datos de Active Directory. (Invalida a MembershipProvider.DeleteUser(String, Boolean)). |
|
EncryptPassword(Byte[]) | Cifra una contraseña. (Se hereda de MembershipProvider). |
|
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode) | Cifra la contraseña especificada usando el modo de compatibilidad de contraseña especificado. (Se hereda de MembershipProvider). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
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). |
|
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)). |
|
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)). |
|
GeneratePassword | Genera una contraseña aleatoria. |
|
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)). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetNumberOfUsersOnline | Produce una excepción NotSupportedException en todos los casos. (Invalida a MembershipProvider.GetNumberOfUsersOnline()). |
|
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)). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
GetUser(Object, Boolean) | Obtiene la información del usuario de pertenencia asociada a la clave de usuario especificada. (Invalida a MembershipProvider.GetUser(Object, Boolean)). |
|
GetUser(String, Boolean) | Obtiene la información del usuario de pertenencia asociada al nombre de usuario especificado. (Invalida a MembershipProvider.GetUser(String, Boolean)). |
|
GetUserNameByEmail | Obtiene el nombre de usuario asociado a la dirección de correo electrónico especificada. (Invalida a MembershipProvider.GetUserNameByEmail(String)). |
|
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)). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
OnValidatingPassword | Genera el evento ValidatingPassword si se ha definido un controlador de eventos. (Se hereda de MembershipProvider). |
|
ResetPassword | Restablece la contraseña de un usuario a una nueva generada automáticamente. (Invalida a MembershipProvider.ResetPassword(String, String)). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
|
UnlockUser | Elimina un bloqueo para que se puedan validar usuarios de pertenencia. (Invalida a MembershipProvider.UnlockUser(String)). |
|
UpdateUser | Actualiza información sobre un usuario del almacén de datos de Active Directory. (Invalida a MembershipProvider.UpdateUser(MembershipUser)). |
|
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)). |
| Nombre | Descripción | |
|---|---|---|
|
ValidatingPassword | Se produce cuando se crea un usuario, o cuando se cambia o se restablece una contraseña. (Se hereda de MembershipProvider). |
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
|
|---|
|
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 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 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? |
|---|---|---|
|
securityIdentifier |
No |
|
|
userPrincipalName |
Sí, pero debe ser userPrincipalName o sAMAccountName |
|
|
comment |
No |
|
|
whenCreated |
No |
|
|
|
Sí, pero debe ser un atributo de un solo valor de tipo cadena Unicode. |
|
|
no disponible |
No es compatible con ActiveDirectoryMembershipProvider. |
|
|
no disponible |
No es compatible con ActiveDirectoryMembershipProvider. |
|
|
pwdLastSet |
No |
|
|
nada |
Sí, pero debe ser un atributo de un solo valor de tipo cadena Unicode. |
|
|
Control de cuenta de usuario (AD) mDS-UserAccountDisabled (ADAM) |
No |
|
|
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 |
|
|
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.
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>
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.
Nota
Nota sobre la seguridad