При добавлении атрибута необходимо ввести название нового атрибута, OID X.500, выбрать синтаксис или тип атрибута, задать интервал возможных значений и указать – является ли атрибут набором (списком) значений. Создать атрибут, как и класс, можно с помощью предусмотренного мастера создания нового атрибута в утилите “ADAM Schema”.
Рисунок 4. Диалоговое окно создания нового класса.
Управление пользователями и группами пользователей
Чтобы иметь возможность создавать учетные записи собственных пользователей ADAM, необходимо либо на этапе установки, либо позже с помощью утилиты Ldifde.exe, импортировать класс User, который определен в LDF-скрипте MS-User.LDF.
Для создания пользователя достаточно в “ADAM ADSI Edit” добавить новый объект класса User. После того, как новый пользователь добавлен, необходимо задать для него пароль. Утилита “ADAM ADSI Edit” позволяет сделать это из контекстного меню пользователя (пункт “Reset Password”). Поведение объекта класса User настраивается с помощью набора атрибутов. Некоторые из них:
msDS-UserAccountDisabled – если TRUE, учетная запись пользователя не активирована. Сразу после создания значение этого атрибута устанавливается в TRUE. Соответственно, для активации учетной записи нового пользователя необходимо вручную изменить значение на FALSE.
msDS-UserDontExpirePassword – если TRUE, указывает системе, что пароль данного пользователя имеет неограниченный срок действия.
msDS-UserPasswordExpired – значение TRUE данного атрибута говорит о том, что время действия текущего пароля закончилось, и требуется его смена.
Для управления правами доступа удобнее всего назначать права не напрямую пользователям, а группам пользователей. Такой алгоритм обеспечивает наиболее гибкое администрирование доступа к объектам службы каталогов. Здесь группы выступают в качестве ролей, которые определяют доступ к тем или иным частям дерева каталогов. Соответственно пользователь наследует права доступа у группы или нескольких групп, членом которых он является.
Чтобы создать группу пользователей, создается новый объект класса group. При создании надо не забыть установить значение атрибута groupType равным 2147483650 (0x80000002 в шестнадцатеричном представлении). Это значение указывает, что созданная группа является группой пользователей. За связывание пользователей с группой отвечает атрибут member класса group. “ADAM ADSI Edit” позволяет добавлять в группу как доменных пользователей, так и собственных пользователей ADAM.
Авторизация и управление правами доступа. Утилита DSACLS.EXE
Авторизация – это процесс определения, прав пользователя на доступ к объекту службы каталогов. Определение прав осуществляется на основе так называемых списков контроля доступа – Access Control List (ACLs). Утилита командной строки DSACLS.EXE позволяет просматривать и изменять права доступа пользователей и групп пользователей.
Полный список команд и ключей этой утилиты можно получить, запустив ее с ключом /?. Приведу два наиболее типичных случая применения.
Просмотр списка контроля доступа к объекту с полным именем ‘CN=MyObject1,OU=MyApp,O=MyCompany,C=RU’:
dsacls.exe "\localhost:389\ CN= MyObject1,OU=MyApp,O=MyCompany,C=RU" |
Установкаправначтениеобъекта ‘CN= MyObject1,OU=MyApp,O=MyCompany,C=RU’ иобъектовегоподдеревагруппепользователей ‘CN=USER_GROUP,OU=MyApp,O=MyCompany,C=RU’:
dsacls.exe "\localhost:389\ CN= MyObject1,OU=MyApp,O=MyCompany,C=RU" /I:T /G "CN=USER_GROUP,OU=MyApp,O=MyCompany,C=RU":GR |
Способы идентификации пользователей.
Подсоединиться к ADAM можно тремя разными способами: как пользователь Windows, как пользователь ADAM (класс User) или с помощью объекта класса UserProxy.
Во время установки ADAM запрашивает имя пользователя, который в дальнейшем будет администратором ADAM. По умолчанию это пользователь, устанавливающий ADAM. Все администраторы ADAM входят в группу пользователей Administrators, расположенную в разделе конфигурации; полное имя этой группы – CN=Administrators, CN=Roles, CN=Configuration, CN={идентификатор раздела конфигурации}. Таким образом, вы можете назначить свою учетную запись Windows администратором ADAM и подключаться в дальнейшем к ADAM как пользователь Windows. Точно так же можно создать свою группу в разделе приложения и добавить пользователей Windows в эту группу.
Если вы создали пользователя ADAM и назначили ему права доступа к объектам раздела приложения, вы можете подключаться к ADAM-у от имени этого пользователя. Именем пользователя в этом случае будет полное имя (Distinguished Name) пользователя.
Кроме описанных выше двух способов, ADAM позволяет подключаться, используя так называемое перенаправление подключения, которое реализуется классом UserProxy. Объект класса UserProxy хранит в себе ссылку на пользователя Windows в AD. Такой режим может быть удобен, когда приложению необходима дополнительная информация (та, которой нет в Active Directory), связанная с пользователем Windows.
Пакетная обработка. Утилита LDIFDE.EXE
Все вышеописанные инструменты обеспечивают достаточно средств для администрирования ADAM. Однако все изменения, такие как добавление новых классов, объектов и пользователей, должны выполняться вручную. Это не очень удобно, особенно если есть необходимость повторять точно те же действия на другом сервере. Типичный пример – разработка ведется на компьютере разработчика, тестирование на специальном сервере тестирования, а работает приложение на рабочем сервере. В этом случае было бы удобно иметь возможность выполнять все изменения в пакетном режиме. Такую возможность предоставляет утилита LDIFDE.EXE, которая позволяет экспортировать данные из ADAM в LDF-скрипты и импортировать LDF-скрипты в ADAM. Рассмотрим типичные случаи применения этой утилиты, возникающие при разработке программного обеспечения.
Экспорт всего поддерева CN=Personnel,OU=MyApp,O=MyCompany,C=RU в виде, удобном для дальнейшего импорта на другой сервер:
C:\WINDOWS\ADAM\ldifde.exe -f data.ldf -s localhost:389 -d " CN=Personnel,OU=MyApp,O=MyCompany,C=RU " -j . -p subtree -o "cn,distinguishedName,instanceType,whenCreated,whenChanged,uSNCreated,uSNChanged,objectGUID,objectCategory,dSCorePropagationData" |
Импорт данных в ADAM:
ldifde -i -f data.ldf -s localhost:389 -j . –k |
Примеры команд LDF-скриптов.
Добавление группы пользователей:
dn: CN=USER_GROUP, OU=MyApp,O=MyCompany,C=RU changetype: addobjectClass: topobjectClass: groupcn: AdministratorsinstanceType: 4groupType: 2147483650 |
Удаление объекта:
dn: CN=USER_GROUP, OU=MyApp,O=MyCompany,C=RU changetype: remove |
Изменение объекта:
dn: CN=Object1, OU=MyApp,O=MyCompany,C=RU changetype: modifyreplace:ColorColor: RED- |
Переименование объекта:
dn: CN=Object1, OU=MyApp,O=MyCompany,C=RU changetype: modrdnnewrdn: CN=RenamedObject1deleteoldrdn: 1 |
Для расширения схемы ADAM-а нужно использовать командную строку с указанием пространства имен схемы:
C:\WINDOWS\ADAM\LDIFDE.EXE -i -f SchemaExt.ldf -s localhost:389 -j . -c "CN=Schema,CN=Configuration,DC=X" #schemaNamingContext -k | ||
ПРЕДУПРЕЖДЕНИЕЗаметьте, что если для обновления данных раздела, можно использовать утилиту LDIFDE.EXE, идущую в поставке WINDOWS, то при изменении схемы ADAM необходимо использовать утилиту, установленную вместе с ADAM, иначе команда вернет ошибку. |
Содержимое файла SchemaExt.ldf, используемого в примере:
#Добавление в схему нового атрибута:dn: CN=MyAttribute1,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: attributeSchemaattributeID: 1.3.444.656565.1.1attributeSyntax: 2.5.5.12isSingleValued: TRUEshowInAdvancedViewOnly: TRUEadminDisplayName: MyAttribute1oMSyntax: 64lDAPDisplayName: MyAttribute1#Добавлениевсхемуновогокласса:dn: CN=MyClass1,CN=Schema,CN=Configuration,DC=Xchangetype: ntdsschemaaddobjectClass: topobjectClass: classSchemapossSuperiors: containersubClassOf: topgovernsID: 1.3.444.656565.2.1mayContain: MyAttribute1showInAdvancedViewOnly: TRUEadminDisplayName: MyClass1adminDescription: New classlDAPDisplayName: MyClass1dn:changetype: modifyadd: schemaUpdateNowschemaUpdateNow: 1- |
В этом примере первая команда создает новый атрибут MyAttribute1, а вторая – новый класс MyClass1, использующий этот атрибут. Последняя команда фиксирует изменения в схеме. Такая команда должна вызываться каждый раз после создания нового класса.
Способы взаимодействия приложения с ADAM
Для работы с ADAM используются те же средства, что и для работы с AD. Это – Active Directory Services Interfaces (ADSI), Lightweight Directory Access Protocol (LDAP), пространство имен System.DirectoryServices Microsoft .NET Framework, а также провайдер доступа к данным OLEDB ADsDSOObject.
ADSI предоставляет набор COM-интерфейсов для работы с ADAM и обеспечивает наиболее широкий набор инструментов.
LDAP – “облегченный” протокол доступа, позволяющий изменять содержимое службы каталогов и выполнять поиск по дереву объектов. LDAP может быть использован в приложениях, для которых работа с ADAM-ом не является основной функциональностью.
Пространство имен System.DirectoryServices (SDS) разработано на базе ADSI и предоставляет возможности, схожие с теми, что предоставляет протокол LDAP. SDS можно использовать в приложениях на базе технологии Microsoft.NET.
Провайдер доступа к данным ADsDSOObject предоставляет SQL-подобный интерфейс чтения, изменения и поиска данных в AD. Из всех описанных средств это обладает самой низкой производительностью, но оно может быть использовано в приложениях, выполняющих поиск в ADAM, если скорость работы не является критичной.