Syntaxe de l’attribut ADSI
Chaque attribut du répertoire a une syntaxe associée. Par exemple, entier, chaîne, numérique, etc. ADSI définit sa propre syntaxe qui correspond à la syntaxe du répertoire natif. Cette section décrit les types de syntaxes d’attribut dans ADSI.
Chaîne de nom unique
Syntax Type: ADSTYPE_DN_STRING
Le nom unique est utile pour lier deux objets ensemble. Par exemple, il peut créer un lien qui fait de l’objet Alice un gestionnaire de l’objet Bob. Si l’objet Alice se déplace vers un autre emplacement, le lien de gestionnaire entre Alice et Bob est automatiquement mis à jour.
Le nom unique doit contenir un objet de nom unique valide. Si le nom unique ne correspond pas à un objet existant valide, la plupart des serveurs rejettent la demande et retournent une erreur de violation de contrainte.
Exemples :
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 );
Chaîne exacte à la casse et chaîne d’ignorer la casse
Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.
La chaîne exacte de la casse est une chaîne qui respecte la casse, tandis que la chaîne d’ignorer la casse est une chaîne qui ne respecte pas la casse. Un grand pourcentage d’attributs dans le répertoire utilisent cette syntaxe.
Notes
Le répertoire peut stocker ou non cette valeur sous forme de chaîne Unicode. Toutefois, ADSI accepte et retourne des chaînes Unicode.
Exemple :
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
Chaîne imprimable
Syntax Type: ADSTYPE_PRINTABLE_STRING
Cette syntaxe est utilisée pour les attributs avec des valeurs de chaîne où les majuscules et les minuscules sont considérés comme inégaux pour les comparaisons, par exemple, « FABRIKAM » et « Fabrikam » ne correspondent pas. ADSI accepte tout contenu d’une chaîne imprimable ; il ne tente pas de vérifier qu’ils sont bien imprimables.
Chaîne numérique
Syntax Type: ADSTYPE_NUMERIC_STRING
Dans cette syntaxe, les chaînes correspondent à celles de La chaîne imprimable, sauf que tous les caractères d’espace sont ignorés dans les comparaisons. ADSI n’effectue pas de vérification des valeurs pour s’assurer que seuls les chiffres et les espaces apparaissent dans les valeurs de cette syntaxe. Active Directory accepte n’importe quel contenu pour une chaîne numérique ; il ne vérifie pas que les caractères sont numériques.
Heure UTC
Syntax Type: ADSTYPE_UTC_TIME
Cette syntaxe stocke la date et l’heure dans une chaîne unique. Le format de chaîne se compose de trois parties concaténées : (1) AAAAMMJJ ; (2) HHMM ou HHMMSS (les deux sont acceptables); et (3) « Z » pour indiquer que l’heure donnée est l’heure moyenne de Greenwich (GMT), ou « +/-HHMM » pour indiquer que l’heure donnée est l’heure locale avec le différentiel donné par rapport à GMT. Le différentiel est basé sur la formule : GMT=Local+différentiel.
Notes
Les deux premiers chiffres de l’année ne sont pas stockés dans cette chaîne.
Voici quelques exemples de valeurs légales : « 9101311455Z », « 910131145503Z », « 9101314455-0500 », « 910131145503+0130 ». Cette chaîne est stockée sous forme de caractères ASCII sur un octet et aucun numéro de page de code n’est stocké avec elle.
Bien que le classement soit pris en charge, il s’effectue uniquement en tant que tri de chaîne ne respectant pas la casse ASCII, et non en interprétant correctement la signification des chaînes.
Toute valeur de chaîne valide est acceptée. Aucune tentative n’est effectuée pour s’assurer que la chaîne contient une chaîne de temps valide.
Heure généralisée
Syntax Type: ADSTYPE_UTC_TIME
Si un nouvel attribut pour stocker des valeurs d’heure est en cours de définition, la syntaxe GeneralizedTime doit être utilisée. La syntaxe GeneralizedTime utilise quatre caractères pour représenter l’année au lieu de deux comme avec UTCTime.
Le format de la syntaxe GeneralizedTime est « AAAAMMDDHHMMSS.0Z ». Un exemple de valeur acceptable est « 20010928060000.0Z ». Le « Z » indique qu’il n’y a pas de différentiel de temps. Active Directory stocke la date/heure en tant qu’heure moyenne de Greenwich (GMT). Si aucun différentiel d’heure n’est spécifié, GMT est la valeur par défaut.
Si l’heure est spécifiée dans un fuseau horaire autre que GMT, le différentiel entre le fuseau horaire et GMT est ajouté à la chaîne au lieu de « Z » sous la forme « AAAAMMDDHHMMSS.0[+/-]HHMM ». Un exemple de valeur acceptable est « 20010928060000.0+0200 ».
Le différentiel est basé sur la formule : GMT=Local+différentiel.
Boolean
Syntax Type: ADSTYPE_BOOLEAN
Active Directory accepte uniquement une valeur 32 bits signée pour cette syntaxe. Il gère zéro comme FALSE et toutes les valeurs non nulles comme TRUE.
Integer
Syntax Type: ADSTYPE_INTEGER
Valeur numérique signée 32 bits.
Entier volumineux
Syntax Type: ADSTYPE_LARGE_INTEGER
Valeur numérique signée 64 bits. Les entiers volumineux sont en fait implémentés en tant qu’objets COM sur l’interface IADsLargeInteger . Les méthodes HighPart et LowPart sont utilisées pour accéder aux deux moitiés 32 bits de la grande valeur entière.
Exemple :
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
Chaîne d’octets
Syntax Type: ADSTYPE_OCTET_STRING
Une chaîne d’octets est retournée sous la forme d’un tableau variant d’octets. Il se compose d’un nombre de tailles (nombre d’octets) suivi d’une série d’octets. Un octet étant un octet 8 bits, une série d’octets est une chaîne de données binaires.
Classe d’objet
Syntax Type: ADSTYPE_CASE_IGNORE_STRING
Object Class est un identificateur d’objet unique pour une classe de schéma donnée. La classe de chaque objet instance est identifiée par l’attribut objectClass. Une fois créé, vous ne pouvez jamais modifier une classe d’objet. objectClass est un attribut à valeurs multiples. Il répertorie la classe spécifique de l’objet et les classes de toutes les classes structurelles ou abstraites dont la classe spécifique a été dérivée. Cela inclut Top, la classe à partir de laquelle toutes les autres classes sont finalement dérivées. Active Directory ne répertorie pas les classes auxiliaires dans l’attribut objectClass .
Descripteur de sécurité
Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR
Les droits d’accès définissent les capacités d’un principal de sécurité lorsqu’il tente d’effectuer une opération sur un objet Active Directory. Un descripteur de sécurité décrit les informations de contrôle d’accès associées à un objet.
Le descripteur de sécurité est stocké en tant que propriété d’un objet répertoire dans la propriété nTSecurityDescriptor . Lorsqu’un utilisateur authentifié tente d’accéder à un objet d’annuaire, le serveur d’annuaire détermine l’accès accordé ou refusé à l’utilisateur en fonction du descripteur de sécurité de l’objet.
L’énumération ADS_SD_CONTROL_ENUM spécifie des indicateurs de contrôle pour un descripteur de sécurité.
L’exemple de code suivant montre comment obtenir un descripteur de sécurité.
' 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
Rubriques connexes