ActiveDirectoryMembershipProvider Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Gestisce l'archiviazione delle informazioni di appartenenza per un'applicazione ASP.NET nei server Active Directory e 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
- Ereditarietà
Esempio
Gli esempi di codice seguenti mostrano il file Web.config per un'applicazione ASP.NET configurata per l'uso di un'istanza ActiveDirectoryMembershipProvider . Il primo esempio usa i mapping predefiniti per gli attributi di Active Directory e non supporta la sicurezza di reimpostazione della password con domande e risposte né la possibilità di chiamare i metodi di ricerca. Il secondo esempio mostra tutte le impostazioni dell'attributo consentite per un'istanza ActiveDirectoryMembershipProvider .
Il primo esempio è un semplice file di configurazione usando mapping predefiniti per gli attributi di 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>
In questo esempio vengono visualizzate tutte le impostazioni dell'attributo disponibili per un'istanza di 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
e serverSearchTimeout
il valore predefinito è minuti. Per modificare le unità, impostare il valore dell'attributo timeoutUnit
su uno di "Days", "Hours", "Minutes", "Seconds" o "Milliseconds". Se l'attributo non è specificato, il valore predefinito è "Minuti".
Commenti
Questa classe viene usata dalle Membership classi e MembershipUser per fornire servizi di appartenenza per un'applicazione ASP.NET usando un server Active Directory (AD) o Active Directory Application Mode (ADAM).
Nota
L'uso di un server ADAM richiede una configurazione specifica. Per altre informazioni, vedere la sezione Configurazione ADAM seguente.
Importante
L'istanza ActiveDirectoryMembershipProvider funziona solo nella configurazione predefinita dei criteri di attendibilità completa di ASP.NET. Per usare l'istanza a qualsiasi livello di attendibilità parziale, è necessario apportare modifiche al file di criteri di attendibilità appropriato per l'applicazione ActiveDirectoryMembershipProvider oppure è necessario creare un assembly "sandbox" distribuito nella gaC.
La classe richiede l'autorizzazione senza restrizioni DirectoryServicesPermission per l'esecuzioneActiveDirectoryMembershipProvider. Questa autorizzazione non viene aggiunta a uno dei file di criteri di attendibilità parziale forniti con ASP.NET. Anche se l'aggiunta dell'autorizzazione a un file di criteri di attendibilità parziale consentirà l'uso DirectoryServicesPermission della ActiveDirectoryMembershipProvider classe, in modo da rendere disponibili le System.DirectoryServices classi dello spazio dei nomi per qualsiasi codice in esecuzione nelle pagine di ASP.NET. Questa opzione non è consigliata per i server Web che devono essere eseguiti in modalità protetta e bloccata.
In alternativa, è possibile creare un assembly "sandbox" che chiama la ActiveDirectoryMembershipProvider classe. Questo assembly può contenere una classe wrapper che inoltra le chiamate al metodo alla ActiveDirectoryMembershipProvider classe o a una classe che deriva dalla ActiveDirectoryMembershipProvider classe . In entrambi i casi, la classe wrapper deve affermare l'autorizzazione senza restrizioni DirectoryServicesPermission . Distribuire l'assembly sandbox nella gaC e contrassegnare l'assembly con l'attributo AllowPartiallyTrustedCallersAttribute APTCA. Ciò consentirà al codice di ASP.NET parzialmente attendibile di chiamare la classe wrapper e poiché la classe wrapper asserisce internamente l'autorizzazione senza restrizioni DirectoryServicesPermission , la classe wrapper sarà in grado di chiamare correttamente il provider
È necessario creare una voce connectionStrings Element (ASP.NET Settings Schema) nel file Web.config che identifica il server Active Directory, il dominio Active Directory o la partizione dell'applicazione ADAM da usare. Il provider funzionerà solo nell'ambito del dominio o in un sottoscope all'interno di un dominio. Nella tabella seguente sono elencate le stringhe di connessione consentite e l'ambito usato.
Stringa di connessione | Ambito |
---|---|
<LDAP:// dominio o server>:[porta] Il numero di porta è facoltativo per ADAM e non è necessario per Active Directory. |
Il provider viene eseguito sul dominio o sul server specificato. Con AD, la creazione e l'eliminazione degli utenti viene eseguita nel contenitore utenti predefinito. Tutte le altre operazioni, inclusi i metodi di ricerca, verranno radicate nel contesto di denominazione predefinito per il dominio. Se la stringa di connessione specifica un dominio Active Directory anziché un server specifico e la proprietà è true , l'istanza EnablePasswordResetActiveDirectoryMembershipProvider si connetterà sempre al server con il ruolo PDC per il dominio per assicurarsi che le modifiche della password vengano effettive e siano disponibili quando viene chiamato il ValidateUser metodo.Questa stringa di connessione non è consentita quando si usa ADAM e genererà un NotSupportedExceptionoggetto . |
<LDAP:// dominio o server>:[porta]/<contenitore dn> Il numero di porta è facoltativo per ADAM e non è necessario per Active Directory. |
Il provider viene eseguito sul dominio o sul server specificato. La creazione e l'eliminazione dell'utente vengono eseguite solo nel contenitore specificato. Tutte le altre operazioni, inclusi i metodi di ricerca, eseguono ricerche in sottoalbero radicate nel contenitore. Per i server ADAM, il contenitore specifica la radice di una partizione dell'applicazione o un contenitore all'interno di una partizione dell'applicazione. È consigliabile definire una stringa di connessione specifica per migliorare le prestazioni. |
L'istanza esegue il ActiveDirectoryMembershipProvider mapping degli attributi della directory alle ActiveDirectoryMembershipUser proprietà. Gli attributi predefiniti vengono usati se non viene eseguito alcun mapping di attributi nel file di Web.config. Per altre informazioni sui mapping degli attributi, vedere le singole proprietà nella documentazione della ActiveDirectoryMembershipUser classe.
Nella tabella seguente sono elencate le proprietà e i ActiveDirectoryMembershipUser mapping degli attributi predefiniti.
Importante
La ActiveDirectoryMembershipProvider classe non controlla in modo esplicito che gli attributi del provider non vengano mappati agli attributi principali dell'oggetto utente nella directory. È necessario assicurarsi che le informazioni riservate dalla directory non vengano esposte tramite attributi mappati.
Proprietà | Attributo directory predefinito | È possibile eseguire il mapping? |
---|---|---|
ProviderUserKey | securityIdentifier | No |
UserName | userPrincipalName | Sì, ma deve essere userPrincipalName o sAMAccountName |
Comment | comment | No |
CreationDate | whenCreated | No |
Sì, ma deve essere un attributo a valore singolo di tipo Unicode String. | ||
LastActivityDate | n/d | Non supportato da ActiveDirectoryMembershipProvider. |
LastLoginDate | n/d | Non supportato da ActiveDirectoryMembershipProvider. |
LastPasswordChangedDate | pwdLastSet | No |
PasswordQuestion | Nessuno | Sì, ma deve essere un attributo a valore singolo di tipo Unicode String. |
IsApproved | Controllo account utente (AD) mDS-UserAccountDisabled (ADAM) |
No |
IsLockedOut | calcolata da lockoutTime e durata del blocco di ACTIVE (AD in Windows 2000) msDS-User-Account-Control-Computed (AD in Windows Server 2003) msDS-User-Account-Control-Computed (ADAM) |
No |
LastLockoutDate | Se l'utente è bloccato a causa di troppi tentativi di password non valido, viene restituito l'attributo di tempo di blocco. Se l'utente è bloccato a causa di troppi tentativi di risposta password non valido, viene restituito il valore archiviato nell'attributo definito da attributeMapFailedPasswordAnswerLockoutTime .Se l'utente è bloccato a causa di una password non valida e di troppi tentativi di password non valido, viene restituito il valore di data/ora più recente. Se l'account non è bloccato, restituire 1/1/1754 per la compatibilità SQL. |
No |
Quando entrambe le RequiresQuestionAndAnswer proprietà e EnablePasswordReset sono true
, la ActiveDirectoryMembershipProvider classe supporta la sicurezza di reimpostazione della password richiedendo all'utente di rispondere a una domanda predeterminata. Per supportare la domanda e la risposta, è necessario impostare gli attributi di configurazione seguenti usando l'attributo add Element for provider for membership (ASP.NET Settings Schema) nel file di configurazione dell'applicazione.
Attributo di configurazione | Tipo di attributo |
---|---|
attributeMapPasswordQuestion |
Deve essere un attributo a valore singolo di tipo Unicode String. |
attributeMapPasswordAnswer |
Deve essere un attributo a valore singolo di tipo Unicode String. |
attributeMapFailedPasswordAnswerCount |
Deve essere un attributo a valore singolo di tipo Integer. |
attributeMapFailedPasswordAnswerTime |
Deve essere un attributo a valore singolo di tipo Large Integer/Interval. |
attributeMapFailedPasswordAnswerLockoutTime |
Deve essere un attributo a valore singolo di tipo Large Integer/Interval. |
Per altre informazioni sull'uso della sicurezza di reimpostazione della password, vedere la RequiresQuestionAndAnswer proprietà.
Connessioni active Directory
Quando la ActiveDirectoryMembershipProvider classe viene usata per connettersi a un server Active Directory o a un server di modalità applicazione Active Directory (ADAM), l'attributo connectionProtection
impostato usando l'elemento add per i provider per l'appartenenza (ASP.NET Settings Schema) nel file di configurazione dell'applicazione può limitare i tipi di operazioni che la ActiveDirectoryMembershipProvider classe può eseguire sulla connessione. L'attributo connectionProtection
determina anche i metodi ActiveDirectoryMembershipProvider che l'istanza userà per creare la connessione al server Active Directory o ADAM.
Nella tabella seguente viene illustrato l'effetto dell'attributo connectionProtection
durante la connessione a un'istanza di Active Directory.
Impostazione di connectionProtection |
Effetto |
---|---|
None | La ActiveDirectoryMembershipProvider classe si connetterà a un'istanza di Active Directory, con queste restrizioni. - Qualsiasi metodo che imposta una password avrà esito negativo. Active Directory richiede una connessione sicura quando si modificano le password. - È necessario impostare in modo esplicito gli connectionUsername attributi e connectionPassword usando l'elemento add per i provider per l'appartenenza (ASP.NET Schema impostazioni) nel file di configurazione dell'applicazione. In caso contrario, l'istanza ActiveDirectoryMembershipProvider genererà un'eccezione ProviderException . |
Secure |
La ActiveDirectoryMembershipProvider classe tenterà di connettersi ad Active Directory usando SSL. Se SSL ha esito negativo, verrà eseguito un secondo tentativo di connessione ad Active Directory usando la firma e il sigillo. Se entrambi i tentativi hanno esito negativo, l'istanza genererà un'eccezione ActiveDirectoryMembershipProviderProviderException . Sono supportate sia le credenziali di processo che le credenziali esplicite. |
Nella tabella seguente viene illustrato l'effetto dell'attributo connectionProtection
durante la connessione a un server ADAM.
Impostazione di connectionProtection |
Effetto |
---|---|
None | La ActiveDirectoryMembershipProvider classe si connetterà a un server ADAM, con questa restrizione. - Qualsiasi metodo che imposta le password avrà esito negativo a meno che non si configura in modo esplicito il server ADAM per consentire l'invio e la modifica delle password su una connessione non sicura. Sono supportate sia le credenziali di processo che le credenziali esplicite. |
Secure |
La ActiveDirectoryMembershipProvider classe tenterà di connettersi al server ADAM usando SSL. Se non è possibile effettuare una connessione, l'istanza genererà un'eccezione ActiveDirectoryMembershipProviderProviderException . Sono supportate sia le credenziali di processo che le credenziali esplicite. |
Configurazione ADAM
Quando si usa un server ADAM, l'istanza DI ADAM deve contenere uno schema che definisce la User
classe. È possibile importare la User
classe con un'importazione LDIF del MS-User.ldf
file disponibile nella directory di installazione di ADAM.
La ActiveDirectoryMembershipProvider classe funzionerà con un server ADAM configurato per usare le porte di rete predefinite. La tabella seguente mostra le impostazioni predefinite previste per il server ADAM.
impostazione connectionProtection | Porta ADAM prevista |
---|---|
None | 389 |
Secure |
636 |
Costruttori
ActiveDirectoryMembershipProvider() |
Crea una nuova istanza della classe ActiveDirectoryMembershipProvider. |
Proprietà
ApplicationName |
Nome dell'applicazione che usa il provider di appartenenze personalizzato. |
CurrentConnectionProtection |
Ottiene il livello di sicurezza corrente utilizzato per proteggere le comunicazioni con il server. |
Description |
Ottiene una breve descrizione di facile comprensione che è possibile visualizzare in strumenti di amministrazione o in altre interfacce utente (UI, User Interface). (Ereditato da ProviderBase) |
EnablePasswordReset |
Ottiene un valore che indica se l'istanza della classe ActiveDirectoryMembershipProvider è configurato in modo da consentire agli utenti di reimpostare le loro password. |
EnablePasswordRetrieval |
Ottiene un valore indicante se la password utente può essere recuperata dall'archivio dati di Active Directory. Questa proprietà restituisce sempre |
EnableSearchMethods |
Ottiene un valore che indica se i metodi orientati alla ricerca ActiveDirectoryMembershipProvider sono disponibili. |
MaxInvalidPasswordAttempts |
Ottiene il numero di tentativi con risposta alla password non valida consentiti a un utente per la domanda di reimpostazione della password. |
MinRequiredNonAlphanumericCharacters |
Ottiene il numero minimo di caratteri speciali che devono essere presenti in una password valida. |
MinRequiredPasswordLength |
Ottiene la lunghezza minima richiesta per una password. |
Name |
Ottiene il nome descrittivo utilizzato per fare riferimento al provider durante la configurazione. (Ereditato da ProviderBase) |
PasswordAnswerAttemptLockoutDuration |
Ottiene l'intervallo di tempo durante il quale un account utente è bloccato dopo che l'utente ha effettuato un numero eccessivo di tentativi di risposta per la password. |
PasswordAttemptWindow |
Ottiene l'intervallo di tempo in cui vengono registrati i tentativi consecutivi non riusciti di fornire una password o una risposta per la password valida. |
PasswordFormat |
Ottiene un valore che indica il formato delle password nell'archivio dati di Active Directory. |
PasswordStrengthRegularExpression |
Ottiene l'espressione regolare usata per valutare una password. |
RequiresQuestionAndAnswer |
Ottiene un valore che indica se il provider di appartenenze è configurato in modo da richiedere agli utenti una domanda e una risposta per la password al momento della creazione di un utente. |
RequiresUniqueEmail |
Ottiene un valore indicante se un indirizzo di posta elettronica archiviato nel server Active Directory deve essere univoco. |
Metodi
ChangePassword(String, String, String) |
Modifica la password per l'utente specificato. |
ChangePasswordQuestionAndAnswer(String, String, String, String) |
Aggiorna la domanda e la risposta relative alla password di un utente nell'archivio Active Directory. |
CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus) |
Aggiunge un nuovo utente all'archivio dati di Active Directory. |
DecryptPassword(Byte[]) |
Decrittografa una password crittografata. (Ereditato da MembershipProvider) |
DeleteUser(String, Boolean) |
Rimuove le informazioni di appartenenza di un utente dall'archivio dati di Active Directory. |
EncryptPassword(Byte[]) |
Crittografa una password. (Ereditato da MembershipProvider) |
EncryptPassword(Byte[], MembershipPasswordCompatibilityMode) |
Crittografa la password specificata utilizzando la modalità di compatibilità della password specificata. (Ereditato da MembershipProvider) |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
FindUsersByEmail(String, Int32, Int32, Int32) |
Restituisce una raccolta di utenti di appartenenza dall'archivio dati di Active Directory in base all'indirizzo di posta elettronica dell'utente. |
FindUsersByName(String, Int32, Int32, Int32) |
Restituisce un insieme di utenti dall'archivio dati di Active Directory in base al nome utente. |
GeneratePassword() |
Genera una password casuale. |
GetAllUsers(Int32, Int32, Int32) |
Ottiene l'insieme di tutti gli utenti archiviati in un archivio dati di Active Directory. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetNumberOfUsersOnline() |
Genera un'eccezione NotSupportedException in tutti i casi. |
GetPassword(String, String) |
Restituisce dal database la password dell'utente specificato. La classe ActiveDirectoryMembershipProvider non supporta questo metodo. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
GetUser(Object, Boolean) |
Ottiene le informazioni sull'utente di appartenenza associate alla chiave utente specificata. |
GetUser(String, Boolean) |
Ottiene le informazioni sull'utente di appartenenza associate al nome utente specificato. |
GetUserNameByEmail(String) |
Ottiene il nome utente associato all'indirizzo di posta elettronica specificato. |
Initialize(String, NameValueCollection) |
Inizializza l'istanza della classe ActiveDirectoryMembershipProvider con i valori di proprietà ottenuti dai file di configurazione dell'applicazione. Questo metodo non è destinato a essere chiamato dal codice dell'utente. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnValidatingPassword(ValidatePasswordEventArgs) |
Genera l'evento ValidatingPassword se è stato definito un gestore eventi. (Ereditato da MembershipProvider) |
ResetPassword(String, String) |
Reimposta la password di un utente su una nuova password generata automaticamente. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
UnlockUser(String) |
Annulla un blocco in modo da consentire la convalida di un utente di appartenenza. |
UpdateUser(MembershipUser) |
Aggiorna le informazioni su un utente presente nell'archivio dati di Active Directory. |
ValidateUser(String, String) |
Verifica che nome utente e password specificati esistano nell'origine dati di Active Directory. |
Eventi
ValidatingPassword |
Si verifica quando viene creato un utente, viene modificata una password o viene reimpostata una password. (Ereditato da MembershipProvider) |