ActiveDirectoryMembershipProvider Klasse

Definition

Verwaltet die Speicherung der Mitgliedschaftsinformationen für eine ASP.NET-Anwendung auf Active Directory-Servern sowie auf Active Directory Application Mode-Servern.

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
Vererbung
ActiveDirectoryMembershipProvider

Beispiele

Die folgenden Codebeispiele zeigen die Web.config-Datei für eine ASP.NET-Anwendung, die für die Verwendung einer ActiveDirectoryMembershipProvider -Instanz konfiguriert ist. Im ersten Beispiel werden die Standardzuordnungen für Active Directory-Attribute verwendet, und es wird weder die Kennwortzurücksetzung mit Frage-und-Antwort-Sicherheit noch die Möglichkeit zum Aufrufen von Suchmethoden unterstützt. Das zweite Beispiel zeigt alle Attributeinstellungen, die für eine ActiveDirectoryMembershipProvider Instanz zulässig sind.

Das erste Beispiel ist eine einfache Konfigurationsdatei mit Standardzuordnungen für Active Directory-Attribute.

<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>

Dieses Beispiel zeigt alle Attributeinstellungen, die für eine Instanz von ActiveDirectoryMembershipProviderverfügbar sind.

<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 und serverSearchTimeout der Standardwert ist Minuten. Um die Einheiten zu ändern, legen Sie den timeoutUnit Attributwert auf "Tage", "Stunden", "Minuten", "Sekunden" oder "Millisekunden" fest. Wenn das Attribut nicht angegeben ist, ist der Standardwert "Minutes".

Hinweise

Diese Klasse wird von den Membership Klassen und MembershipUser verwendet, um Mitgliedschaftsdienste für eine ASP.NET-Anwendung mithilfe eines Active Directory-Servers (AD) oder eines ADAM-Servers (Active Directory Application Mode) bereitzustellen.

Hinweis

Die Verwendung eines ADAM-Servers erfordert eine bestimmte Konfiguration. Weitere Informationen finden Sie weiter unten im Abschnitt ADAM-Konfiguration.

Wichtig

Die ActiveDirectoryMembershipProvider -Instanz funktioniert nur in der Standardkonfiguration der voll vertrauenswürdigen Richtlinie ASP.NET. Um die ActiveDirectoryMembershipProvider Instanz auf einer teilweise vertrauenswürdigen Ebene verwenden zu können, müssen Sie entweder Änderungen an der entsprechenden Vertrauensrichtliniendatei für Ihre Anwendung vornehmen oder eine Sandboxassembly erstellen, die im GAC bereitgestellt wird.

Die ActiveDirectoryMembershipProvider -Klasse erfordert uneingeschränkte DirectoryServicesPermission Berechtigungen für die Ausführung. Diese Berechtigung wird keiner der teilweise vertrauenswürdigen Richtliniendateien hinzugefügt, die mit ASP.NET bereitgestellt werden. Das Hinzufügen der DirectoryServicesPermission Berechtigung zu einer teilweise vertrauenswürdigen Richtliniendatei ermöglicht zwar die Verwendung der ActiveDirectoryMembershipProvider -Klasse, aber dadurch werden die System.DirectoryServices Namespaceklassen für jeden Code verfügbar, der auf Ihren ASP.NET-Seiten ausgeführt wird. Diese Option wird nicht für Webserver empfohlen, die in einem sicheren, gesperrten Modus ausgeführt werden müssen.

Alternativ können Sie eine Sandboxassembly erstellen, die die ActiveDirectoryMembershipProvider -Klasse aufruft. Diese Assembly kann entweder eine Wrapperklasse enthalten, die Methodenaufrufe an die ActiveDirectoryMembershipProvider -Klasse weiterleitet, oder eine Klasse, die von der ActiveDirectoryMembershipProvider -Klasse abgeleitet wird. In beiden Fällen muss die Wrapperklasse uneingeschränkte DirectoryServicesPermission Berechtigungen bestätigen. Stellen Sie die Sandboxassembly im GAC bereit, und markieren Sie die Assembly mit dem AllowPartiallyTrustedCallersAttribute Attribut (APTCA). Dadurch können Ihre teilweise vertrauenswürdigen ASP.NET Code Ihre Wrapperklasse aufrufen. Da die Wrapperklasse intern die uneingeschränkte DirectoryServicesPermission Berechtigung bestätigt, kann Ihre Wrapperklasse den Anbieter erfolgreich aufrufen.

Sie müssen einen connectionStrings-Elementeintrag (ASP.NET Settings Schema) in der Web.config-Datei erstellen, der den zu verwendenden Active Directory-Server, die Active Directory-Domäne oder die ADAM-Anwendungspartition identifiziert. Der Anbieter wird nur im Domänenbereich oder in einem Unterbereich innerhalb einer Domäne ausgeführt. In der folgenden Tabelle sind zulässige Verbindungszeichenfolgen und der verwendete Bereich aufgeführt.

Verbindungszeichenfolge Bereich
<LDAP:// Domäne oder Server>:[Port]

Die Portnummer ist für ADAM optional und für Active Directory nicht erforderlich.
Der Anbieter wird für die angegebene Domäne oder den angegebenen Server ausgeführt. Mit AD erfolgt die Benutzererstellung und -löschung im Standardbenutzercontainer. Alle anderen Vorgänge, einschließlich aller Suchmethoden, werden im Standardnamenskontext für die Domäne gerootet.

Wenn die Verbindungszeichenfolge eine Active Directory-Domäne anstelle eines bestimmten Servers angibt und die EnablePasswordReset Eigenschaft lautet true, stellt die ActiveDirectoryMembershipProvider Instanz immer eine Verbindung mit dem Server mit der PDC-Rolle für die Domäne her, um sicherzustellen, dass Kennwortänderungen wirksam werden und verfügbar sind, wenn die ValidateUser Methode aufgerufen wird.

Diese Verbindungszeichenfolge ist bei Verwendung von ADAM nicht zulässig und löst eine aus NotSupportedException.
<LDAP:// Domäne oder Server>:[Port]/<container dn>

Die Portnummer ist für ADAM optional und für Active Directory nicht erforderlich.
Der Anbieter wird für die angegebene Domäne oder den angegebenen Server ausgeführt. Benutzererstellung und -löschung erfolgt nur im angegebenen Container. Alle anderen Vorgänge, einschließlich aller Suchmethoden, führen Unterstruktursuchen durch, die im Container verwurzelt sind.

Für ADAM-Server gibt der Container den Stamm einer Anwendungspartition oder eines Containers in einer Anwendungspartition an.

Es wird empfohlen, dass die Verbindungszeichenfolge einen bestimmten Container definiert, um die Leistung zu verbessern.

Die ActiveDirectoryMembershipProvider -Instanz ordnet Verzeichnisattribute Eigenschaften zu ActiveDirectoryMembershipUser . Standardattribute werden verwendet, wenn in der Web.config-Datei keine Attributzuordnung durchgeführt wird. Weitere Informationen zu Attributzuordnungen finden Sie in den einzelnen Eigenschaften in der ActiveDirectoryMembershipUser Klassendokumentation.

In der folgenden Tabelle sind die ActiveDirectoryMembershipUser Eigenschaften und ihre Standardattributezuordnungen aufgeführt.

Wichtig

Die ActiveDirectoryMembershipProvider -Klasse überprüft nicht explizit, ob Anbieterattribute nicht den Kernattributen des Benutzerobjekts im Verzeichnis zugeordnet sind. Sie müssen sicherstellen, dass vertrauliche Informationen aus dem Verzeichnis nicht über zugeordnete Attribute verfügbar gemacht werden.

Eigenschaft Standardverzeichnisattribute Kann zugeordnet werden?
ProviderUserKey securityIdentifier Nein
UserName userPrincipalName Ja, muss aber entweder userPrincipalName oder sAMAccountName sein.
Comment comment Nein
CreationDate whenCreated Nein
Email mail Ja, aber es muss sich um ein einwertiges Attribut vom Typ Unicode String handeln.
LastActivityDate Wird von ActiveDirectoryMembershipProvidernicht unterstützt.
LastLoginDate Wird von ActiveDirectoryMembershipProvidernicht unterstützt.
LastPasswordChangedDate pwdLastSet Nein
PasswordQuestion Keine Ja, aber es muss sich um ein einwertiges Attribut vom Typ Unicode String handeln.
IsApproved User-Account-Control (AD)

mDS-UserAccountDisabled (ADAM)
Nein
IsLockedOut berechnet aus lockoutTime und der AD-Sperrdauer (AD unter Windows 2000)

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

msDS-User-Account-Control-Computed (ADAM)
Nein
LastLockoutDate Wenn der Benutzer aufgrund zu vieler fehlerhafter Kennwortversuche gesperrt ist, wird das Lockout-Time-Attribut zurückgegeben.

Wenn der Benutzer aufgrund zu vieler fehlerhafter Kennwortantwortversuche gesperrt ist, wird der wert zurückgegeben, der im von definierten attributeMapFailedPasswordAnswerLockoutTime Attribut gespeichert ist.

Wenn der Benutzer sowohl aufgrund eines ungültigen Kennworts als auch aufgrund zu vieler fehlerhafter Kennwortversuche gesperrt ist, wird der neueste Datums-/Uhrzeitwert zurückgegeben.

Wenn das Konto nicht gesperrt ist, geben Sie den 1.1.1754 für SQL-Kompatibilität zurück.
Nein

Wenn sowohl die RequiresQuestionAndAnswer -Eigenschaft als EnablePasswordReset auch die -Eigenschaft sind true, unterstützt die -Klasse die ActiveDirectoryMembershipProvider Sicherheit zum Zurücksetzen von Kennwörtern, indem der Benutzer eine vorab festgelegte Frage beantworten muss. Um die Frage und Die Antwort zu unterstützen, müssen Sie die folgenden Konfigurationsattribute festlegen, indem Sie das Element für Anbieter für die Mitgliedschaft hinzufügen (ASP.NET Einstellungsschema) in der Anwendungskonfigurationsdatei verwenden.

Konfigurationsattribute Attributtyp
attributeMapPasswordQuestion Muss ein einwertiges Attribut vom Typ Unicode String sein.
attributeMapPasswordAnswer Muss ein einwertiges Attribut vom Typ Unicode String sein.
attributeMapFailedPasswordAnswerCount Muss ein einwertiges Attribut vom Typ Integer sein.
attributeMapFailedPasswordAnswerTime Muss ein einwertiges Attribut vom Typ Large Integer/Interval sein.
attributeMapFailedPasswordAnswerLockoutTime Muss ein einwertiges Attribut vom Typ Large Integer/Interval sein.

Weitere Informationen zur Verwendung der Kennwortzurücksetzungssicherheit finden Sie in der RequiresQuestionAndAnswer -Eigenschaft.

Active Directory-Verbindungen

Wenn die ActiveDirectoryMembershipProvider -Klasse zum Herstellen einer Verbindung mit einem Active Directory- oder ADAM-Server (Active Directory Application Mode) verwendet wird, kann das Attribut, das connectionProtection mithilfe des add Element for providers for membership (ASP.NET Settings Schema) in der Anwendungskonfigurationsdatei festgelegt wird, die Arten von Vorgängen einschränken, die die ActiveDirectoryMembershipProvider Klasse über die Verbindung ausführen kann. Das connectionProtection Attribut bestimmt auch die Methoden, die die ActiveDirectoryMembershipProvider Instanz zum Herstellen der Verbindung mit dem Active Directory- oder ADAM-Server verwendet.

Die folgende Tabelle zeigt die Auswirkungen des Attributs connectionProtection beim Herstellen einer Verbindung mit einem Active Directory.

connectionProtection-Einstellung Auswirkung
None Die ActiveDirectoryMembershipProvider -Klasse stellt mit diesen Einschränkungen eine Verbindung mit einem Active Directory her.

– Jede Methode, die ein Kennwort festlegt, schlägt fehl. Active Directory erfordert eine sichere Verbindung beim Ändern von Kennwörtern.
– Sie müssen die connectionUsername Attribute und connectionPassword explizit festlegen, indem Sie das Add-Element für Anbieter für die Mitgliedschaft (ASP.NET Einstellungsschema) in der Anwendungskonfigurationsdatei verwenden. Andernfalls löst die ActiveDirectoryMembershipProvider Instanz eine Ausnahme aus ProviderException .
Secure Die ActiveDirectoryMembershipProvider -Klasse versucht, mithilfe von SSL eine Verbindung mit Active Directory herzustellen. Wenn SSL fehlschlägt, wird ein zweiter Versuch unternommen, eine Verbindung mit Active Directory mithilfe von Sign-and-Seal herzustellen. Wenn beide Versuche fehlschlagen, löst die ActiveDirectoryMembershipProvider -Instanz eine Ausnahme aus ProviderException .

Sowohl Prozessanmeldeinformationen als auch explizite Anmeldeinformationen werden unterstützt.

Die folgende Tabelle zeigt die Auswirkungen des Attributs connectionProtection beim Herstellen einer Verbindung mit einem ADAM-Server.

connectionProtection-Einstellung Auswirkung
None Die ActiveDirectoryMembershipProvider -Klasse stellt mit dieser Einschränkung eine Verbindung mit einem ADAM-Server her.

– Jede Methode, die Kennwörter festlegt, schlägt fehl, es sei denn, Sie konfigurieren den ADAM-Server explizit so, dass Kennwörter über eine unsichere Verbindung gesendet und geändert werden können.

Sowohl Prozessanmeldeinformationen als auch explizite Anmeldeinformationen werden unterstützt.
Secure Die ActiveDirectoryMembershipProvider -Klasse versucht, mithilfe von SSL eine Verbindung mit dem ADAM-Server herzustellen. Wenn keine Verbindung hergestellt werden kann, löst die ActiveDirectoryMembershipProvider -Instanz eine Ausnahme aus ProviderException .

Sowohl Prozessanmeldeinformationen als auch explizite Anmeldeinformationen werden unterstützt.

ADAM-Konfiguration

Bei Verwendung eines ADAM-Servers muss die ADAM-Instanz ein Schema enthalten, das die User Klasse definiert. Sie können die User Klasse mit einem LDIF-Import der Datei importieren, die MS-User.ldf im ADAM-Installationsverzeichnis verfügbar ist.

Die ActiveDirectoryMembershipProvider -Klasse funktioniert mit einem ADAM-Server, der für die Verwendung der Standardnetzwerkports konfiguriert ist. Die folgende Tabelle zeigt die für den ADAM-Server erwarteten Standardwerte.

connectionProtection-Einstellung Erwarteter ADAM-Port
None 389
Secure 636

Konstruktoren

ActiveDirectoryMembershipProvider()

Erstellt eine neue Instanz der ActiveDirectoryMembershipProvider-Klasse.

Eigenschaften

ApplicationName

Der Name der Anwendung, die den benutzerdefinierten Mitgliedschaftsanbieter verwendet.

CurrentConnectionProtection

Ruft die aktuelle Sicherheitsebene ab, die zum Schutz der Kommunikation mit dem Server verwendet wird.

Description

Ruft eine kurze, benutzerfreundliche Beschreibung ab, die für die Anzeige in Verwaltungstools oder anderen Benutzeroberflächen geeignet ist.

(Geerbt von ProviderBase)
EnablePasswordReset

Ruft einen Wert ab, der angibt, ob die ActiveDirectoryMembershipProvider-Instanz so konfiguriert ist, dass Benutzer ihre Kennwörter zurücksetzen können.

EnablePasswordRetrieval

Ruft einen Wert ab, der angibt, ob das Benutzerkennwort aus dem Active Directory-Datenspeicher abgerufen werden kann. Diese Eigenschaft gibt immer false zurück.

EnableSearchMethods

Ruft einen Wert ab, der angibt, ob suchorientierte ActiveDirectoryMembershipProvider-Methoden verfügbar sind.

MaxInvalidPasswordAttempts

Ruft die Anzahl fehlgeschlagener Antwortversuche ab, die für den Benutzer bei der Frage zum Zurücksetzen des Kennworts zulässig sind.

MinRequiredNonAlphanumericCharacters

Ruft die minimale Anzahl von Sonderzeichen ab, die ein gültiges Kennwort enthalten muss.

MinRequiredPasswordLength

Ruft die minimale erforderliche Länge für ein Kennwort ab.

Name

Ruft den Anzeigennamen ab, der verwendet wird, um während der Konfiguration auf den Anbieter zu verweisen.

(Geerbt von ProviderBase)
PasswordAnswerAttemptLockoutDuration

Ruft den Zeitraum ab, für den ein Benutzerkonto gesperrt ist, nachdem der Benutzer zu viele falsche Kennwortantwortversuche unternommen hat.

PasswordAttemptWindow

Ruft das Zeitfenster ab, in dem aufeinander folgende fehlerhafte Versuche, ein gültiges Kennwort oder eine gültige Kennwortantwort bereitzustellen, nachverfolgt werden.

PasswordFormat

Ruft einen Wert ab, der das Format von Kennwörtern im Active Directory-Datenspeicher angibt.

PasswordStrengthRegularExpression

Ruft den regulären Ausdruck ab, der zum Auswerten eines Kennworts verwendet wird.

RequiresQuestionAndAnswer

Ruft einen Wert ab, der angibt, ob der Mitgliedschaftsanbieter so konfiguriert ist, dass beim Erstellen eines Benutzers eine Kennwortfrage und -antwort erforderlich sind.

RequiresUniqueEmail

Ruft einen Wert ab, der angibt, ob eine auf dem Active Directory-Server gespeicherte E-Mail-Adresse eindeutig sein muss.

Methoden

ChangePassword(String, String, String)

Ändert das Kennwort für den angegebenen Benutzer.

ChangePasswordQuestionAndAnswer(String, String, String, String)

Aktualisiert die Kennwortfrage und -antwort für einen Benutzer im Active Directory-Speicher.

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

Fügt dem Active Directory-Datenspeicher einen neuen Benutzer hinzu.

DecryptPassword(Byte[])

Entschlüsselt ein verschlüsseltes Kennwort.

(Geerbt von MembershipProvider)
DeleteUser(String, Boolean)

Entfernt die Mitgliedschaftsinformationen eines Benutzers aus dem Active Directory-Datenspeicher.

EncryptPassword(Byte[])

Verschlüsselt ein Kennwort.

(Geerbt von MembershipProvider)
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode)

Verschlüsselt das angegebene Kennwort mithilfe des angegebenen Kennwortkompatibilitätsmodus.

(Geerbt von MembershipProvider)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
FindUsersByEmail(String, Int32, Int32, Int32)

Gibt anhand der E-Mail-Adresse des Benutzers eine Auflistung von Mitgliedschaftsbenutzern aus dem Active Directory-Datenspeicher zurück.

FindUsersByName(String, Int32, Int32, Int32)

Gibt eine Auflistung von Benutzern aus dem Active Directory-Datenspeicher anhand der Benutzernamen zurück.

GeneratePassword()

Generiert ein zufälliges Kennwort.

GetAllUsers(Int32, Int32, Int32)

Ruft eine Auflistung aller in einer Active Directory-Datenquelle gespeicherten Benutzer ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetNumberOfUsersOnline()

Löst in allen Fällen eine NotSupportedException-Ausnahme aus.

GetPassword(String, String)

Gibt das Kennwort des angegebenen Benutzers aus der Datenbank zurück. Die ActiveDirectoryMembershipProvider-Klasse unterstützt diese Methode nicht.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetUser(Object, Boolean)

Ruft die dem angegebenen Benutzerschlüssel zugeordneten Mitgliedschaftsbenutzerinformationen ab.

GetUser(String, Boolean)

Ruft die dem angegebenen Benutzernamen zugeordneten Mitgliedschaftsbenutzerinformationen ab.

GetUserNameByEmail(String)

Ruft den Benutzernamen ab, der der angegebenen E-Mail-Adresse zugeordnet ist.

Initialize(String, NameValueCollection)

Initialisiert die ActiveDirectoryMembershipProvider-Instanz mit den Eigenschaftswerten aus den Konfigurationsdateien der Anwendung. Diese Methode ist nicht für den Aufruf aus dem Code heraus bestimmt.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnValidatingPassword(ValidatePasswordEventArgs)

Löst das ValidatingPassword-Ereignis aus, wenn ein Ereignishandler definiert wurde.

(Geerbt von MembershipProvider)
ResetPassword(String, String)

Setzt das Kennwort eines Benutzers auf ein neues, automatisch generiertes Kennwort zurück.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
UnlockUser(String)

Hebt eine Sperre auf, sodass ein Mitgliedschaftsbenutzer überprüft werden kann.

UpdateUser(MembershipUser)

Aktualisiert Informationen zu einem Benutzer im Active Directory-Datenspeicher.

ValidateUser(String, String)

Überprüft, ob der angegebene Benutzername und das angegebene Kennwort im Active Directory-Datenspeicher vorhanden sind.

Ereignisse

ValidatingPassword

Tritt auf, wenn ein Benutzer erstellt, ein Kennwort geändert oder ein Kennwort zurückgesetzt wird.

(Geerbt von MembershipProvider)

Gilt für:

Weitere Informationen