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
Argomenti correlati