Partager via


ActiveDirectoryMembershipProvider Classe

Définition

Gère le stockage des informations d'appartenance pour une application ASP.NET dans les serveurs Active Directory et Active Directory en mode application.

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
Héritage
ActiveDirectoryMembershipProvider

Exemples

Les exemples de code suivants montrent le fichier Web.config d’une application ASP.NET configurée pour utiliser une ActiveDirectoryMembershipProvider instance. Le premier exemple utilise les mappages par défaut pour les attributs Active Directory et ne prend pas en charge la sécurité de réinitialisation de mot de passe avec des questions-réponses ni la possibilité d’appeler des méthodes de recherche. Le deuxième exemple montre tous les paramètres d’attribut autorisés pour une ActiveDirectoryMembershipProvider instance.

Le premier exemple est un fichier de configuration simple utilisant des mappages par défaut pour les attributs 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>

Cet exemple montre tous les paramètres d’attribut disponibles pour une instance 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 et serverSearchTimeout par défaut en minutes. Pour modifier les unités, définissez la valeur de l’attribut timeoutUnit sur « Jours », « Heures », « Minutes », « Secondes » ou « Millisecondes ». Si l’attribut n’est pas spécifié, la valeur par défaut est « Minutes ».

Remarques

Cette classe est utilisée par les Membership classes et MembershipUser pour fournir des services d’appartenance pour une application ASP.NET à l’aide d’un serveur Active Directory (AD) ou ADAM (Active Directory Application Mode).

Notes

L’utilisation d’un serveur ADAM nécessite une configuration spécifique. Pour plus d’informations, consultez la section Configuration d’ADAM ci-dessous.

Important

L’instance ActiveDirectoryMembershipProvider fonctionne uniquement dans la configuration par défaut de la stratégie de confiance totale de ASP.NET. Pour utiliser l’instance ActiveDirectoryMembershipProvider à n’importe quel niveau de confiance partielle, vous devez apporter des modifications au fichier de stratégie d’approbation approprié pour votre application ou créer un assembly « bac à sable » déployé dans le GAC.

La ActiveDirectoryMembershipProvider classe nécessite une autorisation illimitée DirectoryServicesPermission pour s’exécuter. Cette autorisation n’est ajoutée à aucun des fichiers de stratégie de confiance partielle fournis avec ASP.NET. Bien que l’ajout de l’autorisation DirectoryServicesPermission à un fichier de stratégie de confiance partielle permette d’utiliser la ActiveDirectoryMembershipProvider classe , cela rend les System.DirectoryServices classes d’espace de noms disponibles pour tout code s’exécutant dans vos pages de ASP.NET. Cette option n’est pas recommandée pour les serveurs Web qui doivent s’exécuter en mode sécurisé et verrouillé.

Vous pouvez également créer un assembly « bac à sable » qui appelle la ActiveDirectoryMembershipProvider classe . Cet assembly peut contenir une classe wrapper qui transfère les appels de méthode à la ActiveDirectoryMembershipProvider classe ou une classe dérivée de la ActiveDirectoryMembershipProvider classe . Dans les deux cas, la classe wrapper doit affirmer une autorisation illimitée DirectoryServicesPermission . Déployez l’assembly de bac à sable dans le GAC et marquez l’assembly avec l’attribut AllowPartiallyTrustedCallersAttribute (APTCA). Cela permettra à votre code de ASP.NET partiellement approuvé d’appeler votre classe wrapper, et étant donné que la classe wrapper affirme en interne l’autorisation illimitée DirectoryServicesPermission , votre classe wrapper sera en mesure d’appeler correctement le fournisseur

Vous devez créer une entrée connectionStrings Element (ASP.NET Settings Schema) dans le fichier Web.config qui identifie le serveur Active Directory, le domaine Active Directory ou la partition d’application ADAM à utiliser. Le fournisseur opère uniquement au niveau de l’étendue du domaine ou dans un sous-étendue au sein d’un domaine. Le tableau suivant répertorie les chaînes de connexion autorisées et l’étendue utilisée.

Chaîne de connexion Étendue
<LDAP:// domaine ou serveur> :[port]

Le numéro de port est facultatif pour ADAM et n’est pas nécessaire pour Active Directory.
Le fournisseur s’exécute sur le domaine ou le serveur spécifié. Avec AD, la création et la suppression d’utilisateurs sont effectuées dans le conteneur d’utilisateurs par défaut. Toutes les autres opérations, y compris les méthodes de recherche, seront enracinées au niveau du contexte d’affectation de noms par défaut pour le domaine.

Si la chaîne de connexion spécifie un domaine Active Directory plutôt qu’un serveur spécifique et que la EnablePasswordReset propriété est true, l’instance ActiveDirectoryMembershipProvider se connecte toujours au serveur avec le rôle PDC pour le domaine afin de s’assurer que les modifications de mot de passe prennent effet et sont disponibles lorsque la ValidateUser méthode est appelée.

Cette chaîne de connexion n’est pas autorisée lors de l’utilisation d’ADAM et lève un NotSupportedException.
<LDAP:// domaine ou serveur> :[port]/<container dn>

Le numéro de port est facultatif pour ADAM et n’est pas nécessaire pour Active Directory.
Le fournisseur s’exécute sur le domaine ou le serveur spécifié. La création et la suppression d’utilisateurs sont effectuées uniquement dans le conteneur spécifié. Toutes les autres opérations, y compris les méthodes de recherche, effectuent des recherches sous-arborescences enracinées au niveau du conteneur.

Pour les serveurs ADAM, le conteneur spécifie la racine d’une partition d’application ou un conteneur dans une partition d’application.

Nous vous recommandons de définir un conteneur spécifique pour améliorer les performances.

L’instance ActiveDirectoryMembershipProvider mappe les attributs d’annuaire aux ActiveDirectoryMembershipUser propriétés. Les attributs par défaut sont utilisés si aucun mappage d’attribut n’est effectué dans le fichier Web.config. Pour plus d’informations sur les mappages d’attributs, consultez les propriétés individuelles dans la documentation de la ActiveDirectoryMembershipUser classe.

Le tableau suivant répertorie les ActiveDirectoryMembershipUser propriétés et leurs mappages d’attributs par défaut.

Important

La ActiveDirectoryMembershipProvider classe ne vérifie pas explicitement que les attributs du fournisseur ne sont pas mappés aux attributs principaux de l’objet utilisateur dans le répertoire. Vous devez vous assurer que les informations sensibles du répertoire ne sont pas exposées via des attributs mappés.

Propriété Attribut d’annuaire par défaut Peut être mappé ?
ProviderUserKey securityIdentifier Non
UserName userPrincipalName Oui, mais doit être userPrincipalName ou sAMAccountName
Comment comment Non
CreationDate whenCreated Non
Email mail Oui, mais doit être un attribut à valeur unique de type Chaîne Unicode.
LastActivityDate n/a Non pris en charge par ActiveDirectoryMembershipProvider.
LastLoginDate n/a Non pris en charge par ActiveDirectoryMembershipProvider.
LastPasswordChangedDate pwdLastSet Non
PasswordQuestion Aucun Oui, mais doit être un attribut à valeur unique de type Chaîne Unicode.
IsApproved Contrôle de compte d’utilisateur (AD)

mDS-UserAccountDisabled (ADAM)
Non
IsLockedOut calculé à partir de lockoutTime et de la durée de verrouillage AD (AD sur Windows 2000)

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

msDS-User-Account-Control-Computed (ADAM)
Non
LastLockoutDate Si l’utilisateur est verrouillé en raison d’un trop grand nombre de tentatives de mot de passe incorrectes, l’attribut d’heure de verrouillage est retourné.

Si l’utilisateur est verrouillé en raison d’un trop grand nombre de tentatives de réponse de mot de passe incorrectes, la valeur stockée dans l’attribut défini par attributeMapFailedPasswordAnswerLockoutTime est retournée.

Si l’utilisateur est verrouillé en raison d’un mot de passe incorrect et d’un trop grand nombre de tentatives de mot de passe incorrects, la valeur de date/heure la plus récente est retournée.

Si le compte n’est pas verrouillé, retournez le 1/1/1754 pour la compatibilité SQL.
Non

Lorsque les RequiresQuestionAndAnswer propriétés et EnablePasswordReset sont true, la classe prend en charge la ActiveDirectoryMembershipProvider sécurité de réinitialisation de mot de passe en demandant à l’utilisateur de répondre à une question prédéterminée. Pour prendre en charge la question et la réponse, vous devez définir les attributs de configuration suivants à l’aide de l’élément add pour les fournisseurs pour l’appartenance (schéma ASP.NET Paramètres) dans le fichier de configuration de l’application.

Attribut de configuration Type d'attribut
attributeMapPasswordQuestion Doit être un attribut à valeur unique de type Chaîne Unicode.
attributeMapPasswordAnswer Doit être un attribut à valeur unique de type Chaîne Unicode.
attributeMapFailedPasswordAnswerCount Doit être un attribut à valeur unique de type Integer.
attributeMapFailedPasswordAnswerTime Doit être un attribut à valeur unique de type Grand entier/intervalle.
attributeMapFailedPasswordAnswerLockoutTime Doit être un attribut à valeur unique de type Grand entier/intervalle.

Pour plus d’informations sur l’utilisation de la sécurité de réinitialisation de mot de passe, consultez la RequiresQuestionAndAnswer propriété .

Connexions Active Directory

Lorsque la ActiveDirectoryMembershipProvider classe est utilisée pour se connecter à un serveur Active Directory ou ADAM (Active Directory Application Mode), l’attribut défini à l’aide connectionProtection de l’élément add pour les fournisseurs pour l’appartenance (schéma ASP.NET paramètres) dans le fichier de configuration de l’application peut restreindre les types d’opérations que la ActiveDirectoryMembershipProvider classe peut effectuer sur la connexion. L’attribut connectionProtection détermine également les méthodes que l’instance ActiveDirectoryMembershipProvider utilisera pour créer la connexion au serveur Active Directory ou ADAM.

Le tableau suivant montre l’effet de l’attribut lors de la connectionProtection connexion à un annuaire Active Directory.

Paramètre connectionProtection Effet
None La ActiveDirectoryMembershipProvider classe se connecte à un annuaire Active Directory, avec ces restrictions.

- Toute méthode qui définit un mot de passe échoue. Active Directory nécessite une connexion sécurisée lors de la modification des mots de passe.
- Vous devez définir explicitement les connectionUsername attributs et connectionPassword à l’aide de l’élément add pour les fournisseurs pour l’appartenance (schéma ASP.NET Paramètres) dans le fichier de configuration de l’application ; sinon, l’instance ActiveDirectoryMembershipProvider lève une ProviderException exception.
Secure La ActiveDirectoryMembershipProvider classe tente de se connecter à Active Directory à l’aide de SSL. Si SSL échoue, une deuxième tentative de connexion à Active Directory à l’aide de sign-and-seal est effectuée. Si les deux tentatives échouent, l’instance ActiveDirectoryMembershipProvider lève une ProviderException exception.

Les informations d’identification de processus et les informations d’identification explicites sont prises en charge.

Le tableau suivant montre l’effet de l’attribut lors de la connectionProtection connexion à un serveur ADAM.

Paramètre connectionProtection Effet
None La ActiveDirectoryMembershipProvider classe se connecte à un serveur ADAM, avec cette restriction.

- Toute méthode qui définit des mots de passe échoue, sauf si vous configurez explicitement le serveur ADAM pour autoriser l’envoi et la modification des mots de passe via une connexion non sécurisée.

Les informations d’identification de processus et les informations d’identification explicites sont prises en charge.
Secure La ActiveDirectoryMembershipProvider classe tente de se connecter au serveur ADAM à l’aide de SSL. Si une connexion ne peut pas être établie, l’instance ActiveDirectoryMembershipProvider lève une ProviderException exception.

Les informations d’identification de processus et les informations d’identification explicites sont prises en charge.

Configuration d’ADAM

Lors de l’utilisation d’un serveur ADAM, l’instance ADAM doit contenir un schéma qui définit la User classe . Vous pouvez importer la User classe avec une importation LDIF du MS-User.ldf fichier disponible dans le répertoire d’installation ADAM.

La ActiveDirectoryMembershipProvider classe fonctionne avec un serveur ADAM configuré pour utiliser les ports réseau par défaut. Le tableau suivant présente les valeurs par défaut attendues pour le serveur ADAM.

paramètre connectionProtection Port ADAM attendu
None 389
Secure 636

Constructeurs

ActiveDirectoryMembershipProvider()

Crée une instance de la classe ActiveDirectoryMembershipProvider.

Propriétés

ApplicationName

Nom de l’application utilisant le fournisseur d’appartenances personnalisé.

CurrentConnectionProtection

Obtient le niveau actuel de sécurité utilisé pour protéger les communications avec le serveur.

Description

Obtient une description brève et conviviale qui peut s'afficher dans les outils d'administration ou d'autres interfaces utilisateur.

(Hérité de ProviderBase)
EnablePasswordReset

Obtient une valeur indiquant si l'instance de ActiveDirectoryMembershipProvider est configurée de manière à permettre aux utilisateurs de réinitialiser leurs mots de passe.

EnablePasswordRetrieval

Obtient une valeur indiquant si le mot de passe de l'utilisateur peut être récupéré à partir du magasin de données Active Directory. Cette propriété retourne toujours false.

EnableSearchMethods

Obtient une valeur indiquant si les méthodes ActiveDirectoryMembershipProvider orientées recherche sont disponibles.

MaxInvalidPasswordAttempts

Obtient le nombre de tentatives de réponse dont dispose un utilisateur pour la question de réinitialisation du mot de passe.

MinRequiredNonAlphanumericCharacters

Obtient le nombre minimal de caractères spéciaux qui doivent être présents dans un mot de passe.

MinRequiredPasswordLength

Obtient la longueur minimale requise pour un mot de passe.

Name

Obtient le nom convivial qui référence le fournisseur au cours de la configuration.

(Hérité de ProviderBase)
PasswordAnswerAttemptLockoutDuration

Obtient la durée pendant laquelle un compte d'utilisateur est verrouillé lorsque l'utilisateur a fourni une réponse de mot de passe incorrecte un trop grand nombre de fois.

PasswordAttemptWindow

Obtient la fenêtre de temps durant laquelle sont suivis les échecs des tentatives successives pour fournir un mot de passe ou une réponse de mot de passe valide.

PasswordFormat

Obtient une valeur indiquant le format des mots de passe dans le magasin de données Active Directory.

PasswordStrengthRegularExpression

Obtient l’expression régulière utilisée pour évaluer un mot de passe.

RequiresQuestionAndAnswer

Obtient une valeur indiquant si le fournisseur d'appartenances est configuré pour exiger une question de mot de passe et une réponse lors de la création d'un utilisateur.

RequiresUniqueEmail

Obtient une valeur indiquant si une adresse e-mail stockée sur le serveur Active Directory doit être unique.

Méthodes

ChangePassword(String, String, String)

Définit le mot de passe de l'utilisateur spécifié.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Met à jour la question et la réponse de mot de passe d'un utilisateur dans le magasin Active Directory.

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

Ajoute un nouvel utilisateur au magasin de données Active Directory.

DecryptPassword(Byte[])

Déchiffre un mot de passe chiffré.

(Hérité de MembershipProvider)
DeleteUser(String, Boolean)

Supprime les informations d'appartenance d'un utilisateur du magasin de données Active Directory.

EncryptPassword(Byte[])

Chiffre un mot de passe.

(Hérité de MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Chiffre le mot de passe spécifié à l'aide du mode de compatibilité de mot de passe indiqué.

(Hérité de MembershipProvider)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Retourne une collection d’utilisateurs d’appartenance du magasin de données Active Directory en fonction de l’adresse e-mail de l’utilisateur.

FindUsersByName(String, Int32, Int32, Int32)

Retourne une collection d'utilisateurs du magasin de données Active Directory en fonction du nom d'utilisateur.

GeneratePassword()

Génère un mot de passe aléatoire.

GetAllUsers(Int32, Int32, Int32)

Obtient une collection de tous les utilisateurs stockés dans une source de données Active Directory.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetNumberOfUsersOnline()

Lève une exception NotSupportedException dans tous les cas.

GetPassword(String, String)

Retourne le mot de passe de l'utilisateur spécifié de la base de données. La classe ActiveDirectoryMembershipProvider ne prend pas en charge cette méthode.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetUser(Object, Boolean)

Obtient les informations utilisateur d'appartenance associées à la clé utilisateur spécifiée.

GetUser(String, Boolean)

Obtient les informations utilisateur d'appartenance associées au nom d'utilisateur spécifié.

GetUserNameByEmail(String)

Obtient le nom d’utilisateur associé à l’adresse e-mail spécifiée.

Initialize(String, NameValueCollection)

Initialise l'instance de ActiveDirectoryMembershipProvider avec les valeurs de propriété des fichiers de configuration de l'application. Cette méthode n'est pas conçue pour être appelée à partir de votre code.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Déclenche l’événement ValidatingPassword si un gestionnaire d’événements a été défini.

(Hérité de MembershipProvider)
ResetPassword(String, String)

Réinitialise le mot de passe d’un utilisateur et affecte un nouveau mot de passe généré automatiquement.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
UnlockUser(String)

Efface un verrouillage afin qu'un utilisateur d'appartenance puisse être validé.

UpdateUser(MembershipUser)

Met à jour les informations sur un utilisateur dans le magasin de données Active Directory.

ValidateUser(String, String)

Vérifie que le nom d'utilisateur et le mot de passe spécifiés existent dans le magasin de données Active Directory.

Événements

ValidatingPassword

Se produit quand un utilisateur est créé ou quand un mot de passe est modifié ou réinitialisé.

(Hérité de MembershipProvider)

S’applique à

Voir aussi