Asignación de clases de Active Directory
Dado que Active Directory tiene una amplia variedad de posibles objetos, WMI no puede crear una asignación directa uno a uno. En vez de eso, el proveedor de servicios de directorio usa reglas para asignar clases entre las dos tecnologías.
En este tema se describen las secciones siguientes:
Nota
Para más información sobre la compatibilidad y la instalación de este componente en un sistema operativo específico, consulte Disponibilidad del sistema operativo de los componentes de WMI.
Asignación de clases
En la lista siguiente se describen las directrices que usa el proveedor de servicios de directorio para asignar clases de Active Directory a clases WMI:
Cada clase abstracta del esquema de Active Directory se asigna a una clase abstracta del esquema WMI.
En el esquema WMI, cada clase abstracta tiene el prefijo DS_. Por ejemplo, la clase person del esquema de Active Directory se asigna a la clase DS_person de WMI.
Cada clase no abstracta del esquema de Active Directory se asigna a las dos clases siguientes del esquema de WMI:
- La primera clase asignada tiene el prefijo ADS_. Estas son clases abstractas, asignadas según las reglas siguientes.
- La segunda clase asignada es una clase no abstracta con el prefijo de nombre DS_. Esta clase se deriva de la clase abstracta ADS_, con la adición del calificador Provider.
Por ejemplo, la clase user del esquema de Active Directory se asigna a dos clases. La primera clase es la clase abstracta ADS_user, asignada según las reglas siguientes. La segunda clase es la clase no abstracta DS_user. Se deriva de ADS_user y tiene el calificador Provider agregado.
A menos que se especifique lo contrario, el nombre de una clase asignada es el valor alterado de la propiedad LDAP-Display-Name en la clase de Active Directory.
Si la propiedad Sub-Class-Of está presente en la clase de Active Directory, la clase asignada por WMI se deriva de la clase especificada.
Si la propiedad Sub-Class-Of no está presente, la clase asignada por WMI se deriva de la clase DS_LDAP_Root_Class, como se especifica en el archivo MOF.
Nota
Esta clase tiene la propiedad de clave ADSIPath, con un tipo VT_BSTR. Esta es la ruta de acceso ADSI única que identifica esta instancia. Como Active Directory solo admite herencia única, esto funciona.
Se crea un calificador Dynamic de tipo VT_BOOL y el tipo
WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
establecido en TRUE para cada clase. Se trata de un calificador WMI estándar que indica que las instancias de esta clase se proporcionan dinámicamente.Si la clase no es abstracta, el proveedor crea un calificador Provider de tipo VT_BSTR BOOL y el tipo
WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
de calificador establecido en "DS Instance Provider" para cada clase. Se trata de un calificador WMI estándar que indica el nombre del proveedor que proporciona dinámicamente instancias de esta clase.
El resto de las propiedades ADSI se asignan a calificadores de clase y propiedades según las tablas siguientes. Todos los calificadores se asignan con un valor de marca de calificador de WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
.
A continuación se muestra la información de asignación de la clase de Active Directory, que muestra el calificador WMI y el tipo de calificador WMI de cada propiedad de Active Directory.
-
Common-Name
-
CN (VT_BSTR)
Asignado directamente desde el valor de cadena.
-
Default-Object-Category
-
DefaultObjectCategory (VT_BSTR)
Asignado directamente desde el valor de cadena.
-
Default-Security-Descriptor
-
DefaultSecurityDescriptor (VT_BSTR)
Asignado directamente desde el valor de cadena.
-
Governs-Id
-
GovernsId (VT_BSTR)
Asignado a partir de la representación de cadena del OID; por ejemplo, "{ 1 3 3 6 }".
-
Object-Class
-
N/D
Sin asignar.
-
Object-Class-Category
-
ObjectClassCategory (VT_I4)
Asignado directamente desde el valor entero. Además, si el valor es Abstract(2), también se crea el calificador CIM VT_BOOL estándar, denominado calificador "Abstracto".
-
RDN-ATT-ID
-
RDNATTID (VT_BSTR)
Asignado a partir de la representación de cadena del valor de OID; por ejemplo, "{ 1 3 3 6 }". Además, la propiedad identificada aquí se anota con el calificador CIM Indexed estándar establecido en TRUE.
-
System-Only
-
SystemOnly (VT_BOOL)
Asignado directamente desde el valor booleano.
A continuación se enumeran las propiedades de clase de Active Directory asignadas a las propiedades de clase de WMI.
-
May-Contain
-
Cada propiedad de esta lista se asigna a una propiedad WMI.
-
Must-Contain
-
Cada propiedad de esta lista se asigna a una propiedad WMI. El calificador CIM Not_Null estándar se crea para cada uno de ellos.
-
System-May-Contain
-
Cada propiedad de esta lista se asigna a una propiedad WMI. Además, cada propiedad se anota con un calificador System, establecido en TRUE.
-
System-Must-Contain
-
Cada propiedad de esta lista se asigna a una propiedad WMI. El calificador CIM Not_Null estándar se crea para cada uno de ellos. Además, cada propiedad se anota con un calificador System, establecido en TRUE.
Asignación de atributos
El proveedor de servicios de directorio asigna cada atributo de una clase de Active Directory a exactamente una propiedad de la clase WMI correspondiente según las reglas de esta sección. En general, el proveedor de servicios de directorio asigna a la propiedad WMI el nombre de la propiedad WMI como versión administrada del valor LDAP-Display-Name del atributo de Active Directory.
Si la propiedad de Active Directory Is-Single-Valued es FALSE, esta propiedad WMI se combina con el operador OR con CIM_FLAG_ARRAY. Tenga en cuenta que cada propiedad se etiqueta con el calificador VT_BSTR, ADSyntax. Este representa la sintaxis subyacente de Active Directory.
En la tabla siguiente se muestra la asignación de la sintaxis de Active Directory al tipo de datos de propiedad WMI.
Elemento de Active Directory | Tipo de datos WMI |
---|---|
Access-Point | CIM_STRING |
Boolean | CIM_BOOLEAN |
Cadena que no distingue mayúsculas de minúsculas | CIM_STRING |
Cadena que distingue mayúsculas de minúsculas | CIM_STRING |
Nombre distintivo | CIM_STRING |
DN-Binary | Objeto incrustado de clase DN_With_Binary definido a continuación. |
DN-String | Objeto incrustado de clase DN_With_String definido a continuación. |
Enumeración | CIM_SINT32 |
Enumeración | CIM_STRING |
Integer | CIM_SINT32 |
LargeInteger | CIM_STRING |
Descriptor de seguridad | Objeto incrustado de la clase Uint8Array definido a continuación. |
Cadena numérica | CIM_STRING |
Identificador de objeto | CIM_STRING |
Cadena de octeto | Objeto incrustado de la clase Uint8Array definido a continuación. |
O nombre | CIM_STRING |
Presentation-Address | Objeto incrustado de la clase Uint8Array definido a continuación. |
Cadena de mayúsculas y minúsculas de impresión | CIM_STRING |
Vínculo de réplica | Objeto incrustado de la clase Uint8Array definido a continuación. |
String(Sid) | Objeto incrustado de la clase Uint8Array definido a continuación. |
Time | CIM_DATETIME |
Hora codificada UTC | CIM_DATETIME |
Cadena unicode | CIM_STRING |
La sintaxis de cadena de octeto, que hace referencia a una matriz de valores uint8, presenta un problema cuando se asigna a WMI porque este permite propiedades de tipos uint8 y matrices de uint8, mientras que Active Directory permite propiedades de tipo cadena de octeto, así como matrices de este tipo.
En el ejemplo siguiente se muestra la clase proveedor de servicios de directorio que se usa para asignar una matriz de propiedades de tipo cadena de octeto.
Class Uint8Array
{
uint8 values[];
uint32 numberOfValues;
};
WMI asigna todos los valores de propiedad de cadena de octeto de Active Directory a instancias incrustadas de Uint8Array. De forma similar, WMI asigna matrices de cadena de octeto a matrices de objetos Uint8Array incrustados.
En el ejemplo siguiente se muestran las clases asignadas por WMI a DN-Binary y valores de propiedad DN-String DS.
Class DN_With_String
{
string dnString;
string value;
};
Class DN_With_Binary
{
string dnString;
uint8 value[];
};
En la tabla siguiente se muestra cómo WMI asigna el resto de propiedades de la interfaz de atributo de Active Directory a calificadores de propiedades de WMI.
Nombre de la propiedad de atributo de Active Directory | Calificador de WMI | Tipo de datos | Información de asignación |
---|---|---|---|
Attribute-Syntax | AttributeSyntax | VT_BSTR | Asignado a partir de la representación de cadena del OID. |
Common-Name | CN | VT_BSTR | Asignado desde el valor de cadena. |
System-Only | Sistema | VT_BOOL | Asignado desde el valor booleano. |
Nota
WMI asigna todos los calificadores de Active Directory con los tipos de calificador WBEM_FLAVOR_FLAG_PROPAGATE_TO_INSTANCE | WBEM_FLAVOR_FLAG_PROPAGATE_TO_DERIVED_CLASS
.
Clases de asociación
El servicio de directorio es esencialmente un almacén jerárquico de objetos. Los objetos que pueden aparecer en un nivel que no es hoja en la jerarquía se denominan "contenedores". La estructura de esta jerarquía se controla aún más mediante las propiedades "Poss-Superiors" y "System-Poss-Superiors" de una clase del esquema. Estas, juntas, especifican el conjunto de clases cuyas instancias se pueden incluir dentro de una instancia de una clase de contenedor.
En el ejemplo siguiente se modela una asociación CIM como instancias de la clase de asociación estática 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;
};
El proveedor de clases de asociación admite los métodos GetObjectAsync y CreateClassEnumAsync.