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 sull'appartenenza per un'applicazione ASP.NET nei server Active Directory e in modalità applicazione Active Directory.
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
Nell'esempio seguente viene illustrato il file Web.config per un'applicazione ASP.NET configurata per l'uso di un'istanza ActiveDirectoryMembershipProvider di . Usa i mapping predefiniti per gli attributi di Active Directory. Non supporta la sicurezza per la reimpostazione della password con domande e risposte o la possibilità di chiamare metodi di ricerca.
<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>
Commenti
Questa classe viene usata dalle Membership classi e MembershipUser per fornire servizi di appartenenza per un'applicazione ASP.NET tramite un server Active Directory (AD) o active Directory Application Mode (ADAM).
Annotazioni
L'uso di un server ADAM richiede una configurazione specifica. Per altre informazioni, vedere la sezione Configurazione ADAM di seguito.
Importante
L'istanza ActiveDirectoryMembershipProvider funziona solo nella configurazione predefinita dei criteri di attendibilità totale di ASP.NET. Per usare l'istanza ActiveDirectoryMembershipProvider a qualsiasi livello di attendibilità parziale, è necessario apportare modifiche al file dei criteri di attendibilità appropriato per l'applicazione oppure è necessario creare un assembly "sandbox" distribuito nella GAC.
La ActiveDirectoryMembershipProvider classe richiede l'autorizzazione senza restrizioni DirectoryServicesPermission per l'esecuzione. Questa autorizzazione non viene aggiunta ad alcun file di criteri parzialmente attendibile fornito con ASP.NET. Anche se l'aggiunta dell'autorizzazione DirectoryServicesPermission a un file di criteri di attendibilità parziale consentirà l'uso della ActiveDirectoryMembershipProvider classe , in questo modo le System.DirectoryServices classi dello spazio dei nomi saranno disponibili per qualsiasi codice in esecuzione nelle pagine di ASP.NET. Questa opzione non è consigliata per tutti 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 classe o a ActiveDirectoryMembershipProvider una classe che deriva dalla ActiveDirectoryMembershipProvider classe . In entrambi i casi, la classe wrapper deve asserire 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 ambito secondario 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 di Active Directory anziché un server specifico e la EnablePasswordReset proprietà è true, l'istanza ActiveDirectoryMembershipProvider si connetterà sempre al server con il ruolo PDC per il dominio per garantire che le modifiche della password siano effettive e siano disponibili quando viene chiamato il ValidateUser metodo .Questa stringa di connessione non è consentita quando si usa ADAM e genererà un'eccezione NotSupportedException. |
|
<LDAP:// domain o server>:[port]/<container 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 nel sottoalbero rooted 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 che la stringa di connessione definisci un contenitore specifico 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 Web.config. Per altre informazioni sui mapping degli attributi, vedere le singole proprietà nella documentazione della ActiveDirectoryMembershipUser classe.
Nella tabella seguente sono elencate le ActiveDirectoryMembershipUser proprietà e i relativi mapping di attributi predefiniti.
Importante
La ActiveDirectoryMembershipProvider classe non verifica in modo esplicito che gli attributi del provider non siano 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 | commento | No |
| CreationDate | whenCreated | No |
| posta elettronica | Sì, ma deve essere un attributo a valore singolo di tipo Unicode String. | |
| LastActivityDate | Non disponibile | Non supportato da ActiveDirectoryMembershipProvider. |
| LastLoginDate | Non disponibile | Non supportato da ActiveDirectoryMembershipProvider. |
| LastPasswordChangedDate | pwdLastSet | No |
| PasswordQuestion | none | Sì, ma deve essere un attributo a valore singolo di tipo Unicode String. |
| IsApproved | User-Account-Control (AD) mDS-UserAccountDisabled (ADAM) |
No |
| IsLockedOut | calcolato da lockoutTime e dalla durata del blocco di AD (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 alla password non valida, 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à di SQL. |
No |
Quando entrambe le RequiresQuestionAndAnswer proprietà e EnablePasswordReset sono true, la ActiveDirectoryMembershipProvider classe supporta la sicurezza per la 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'elemento add per i provider per l'appartenenza (schema delle impostazioni ASP.NET) 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 per la reimpostazione della password, vedere la RequiresQuestionAndAnswer proprietà .
Connessioni Active Directory
Quando la ActiveDirectoryMembershipProvider classe viene usata per connettersi a un server Active Directory o ad active Directory Application Mode (ADAM), l'attributo impostato usando l'elemento connectionProtectionadd per i provider per l'appartenenza (schema delle impostazioni ASP.NET) 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 che l'istanza ActiveDirectoryMembershipProvider userà per creare la connessione al server Active Directory o ADAM.
Nella tabella seguente viene illustrato l'effetto dell'attributo durante la connectionProtection connessione a un'istanza di Active Directory.
impostazione 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 (schema delle impostazioni ASP.NET) nel file di configurazione dell'applicazione. In caso contrario, l'istanza genererà un'eccezione ActiveDirectoryMembershipProviderProviderException . |
Secure |
La ActiveDirectoryMembershipProvider classe tenterà di connettersi ad Active Directory tramite SSL. Se SSL ha esito negativo, verrà eseguito un secondo tentativo di connessione ad Active Directory tramite il segno e il seal. 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 durante la connectionProtection connessione a un server ADAM.
impostazione 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 configuri in modo esplicito il server ADAM per consentire l'invio e la modifica delle password in 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 stabilire 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 l'uso delle 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
| Nome | Descrizione |
|---|---|
| ActiveDirectoryMembershipProvider() |
Crea una nuova istanza della ActiveDirectoryMembershipProvider classe . |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 descrittiva adatta per la visualizzazione negli strumenti di amministrazione o in altre interfacce utente. (Ereditato da ProviderBase) |
| EnablePasswordReset |
Ottiene un valore che indica se l'istanza ActiveDirectoryMembershipProvider è configurata per consentire agli utenti di reimpostare le password. |
| EnablePasswordRetrieval |
Ottiene un valore che indica se la password dell'utente può essere recuperata dall'archivio dati di Active Directory. Questa proprietà restituisce |
| EnableSearchMethods |
Ottiene un valore che indica se sono disponibili metodi orientati alla ActiveDirectoryMembershipProvider ricerca. |
| MaxInvalidPasswordAttempts |
Ottiene il numero di tentativi di risposta non riusciti 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 necessaria per una password. |
| Name |
Ottiene il nome descrittivo utilizzato per fare riferimento al provider durante la configurazione. (Ereditato da ProviderBase) |
| PasswordAnswerAttemptLockoutDuration |
Ottenere il periodo di tempo per il quale un account utente viene bloccato dopo che l'utente effettua troppi tentativi di risposta password non valida. |
| PasswordAttemptWindow |
Ottiene l'intervallo di tempo durante il quale vengono rilevati tentativi consecutivi non riusciti di fornire una password valida o una risposta password valida. |
| PasswordFormat |
Ottiene un valore che indica il formato delle password nell'archivio dati di Active Directory. |
| PasswordStrengthRegularExpression |
Ottiene l'espressione regolare utilizzata per valutare una password. |
| RequiresQuestionAndAnswer |
Ottiene un valore che indica se il provider di appartenenze è configurato per richiedere una domanda e una risposta alla password durante la creazione di un utente. |
| RequiresUniqueEmail |
Ottiene un valore che indica se un indirizzo di posta elettronica archiviato nel server Active Directory deve essere univoco. |
Metodi
| Nome | Descrizione |
|---|---|
| ChangePassword(String, String, String) |
Modifica la password per l'utente specificato. |
| ChangePasswordQuestionAndAnswer(String, String, String, String) |
Aggiorna la domanda e la risposta della password per un utente nell'archivio di 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[], MembershipPasswordCompatibilityMode) |
Crittografa la password specificata usando la modalità di compatibilità password specificata. (Ereditato da MembershipProvider) |
| EncryptPassword(Byte[]) |
Crittografa una password. (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 una raccolta di utenti dall'archivio dati di Active Directory in base al nome utente. |
| GeneratePassword() |
Genera una password casuale. |
| GetAllUsers(Int32, Int32, Int32) |
Ottiene una raccolta di tutti gli utenti archiviati in un'origine 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 la password dell'utente specificato dal database. La ActiveDirectoryMembershipProvider classe non supporta questo metodo. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| GetUser(Object, Boolean) |
Ottiene le informazioni dell'utente di appartenenza associate alla chiave utente specificata. |
| GetUser(String, Boolean) |
Ottiene le informazioni dell'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 ActiveDirectoryMembershipProvider con i valori delle proprietà dai file di configurazione dell'applicazione. Questo metodo non deve essere chiamato dal codice. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (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) |
Cancella un blocco in modo che un utente di appartenenza possa essere convalidato. |
| UpdateUser(MembershipUser) |
Aggiorna le informazioni su un utente nell'archivio dati di Active Directory. |
| ValidateUser(String, String) |
Verifica che il nome utente e la password specificati esistano nell'archivio dati di Active Directory. |
Eventi
| Nome | Descrizione |
|---|---|
| ValidatingPassword |
Si verifica quando viene creato un utente, viene modificata una password o viene reimpostata una password. (Ereditato da MembershipProvider) |