Поделиться через


Синтаксис атрибута ADSI

Каждый атрибут в каталоге имеет связанный синтаксис. Например, целочисленное, строковое, числовое и т. д. ADSI определяет собственный синтаксис, который сопоставляется с синтаксисом собственного каталога. В этом разделе описываются типы синтаксисов атрибутов в ADSI.

Строка различающегося имени

Syntax Type: ADSTYPE_DN_STRING

Различающееся имя полезно для связывания двух объектов вместе. Например, он может создать ссылку, которая делает объект Алиса менеджером объекта Bob. Если объект Alice перемещается в другое место, связь диспетчера между Алиса и Бобом обновляется автоматически.

Различающееся имя должно содержать допустимый объект различающегося имени. Если различающееся имя не соответствует допустимому существующему объекту, большинство серверов отклоняют запрос и возвращают ошибку нарушения ограничения.

Примеры:

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

Строка точного регистра и без учета регистра

Syntax Types: ADSTYPE_CASE_IGNORE_STRING, ADSTYPE_CASE_EXACT_STRING.

Точные строки регистра — это строка с учетом регистра, а строка "Пропустить регистр" является нечувствительной строкой регистра. В каталоге используется большой процент атрибутов.

Примечание.

Каталог может или не может храниться в виде строки Юникода. Однако ADSI принимает и возвращает строки Юникода.

 

Пример:

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

Печатаемая строка

Syntax Type: ADSTYPE_PRINTABLE_STRING

Этот синтаксис используется для атрибутов со строковыми значениями, где верхний и нижний регистр считаются неравными для сравнения, например FABRIKAM и Fabrikam, не совпадают. ADSI принимает любое содержимое для объекта Printable-String; он не пытается убедиться, что они действительно печатаются.

Числовая строка

Syntax Type: ADSTYPE_NUMERIC_STRING

В этом синтаксисе строки совпадают как в строке для печати, за исключением того, что все символы пространства игнорируются в сравнениях. ADSI не выполняет проверка значений, чтобы гарантировать, что только числовые и пробелы отображаются в значениях этого синтаксиса. Active Directory принимает любое содержимое для числовой строки; Он не проверяет, являются ли символы числовыми.

Время в формате UTC

Syntax Type: ADSTYPE_UTC_TIME

Этот синтаксис сохраняет дату и время в одной строке. Формат строки состоит из трех объединенных частей: (1) YMMDD; (2) HHMM или HHMMSS (оба являются приемлемыми); и (3) "Z", чтобы указать, что заданное время — среднее время Гринвича (GMT) или "+/-HHMM", чтобы указать, что заданное время является локальным временем с заданным разностным значением от GMT. Разностное значение основано на формуле: GMT=Local+Differential.

Примечание.

Первые две цифры года не хранятся в этой строке.

 

Некоторые примеры юридических значений: "910131455Z", "9101314503Z", "910131455-0500", "910131145503+0130". Эта строка хранится как символы ASCII с одним байтом, и номер кодовой страницы с ним не хранится.

Несмотря на то, что порядок поддерживается, он выполняется только как нечувствительный к регистру тип строки ASCII, а не правильно интерпретируя смысл строк.

Принимается любое допустимое строковое значение. Попытка не предпринята, чтобы убедиться, что строка содержит допустимую строку времени.

Обобщенное время

Syntax Type: ADSTYPE_UTC_TIME

Если определен новый атрибут для хранения значений времени, следует использовать синтаксис GeneralizedTime. Синтаксис GeneralizedTime использует четыре символа для представления года вместо двух, как и в формате UTCTime.

Формат синтаксиса GeneralizedTime — YYYYMMDDDHHMMSS.0Z. Пример допустимого значения — "200109280600000.0Z". Значение "Z" указывает, что время не разностно. Active Directory сохраняет дату и время в качестве среднего времени Гринвича (GMT). Если разностное время не указано, GMT — это значение по умолчанию.

Если время указано в часовом поясе, отличном от GMT, разница между часовыми поясами и GMT добавляется к строке вместо "Z" в форме "YYYMMDDDHHMMSS.0[+/]HHMM". Пример допустимого значения — "200109280600000.0+0200".

Разностное значение основано на формуле: GMT=Local+Differential.

Логический

Syntax Type: ADSTYPE_BOOLEAN

Active Directory принимает только 32-разрядное значение для этого синтаксиса. Он обрабатывает ноль как FALSE и все ненулевое значение как TRUE.

Целое

Syntax Type: ADSTYPE_INTEGER

32-разрядное числовое значение со знаком.

Большое целое число

Syntax Type: ADSTYPE_LARGE_INTEGER

64-разрядное числовое значение со знаком. Большие целые числа фактически реализуются как COM-объекты в интерфейсе IADsLargeInteger . Методы HighPart и LowPart используются для доступа к двум 32-разрядным половинам большого целочисленного значения.

Пример:

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

Строка октета

Syntax Type: ADSTYPE_OCTET_STRING

Строка октета возвращается в виде массива вариантов байтов. Это состоит из количества размеров (число октетов), за которым следует ряд октетов. Октет является 8-разрядной байтой, поэтому ряд октетов является строкой двоичных данных.

Класс объектов

Syntax Type: ADSTYPE_CASE_IGNORE_STRING

Класс объекта — это уникальный идентификатор объекта для заданного класса схемы. Класс каждого экземпляра объекта определяется атрибутом objectClass . При создании нельзя изменять класс объектов. objectClass — это несколько атрибутов с значением. В нем перечислены определенные классы объекта, а также классы всех структурных или абстрактных классов, от которых был получен конкретный класс. К ним относится Top, класс, из которого все остальные классы в конечном итоге являются производными. Active Directory не перечисляет вспомогательные классы в атрибуте objectClass .

Дескриптор безопасности

Syntax Type: ADSTYPE_NT_SECURITY_DESCRIPTOR

Права доступа определяют, какие возможности имеет субъект безопасности при попытке выполнить операцию в объекте Active Directory. Дескриптор безопасности описывает сведения об управлении доступом, связанные с объектом.

Дескриптор безопасности хранится в качестве свойства объекта каталога в свойстве nTSecurityDescriptor . Когда пользователь, прошедший проверку подлинности, пытается получить доступ к объекту каталога, сервер каталогов определяет предоставленный или отклоненный пользователю доступ на основе дескриптора безопасности объекта.

Перечисление ADS_SD_CONTROL_ENUM указывает флаги управления для дескриптора безопасности.

В следующем примере кода показано, как получить дескриптор безопасности.

' 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

Синтаксисы атрибутов Active Directory

Выбор синтаксиса

Как указать значения для сравнения