Share via


Sintaxis de atributo ADSI

Cada atributo del directorio tiene una sintaxis asociada. Por ejemplo, entero, cadena, numérico, etc. ADSI define su propia sintaxis que se asigna a la sintaxis del directorio nativo. En esta sección se describen los tipos de sintaxis de atributo en ADSI.

Cadena de nombre distintivo

Syntax Type: ADSTYPE_DN_STRING

El nombre distintivo es útil para vincular dos objetos juntos. Por ejemplo, puede crear un vínculo que haga que el objeto Alice sea un administrador del objeto Bob. Si el objeto Alice se mueve a otro lugar, el vínculo de administrador entre Alice y Bob se actualiza automáticamente.

El nombre distintivo debe contener un objeto de nombre distintivo válido. Si el nombre distintivo no corresponde a un objeto existente válido, la mayoría de los servidores rechazan la solicitud y devuelven un error de infracción de restricción.

Ejemplos:

Set x = GetObject("LDAP://CN=Bob, OU=Sales,DC=Fabrikam, DC=com)
x.Put "manager", "CN=Alice, OU=Sales, DC=Fabrikam, DC=COM"
x.SetInfo
 
PADS_ATTR_INFO pInfo;
// .. IDirectoryObject::GetObjectAttribute
printf("%S\n", pInfo->pADsValues->DNString );

Mayúsculas y minúsculas exactas y mayúsculas de minúsculas omiten la cadena

Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.

Case Exact String es una cadena que distingue mayúsculas de minúsculas mientras que Case Ignore String es una cadena que no distingue mayúsculas de minúsculas. Un gran porcentaje de atributos en el directorio usan esta sintaxis.

Nota:

El directorio puede almacenarlo o no como una cadena Unicode. Sin embargo, ADSI acepta y devuelve cadenas Unicode.

 

Ejemplo:

Dim propList As IADsPropertyList
Set propList = GetObject("LDAP://DC=Fabrikam,DC=com")
Set propVal = New PropertyValue
 
' --- Property Value ---
propVal.CaseIgnoreString = "Fabrikam, Inc - Seattle, WA"
propVal.ADsType = ADSTYPE_CASE_IGNORE_STRING

Cadena imprimible

Syntax Type: ADSTYPE_PRINTABLE_STRING

Esta sintaxis se usa para atributos con valores de cadena en los que las mayúsculas y minúsculas se consideran desiguales para las comparaciones, por ejemplo, "FABRIKAM" y "Fabrikam" no coinciden. ADSI acepta cualquier contenido de una cadena imprimible; no intenta comprobar que realmente se pueden imprimir.

Cadena numérica

Syntax Type: ADSTYPE_NUMERIC_STRING

En esta sintaxis, las cadenas coinciden como en Cadena imprimible, salvo que todos los caracteres de espacio se omiten en las comparaciones. ADSI no realiza la comprobación de valores para asegurarse de que solo aparecen números y espacios en los valores de esta sintaxis. Active Directory acepta cualquier contenido para una cadena numérica; no comprueba que los caracteres sean numéricos.

Hora UTC

Syntax Type: ADSTYPE_UTC_TIME

Esta sintaxis almacena la fecha y la hora en una sola cadena. El formato de cadena consta de tres partes concatenadas: (1) AAAMMDD; (2) HHMM o HHMMSS (ambos son aceptables); y (3) "Z" para indicar que la hora especificada es la hora de Greenwich (GMT) o "+/-HHMM" para indicar que la hora dada es la hora local con la diferencia dada de GMT. El diferencial se basa en la fórmula: GMT=Local+diferencial.

Nota

Los dos primeros dígitos del año no se almacenan en esta cadena.

 

Algunos ejemplos de valores legales son "9101311455Z", "910131145503Z", "9101314455-0500", "910131145503+0130". Esta cadena se almacena como caracteres ASCII de un solo byte y no se almacena ningún número de página de códigos con ella.

Aunque se admite la ordenación, solo se realiza como una ordenación de cadena sin distinción entre mayúsculas y minúsculas ASCII, no interpretando correctamente el significado de las cadenas.

Se acepta cualquier valor de cadena válido. No se intenta asegurarse de que la cadena contiene una cadena de tiempo válida.

Tiempo generalizado

Syntax Type: ADSTYPE_UTC_TIME

Si se define un nuevo atributo para almacenar valores de hora, se debe usar la sintaxis GeneralizedTime. La sintaxis de GeneralizedTime usa cuatro caracteres para representar el año en lugar de dos como con UTCTime.

El formato de la sintaxis GeneralizedTime es "AAAAMMDDHHMMSS.0Z". Un ejemplo de un valor aceptable es "20010928060000.0Z". La "Z" indica que no hay ningún diferencial de tiempo. Active Directory almacena la fecha y hora como hora media de Greenwich (GMT). Si no se especifica ningún diferencial de tiempo, GMT es el valor predeterminado.

Si la hora se especifica en una zona horaria distinta de GMT, la diferencia entre la zona horaria y GMT se anexa a la cadena en lugar de "Z" con el formato "AAAAMMDDHHMMSS.0[+/-]HHMM". Un ejemplo de un valor aceptable es "20010928060000.0+0200".

El diferencial se basa en la fórmula: GMT=Local+diferencial.

Boolean

Syntax Type: ADSTYPE_BOOLEAN

Active Directory acepta solo un valor de 32 bits firmado para esta sintaxis. Controla cero como FALSE y todos los valores distintos de cero como TRUE.

Entero

Syntax Type: ADSTYPE_INTEGER

Valor numérico con signo de 32 bits.

Entero grande

Syntax Type: ADSTYPE_LARGE_INTEGER

Valor numérico con signo de 64 bits. Los enteros grandes se implementan realmente como objetos COM en la interfaz IADsLargeInteger . Los métodos HighPart y LowPart se usan para tener acceso a las dos mitades de 32 bits del valor entero grande.

Ejemplo:

Dim x as IADsLargeInteger
Set o = GetObject("LDAP://DC=Fabrikam,DC=com")
Set x = o.Get("UsnCreated")
Debug.Print x.HighPart
Debug.Print x.LowPart

Cadena de octeto

Syntax Type: ADSTYPE_OCTET_STRING

Se devuelve una cadena de octetos como una matriz variant de bytes. Esto consta de un recuento de tamaños (número de octetos) seguido de una serie de octetos. Un octeto es un byte de 8 bits, por lo que una serie de octetos es una cadena de datos binarios.

Clase de objeto

Syntax Type: ADSTYPE_CASE_IGNORE_STRING

Object Class es un identificador de objeto único para una clase de esquema determinada. La clase de cada instancia de objeto se identifica mediante el atributo objectClass . Cuando se crea, nunca se puede cambiar una clase de objeto. objectClass es un atributo con varios valores. Enumera la clase específica del objeto y las clases de todas las clases estructurales o abstractas de las que se deriva la clase específica. Esto incluye Top, la clase de la que se derivan en última instancia todas las demás clases. Active Directory no enumera las clases auxiliares en el atributo objectClass .

Descriptor de seguridad

Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR

Los derechos de acceso definen qué capacidades tiene una entidad de seguridad cuando intenta realizar una operación en un objeto de Active Directory. Un descriptor de seguridad describe la información de control de acceso asociada a un objeto .

El descriptor de seguridad se almacena como una propiedad de un objeto de directorio en la propiedad nTSecurityDescriptor . Cuando un usuario autenticado intenta acceder a un objeto de directorio, el servidor de directorios determina el acceso concedido o denegado al usuario en función del descriptor de seguridad de objetos.

La enumeración ADS_SD_CONTROL_ENUM especifica marcas de control para un descriptor de seguridad.

En el ejemplo de código siguiente se muestra cómo obtener un descriptor de seguridad.

' Obtain a security descriptor.
Dim x as IADs
Dim sd as IADsSecurityDescriptor
Dim acl as IADsAccessControlList
 
Set x = GetObject("LDAP://DC=Fabrikam, DC=com")
Set sd = x.Get("nTSecurityDescriptor")
 
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
 
Set acl = sd.DiscretionaryAcl
Set sacl = sd.SystemAcl

Sintaxis para atributos de Active Directory

Elección de una sintaxis

Cómo especificar valores de comparación