Mapping delle classi di Active Directory
Poiché Active Directory include un'ampia gamma di oggetti possibili, WMI non può creare un mapping uno-a-uno diretto. Il provider di Servizi directory usa invece regole per eseguire il mapping delle classi tra le due tecnologie.
In questo argomento vengono illustrate le sezioni seguenti:
Nota
Per altre informazioni sul supporto e l'installazione di questo componente in un sistema operativo specifico, vedere Disponibilità del sistema operativo dei componenti WMI.
Classi di mapping
Nell'elenco seguente vengono descritte le linee guida usate dal provider di Servizi directory per eseguire il mapping delle classi di Active Directory alle classi WMI:
Ogni classe astratta nello schema di Active Directory esegue il mapping a una classe astratta nello schema WMI.
Nello schema WMI ogni classe astratta è preceduta da DS_. Ad esempio, la classe person dello schema di Active Directory esegue il mapping alla classe WMI DS_person .
Ogni classe non associata dallo schema di Active Directory esegue il mapping alle due classi seguenti nello schema WMI:
- La prima classe mappata è preceduta da ADS_. Si tratta di classi astratte, mappate in base alle regole seguenti.
- La seconda classe mappata è una classe nonabstract con il prefisso del nome DS_. Questa classe è derivata dalla classe astratta ADS_, con l'aggiunta del qualificatore Provider .
Ad esempio, la classe utente dello schema di Active Directory esegue il mapping a due classi. La prima classe è la classe ADS_user astratta, mappata in base alle regole seguenti. La seconda classe è la classe DS_user nonabstract. È derivato da ADS_user e ha il qualificatore provider aggiunto.
Se non specificato diversamente, il nome di una classe mappata è il valore mangled della proprietà LDAP-Display-Name nella classe Active Directory.
Se la proprietà Sub-Class-Of è presente nella classe Active Directory, la classe con mapping WMI deriva dalla classe specificata.
Se la proprietà Sub-Class-Of non è presente, la classe con mapping WMI viene derivata dalla classe DS_LDAP_Root_Class , come specificato nel file MOF.
Nota
Questa classe ha la proprietà chiave ADSIPath , con un tipo VT_BSTR. Si tratta del percorso ADSI univoco che identifica questa istanza. Active Directory supporta solo l'ereditarietà singola, quindi funziona.
Viene creato un qualificatore dinamico di tipo VT_BOOL e il tipo
WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
impostato su TRUE per ogni classe. Si tratta di un qualificatore WMI standard che indica che le istanze di questa classe vengono fornite in modo dinamico.Se la classe non è astratta, il provider crea un qualificatore provider di tipo VT_BSTR BOOL e il sapore
WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
del qualificatore impostato su "Provider di istanze DS" per ogni classe. Si tratta di un qualificatore WMI standard che indica il nome del provider in modo dinamico che fornisce istanze di questa classe.
Le altre proprietà ADSI eseguono il mapping ai qualificatori e alle proprietà della classe in base alle tabelle seguenti. Tutti i qualificatori eseguono il mapping con un valore del flag qualificatore pari WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
a .
Di seguito sono elencate le informazioni di mapping per la classe Active Directory, che mostra il qualificatore WMI e il tipo di qualificatore WMI per ogni proprietà di Active Directory.
-
Nome comune
-
CN (VT_BSTR)
Mappato direttamente dal valore stringa.
-
Default-Object-Category
-
DefaultObjectCategory (VT_BSTR)
Mappato direttamente dal valore stringa.
-
Descrittore di sicurezza predefinito
-
DefaultSecurityDescriptor (VT_BSTR)
Mappato direttamente dal valore stringa.
-
Governs-Id
-
GovernsId (VT_BSTR)
Mappato dalla rappresentazione di stringa dell'OID; ad esempio "{ 1 3 3 6 }".
-
Object-Class
-
N/D
Non mappato.
-
Object-Class-Category
-
ObjectClassCategory (VT_I4)
Mappato direttamente dal valore intero. Inoltre, se il valore è Abstract(2), viene creato anche il qualificatore CIM standard VT_BOOL denominato qualificatore "Abstract".
-
RDN-ATT-ID
-
RDNATTID (VT_BSTR)
Mappato dalla rappresentazione di stringa del valore OID; ad esempio "{ 1 3 3 6 }". Inoltre, la proprietà identificata qui viene annotata con il qualificatore CIM indicizzato standard impostato su TRUE.
-
Solo sistema
-
SystemOnly (VT_BOOL)
Mappato direttamente dal valore booleano.
Di seguito sono elencate le proprietà della classe Active Directory mappate alle proprietà della classe WMI.
-
Può contenere
-
Ogni proprietà di questo elenco viene mappata a una proprietà WMI.
-
Deve contenere
-
Ogni proprietà di questo elenco viene mappata a una proprietà WMI. Per ognuno di questi viene creato il qualificatore CIM standard Not_Null .
-
System-May-Contain
-
Ogni proprietà di questo elenco viene mappata a una proprietà WMI. Inoltre, ogni proprietà viene annotata con un qualificatore di sistema , impostato su TRUE.
-
System-Must-Contain
-
Ogni proprietà di questo elenco viene mappata a una proprietà WMI. Per ognuno di questi viene creato il qualificatore CIM standard Not_Null . Inoltre, ogni proprietà viene annotata con un qualificatore di sistema , impostato su TRUE.
Attributi di mapping
Il provider servizi directory esegue il mapping di ogni attributo di una classe Active Directory a una proprietà della classe WMI corrispondente in base alle regole in questa sezione. In generale, il provider di servizi directory assegna alla proprietà WMI il nome della versione inattiva del valore LDAP-Display-Name dell'attributo Active Directory.
Se la proprietà Active Directory Is-Single Valued è FALSE, questa proprietà WMI viene combinata con l'operatore OR con CIM_FLAG_ARRAY. Si noti che ogni proprietà viene contrassegnata con il qualificatore VT_BSTR , ADSyntax. Rappresenta la sintassi di Active Directory sottostante.
La tabella seguente elenca il mapping della sintassi di Active Directory al tipo di dati della proprietà WMI.
Elemento Active Directory | Tipo di dati WMI |
---|---|
Punto di accesso | CIM_STRING |
Boolean | CIM_BOOLEAN |
Stringa senza distinzione tra maiuscole e minuscole | CIM_STRING |
Stringa con distinzione tra maiuscole e minuscole | CIM_STRING |
Nome distinto | CIM_STRING |
DN-Binary | Oggetto incorporato della classe DN_With_Binary definito di seguito. |
DN-String | Oggetto incorporato della classe DN_With_String definito di seguito. |
Enumerazione | CIM_SINT32 |
Enumerazione | CIM_STRING |
Integer | CIM_SINT32 |
LargeInteger | CIM_STRING |
Descrittore di sicurezza | Oggetto incorporato della classe Uint8Array definito di seguito. |
Stringa numerica | CIM_STRING |
ID dell'oggetto. | CIM_STRING |
Stringa ottet | Oggetto incorporato della classe Uint8Array definito di seguito. |
Nome OR | CIM_STRING |
Presentation-Address | Oggetto incorporato della classe Uint8Array definito di seguito. |
Stampa stringa maiuscola | CIM_STRING |
Collegamento alla replica | Oggetto incorporato della classe Uint8Array definito di seguito. |
String(Sid) | Oggetto incorporato della classe Uint8Array definito di seguito. |
Ora | CIM_DATETIME |
Ora codificata UTC | CIM_DATETIME |
Stringa Unicode | CIM_STRING |
La sintassi Octet String, che fa riferimento a una matrice di valori uint8 , presenta un problema quando viene eseguito il mapping a WMI perché WMI consente proprietà di tipi uint8 e matrici di uint8, mentre Active Directory consente proprietà di tipo Octet String e matrici di String di ottet.
Nell'esempio seguente viene illustrata la classe Provider di Servizi directory usata per eseguire il mapping di una matrice di proprietà di tipo String ottet.
Class Uint8Array
{
uint8 values[];
uint32 numberOfValues;
};
WMI esegue il mapping di tutti i valori delle proprietà String di Octet Active Directory alle istanze incorporate di Uint8Array. Analogamente, WMI esegue il mapping delle matrici di Ottet String alle matrici di oggetti Uint8Array incorporati.
Nell'esempio seguente vengono illustrate le classi mappate da WMI a DN-Binary e DN-String valori delle proprietà DS.
Class DN_With_String
{
string dnString;
string value;
};
Class DN_With_Binary
{
string dnString;
uint8 value[];
};
Nella tabella seguente viene elencato come WMI esegue il mapping delle proprietà dell'interfaccia degli attributi di Active Directory ai qualificatori delle proprietà WMI.
Nome della proprietà attributo Active Directory | Qualificatore WMI | Tipo di dati | Informazioni di mapping |
---|---|---|---|
Sintassi attributo | AttributeSyntax | VT_BSTR | Mappato dalla rappresentazione stringa dell'OID. |
Nome comune | CN | VT_BSTR | Mappato dal valore stringa. |
Solo sistema | Sistema | VT_BOOL | Mappato dal valore booleano. |
Nota
WMI esegue il mapping di tutti i qualificatori di Active Directory con i sapori qualificatori WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
.
Classi di associazione
Il servizio directory è essenzialmente un archivio gerarchico di oggetti. Tali oggetti che possono essere visualizzati a un livello nonleaf nella gerarchia sono denominati "contenitori". La struttura di questa gerarchia è ulteriormente controllata dalle proprietà "Poss-Superiors" e "System-Poss-Superiors" di una classe nello schema. Questi elementi, presi insieme, specificano il set di classi le cui istanze possono essere contenute all'interno di un'istanza di una classe contenitore.
Nell'esempio seguente viene modello un'associazione CIM come istanze della classe di associazione statica DS_LDAP_Class_Containment.
// DS Class Associations Provider
// Create a class of which instances are
// provided by this provider
[
Association : ToInstance,
dynamic,
HasClassRefs,
Provider("Microsoft|DSLDAPClassAssociationProvider|V1.0")
]
class DS_LDAP_Class_Containment
{
[key, classref{"DS_LDAP_Root_Class"} : ToInstance ToSubClass]
object Ref ChildClass;
[key, classref{"DS_LDAP_Root_Class"} : ToInstance ToSubClass]
object Ref ParentClass; // The parent DS Class
};
// Create an instance of the provider class for registration
instance of __Win32Provider as $AssociationsProvider
{
Name = "Microsoft|DSLDAPClassAssociationProvider|V1.0";
Clsid = "{33831ED4-42B8-11d2-93AD-00805F853771}";
ImpersonationLevel = 1;
};
// Specification of the instances and operation
// provided by the provider
instance of __InstanceProviderRegistration
{
Provider = $AssociationsProvider;
SupportsGet = TRUE;
SupportsPut = FALSE;
SupportsDelete = FALSE;
SupportsEnumeration = TRUE;
};
Il provider di classi di associazione supporta i metodi GetObjectAsync e CreateClassEnumAsync .