ActiveDirectoryMembershipProvider Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 |
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 |
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) |