Помимо других свойств результат вывода этой программы показывает 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

Имя пользователя

Если другой пользователь, отличный от зарегистрированного, должен использоваться для доступа к каталогу, так как зарегистрированный пользователь не имеет требуемых полномочий для доступа к активному каталогу, то должны определяться явные полномочия пользователя для процесса связывания. Для активного каталога имеется ряд способов задания имени пользователя.

Низкоуровневая регистрация

Для низкоуровневой регистрации имя пользователя можно определить с помощью имени домена:

domainusername

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

Пользователя можно определить также с помощью известного имени объекта пользователя, например:

CN=Administrator, CN=Users, DC=eichkogelstrasse, DC=local

Имя пользователя принципала (UPN)

UPN объекта определяется с помощью атрибута userPrincipalName. Системный администратор определяет его по информации регистрации на вкладке Account свойств User с помощью утилиты Active Directory Users and Computers. UPN не является адресом e- mail пользователя

Эта информация также уникальным образом определяет пользователя и может использоваться для регистрации:

[email protected]

Аутентификация

Для безопасной зашифрованной аутентификации можно также определить тип аутентификации. Аутентификация может задаваться с помощью свойства AuthenticationType класса DirectoryEntry. При этом присваиваемое значение является одним из перечислений AuthenticationTypes.

Связывание с помощью класса DirectoryEntry

Класс System.DirectoryServices.DirectoryEntry используется для определения всех связываемых данных. Можно использовать конструктор по умолчанию и определить данные связывания со свойствами Path, Username, Password и AuthenticationType или передать всю информацию в конструктор:

using (DirectoryEntry de = new DirectoryEntry()) {

 de.Path = 'LDAP://celticrain/DC=eichkogelstrasse, DC=local';

 de.Username = '[email protected]';

 de.Password = 'someSecret';

 // использовать полномочия текущего пользователя

 DirectoryEntry de2 = new DirectoryEntry('LDAP://DC=eichkogelstrasse, DC=local');

Даже если создание объекта DirectoryEntry пройдет успешно, это не означает, что и связывание было успешным. Связывание произойдет, когда в первый раз будет прочитано свойство во избежание ненужного сетевого трафика. Существует ли объект или правильны ли полномочия определенного пользователя, можно будет увидеть при первом доступе к объекту.

Получение записей каталога

Теперь, когда мы знаем, как определить атрибута связывания с объектом в активном каталоге, давайте прочитаем атрибуты объекта.

Свойства объектов пользователей

Класс DirectoryEntry имеет некие свойства Name, Guid и SchemaClassName для получения информации об объекте. Первый раз при доступе к свойству объекта DirectoryEntry происходит связывание и заполняется кэш. Когда мы обращаемся к другому свойству, мы считываем его из кэша, и коммуникации с сервером не требуется для данных из того же объекта.

В следующем примере мы обращаемся к объекту пользователя с общим именем Christian Nagel в организационной единице Wrox Press.

DirectoryEntry de = new DirectoryEntry();

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату