Книга: C# для профессионалов. Том II

Известное имя

Известное имя

Четвертая часть, которую мы должны определить в пути доступа,— это известное имя (DN — Distinguished Name). Известное имя является гарантированным уникальным именем, идентифицирующим объект, к которому требуется доступ. В активном каталоге для определения имени объекта можно использовать синтаксис LDAP, который основывается на X.500.

Известное имя

CN=Christian Nagel, OU=Trainer, DC=GlobalKnowledge, DC=com

определяет общее имя (CN) Christian Nagel в организационной единице (OU) Trainer в компоненте домена (DC) GlobalKnowledge домена GlobalKnowledge.com. Часть, которая определена самой правой является корневым объектом домена. Имя должно следовать иерархии дерева объектов.

Спецификацию LDAP для строкового представления известных имен можно найти в RFC 2253: www.ietf.org/rfc/rfc2253.txt.

Относительное известное имя

Относительное известное имя (RDN) используется для ссылки на объект внутри контейнерного объекта. Для RDN спецификации OU и DC не требуются, будет достаточно общего имени. CN=Christian Nagel является относительным известным именем внутри организационной единицы. Относительное известное имя может использоваться, если мы уже имеем ссылку на объект контейнера и хотим получить доступ к объектам-потомкам.

Используемый по умолчанию именующий контекст

Если известное имя не определено в пути доступа, процесс связывания будет выполняться в используемом по умолчанию именующем контексте. Можно считать используемый по умолчанию именующий контекст с помощью rootDSE. LDAP 3.0 определяет rootDSE как корень дерева каталогов на сервере каталога.

LDAP://rootDSE или LDAP://servername/rootDSE

Перечисляя все свойства rootDSE, можно получить информацию о defaultNamingContext, который будет использоваться, когда не определено никакое имя. schemaNamingContext и configurationNamingContext определяют требуемые имена, которые будут использоваться для доступа к схеме и конфигурации в хранилище активного каталога.

Следующий код используется для получения всех свойств rootDSE. Речь идет о связывании с помощью класса DirectoryEntry:

using (DirectoryEntry de = new DirectoryEntry()) {
 de.Path = "LDAP://celtlcrain/rootDSE";
 de.Username = @"sentinelchris";
 de.Password = "mausemaus3";
 PropertyCollection props = de.Properties;
 foreach (string prop in props.PropertyNames) {
  PropertyValueCollection values = props[prop];
  foreach (string val in values) {
   Console.Write(prop + ": ");
   Console.WriteLine(val);.
  }
 }
}

Помимо других свойств результат вывода этой программы показывает defaultNamingContext DC=eichkogelstrasse, DC=local, контекст, который можно использовать для доступа к схеме: CN=Schema, CN=Configuration, DC=eichkogelstrasse, DC=local и именующий контекст конфигурации: CN=Configuration, DC=eichkogelstrasse, DC=local:


Идентификатор объекта

Каждый объект имеет уникальный идентификатор — GUID. GUID является уникальным 128-битовым числом. Мы можем с соединиться с объектом, используя GUID. Таким образом, мы всегда получаем тот же самый объект, даже если объект был перемещен в другой контейнер. GUID генерируется при создании объекта и всегда остается тем же самым.

Можно получить строковое представление GUID с помощью DirectoryEntry.NativeGuid. Затем это строковое представление можно использовать для соединения с объектом. Даже если объект перемещается в другой контейнер, мы всегда получаем тот же объект.

Следующий пример показывает имя пути доступа для связывания без сервера со специфическим объектом, представленным GUID:

LDAP://<GUID=14abbd652aae1a47abc60782dcfc78ea>

Имена объектов в доменах Windows NT

Провайдер WinNT не допускает синтаксис LDAP в части имени строки связывания. Для этого провайдера объект определяется с помощью ObjectName, ClassName. Действительные строки связывания для домена Windows NT имеют следующий вид:

WinNT:
WinNT://DomainName
WinNT://DomairName/UserName, user
WinNT://DomainName/dc01/MyGroup, group

Оглавление книги


Генерация: 2.710. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз