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
Temas relacionados