Share via


Sintassi degli attributi ADSI

Ogni attributo nella directory ha una sintassi associata. Ad esempio, integer, stringa, numerica e così via. ADSI definisce la propria sintassi che esegue il mapping alla sintassi della directory nativa. Questa sezione descrive i tipi di sintassi degli attributi in ADSI.

Stringa di nome distinto

Syntax Type: ADSTYPE_DN_STRING

Il nome distinto è utile per collegare due oggetti tra loro. Ad esempio, può creare un collegamento che rende l'oggetto Alice un gestore dell'oggetto Bob. Se l'oggetto Alice si sposta in una posizione diversa, il collegamento di gestione tra Alice e Bob viene aggiornato automaticamente.

Il nome distinto deve contenere un oggetto nome distinto valido. Se il nome distinto non corrisponde a un oggetto esistente valido, la maggior parte dei server rifiuta la richiesta e restituisce un errore di violazione del vincolo.

Esempi:

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 );

Case Exact String e Case Ignore String

Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.

La stringa esatta maiuscole e minuscole è una stringa con distinzione tra maiuscole e minuscole, mentre la stringa senza distinzione tra maiuscole e minuscole è una stringa senza distinzione tra maiuscole e minuscole. Una percentuale elevata di attributi nella directory usa questa sintassi.

Nota

La directory può o non archiviare questa stringa come stringa Unicode. Tuttavia, ADSI accetta e restituisce stringhe Unicode.

 

Esempio:

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

Stringa stampabile

Syntax Type: ADSTYPE_PRINTABLE_STRING

Questa sintassi viene usata per gli attributi con valori stringa in cui i caratteri maiuscoli e minuscoli sono considerati diversi per i confronti, ad esempio "FABRIKAM" e "Fabrikam" non corrispondono. ADSI accetta qualsiasi contenuto per una stringa stampabile; non tenta di verificare che siano effettivamente stampabili.

Stringa numerica

Syntax Type: ADSTYPE_NUMERIC_STRING

In questa sintassi le stringhe corrispondono come in String stampabile, ad eccezione del fatto che tutti gli spazi vengono ignorati nei confronti. ADSI non esegue il controllo dei valori per assicurarsi che solo i numeri e gli spazi vengano visualizzati nei valori di questa sintassi. Active Directory accetta qualsiasi contenuto per una stringa numerica; non verifica che i caratteri siano numerici.

Ora UTC

Syntax Type: ADSTYPE_UTC_TIME

Questa sintassi archivia la data e l'ora in una singola stringa. Il formato stringa è costituito da tre parti concatenate: (1) YYMMDD; (2) HHMM o HHMMSS (entrambi sono accettabili); e (3) "Z" per indicare che l'ora specificata è Greenwich Mean Time (GMT) o "+/-HHMM" per indicare che l'ora specificata è l'ora locale con il differenziale specificato da GMT. Il differenziale si basa sulla formula: GMT=Local+differenziale.

Nota

Le prime due cifre dell'anno non vengono archiviate in questa stringa.

 

Alcuni esempi di valori legali sono "910131455Z", "910131145503Z", "9101314455-0500", "910131145503+0130". Questa stringa viene archiviata come caratteri ASCII a byte singolo e non viene archiviato alcun numero di tabella codici.

Anche se l'ordinamento è supportato, viene eseguito solo come ordinamento di stringhe senza distinzione tra maiuscole e minuscole ASCII, non interpretando correttamente il significato delle stringhe.

Qualsiasi valore stringa valido viene accettato. Non viene effettuato alcun tentativo per assicurarsi che la stringa contenga una stringa di ora valida.

Tempo generalizzato

Syntax Type: ADSTYPE_UTC_TIME

Se viene definito un nuovo attributo per archiviare i valori di ora, è necessario usare la sintassi GeneralizedTime. La sintassi GeneralizedTime usa quattro caratteri per rappresentare l'anno anziché due come con UTCTime.

Il formato per la sintassi GeneralizedTime è "AAAAAMMGGHHMMSS.0Z". Un esempio di valore accettabile è "20010928060000.0Z". "Z" indica che non esiste un differenziale temporale. Active Directory archivia data/ora come Ora di Greenwich (GMT). Se non viene specificato alcun differenziale temporale, GMT è il valore predefinito.

Se l'ora viene specificata in un fuso orario diverso da GMT, il differenziale tra il fuso orario e GMT viene aggiunto alla stringa anziché "Z" nel formato "AAAAMMGGHHMMSS.0[+/-]HHMM". Un esempio di valore accettabile è "20010928060000.0+0200".

Il differenziale si basa sulla formula: GMT=Local+differenziale.

Booleano

Syntax Type: ADSTYPE_BOOLEAN

Active Directory accetta solo un valore a 32 bit firmato per questa sintassi. Gestisce zero come FAL edizione Standard e tutti i valori diversi da zero come TRUE.

Intero

Syntax Type: ADSTYPE_INTEGER

Valore numerico con segno a 32 bit.

Intero grande

Syntax Type: ADSTYPE_LARGE_INTEGER

Valore numerico con segno a 64 bit. I numeri interi di grandi dimensioni vengono effettivamente implementati come oggetti COM nell'interfaccia IADsLargeInteger . I metodi HighPart e LowPart vengono usati per accedere alle due metà a 32 bit del valore intero di grandi dimensioni.

Esempio:

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

Octet String

Syntax Type: ADSTYPE_OCTET_STRING

Una stringa ottetto viene restituita come matrice variant di byte. Questo è costituito da un conteggio delle dimensioni (numero di ottetti) seguito da una serie di ottetti. Un ottetto è un byte a 8 bit, quindi una serie di ottetti è una stringa di dati binari.

Classe Object

Syntax Type: ADSTYPE_CASE_IGNORE_STRING

Object Class è un identificatore di oggetto univoco per una determinata classe dello schema. La classe di ogni istanza dell'oggetto è identificata dall'attributo objectClass . Al momento della creazione, non è mai possibile modificare una classe oggetto. objectClass è un attributo con più valori. Elenca la classe specifica dell'oggetto e le classi di tutte le classi strutturali o astratte da cui è stata derivata la classe specifica. Ciò include Top, la classe da cui derivano tutte le altre classi. Active Directory non elenca le classi ausiliarie nell'attributo objectClass .

Descrittore di sicurezza

Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR

I diritti di accesso definiscono le capacità di un'entità di sicurezza quando tenta di eseguire un'operazione su un oggetto Active Directory. Un descrittore di sicurezza descrive le informazioni sul controllo di accesso associate a un oggetto .

Il descrittore di sicurezza viene archiviato come proprietà di un oggetto directory nella proprietà nTSecurityDescriptor . Quando un utente autenticato tenta di accedere a un oggetto directory, il server di directory determina l'accesso concesso o negato all'utente in base al descrittore di sicurezza degli oggetti.

L'enumerazione ADS_SD_CONTROL_ENUM specifica i flag di controllo per un descrittore di sicurezza.

Nell'esempio di codice seguente viene illustrato come ottenere un descrittore di sicurezza.

' 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

Sintassi per gli attributi di Active Directory

Scelta di una sintassi

Come specificare i valori di confronto