Далее нам необходимо сконфигурировать конектор для Novell Netware.
Конфигурирация коннектора для Novell Netware с именем «Novell»
Выбираем Management Agents: Create
В поле Management Agent for: выбираем Novell eDirectory
В поле Name указываем: Novell Connector
Нажмите Next.
Рисунок 15 Конфигурирование коннектора для Novell Netware
Задаем параметры подключения к LDAP интерфейсу, имя или IP адрес сервера, порт, DN пользователя с правами на чтение/запись соответствующий разделов каталога и пароль.
Server:192.168.13.148
Port:389
User name: cn=admin,o=org01
Password: пароль для учетной записи admin
Рисунок 16 Настройка параметров подключения к LDAP интерфейсу
Далее выбираем контейнер, с которым будет проводиться тестирование – отмечаем чекбокс на ou=Users,o=org01.
Рисунок 17 Выбор контейнеров
Выбираем объекты для работы, кроме обязательных добавляется inetOrgPerson.
Нажмите Next.
Рисунок 18 Выбор списка атрибутов для работы
Отмечаем чекбоксами список необходимых атрибутов для работы
1) cn;
2) displayName;
3) facsimileTelephoneNumber;
4) fullName;
5) givenName;
6) initials;
7) Language;
8) Mail;
9) passwordAllowChange;
10) sn;
11) telephoneNumber;
12) uid;
13) userPassword;
Нажмите Next.
Рисунок 19 Выбор объектов для работы
Фильтры соединителей не используются.
Нажмите Next.
Рисунок 20 Настройка фильтров соединителей
Далее настраиваем проецирование объектов, они объединяются по атрибуту uid, и проецируются следующим образом — inetOrgPerson в person. (Рис. 22)
Выбираем New Join Rule в поле Data source attribute: отметьте inetOrgPerson
В поле Metaverse attribute: uid
Нажмите: Add condition
Нажмите Ок.
Далее нажмите кнопку New Projection Rule
Нажмите Ок.
Рисунок 21 Настройка проецирования объектов
Нажмите Next.
Рисунок 22 Объединение объектов по атрибуту
Далее конфигурируем поток атрибутов для операции экспорта. Настройте потоки операций экспорта согласно Рис 23.
Нажмите Next.
Рисунок 23 Конфигурация экспорта атрибутов
Здесь используются константы для атрибутов Language и passwordAllowChange с присвоенными им значениями ENGLISH и TRUE. Это вырожденный случай, для реальных задание этих значений может быть возложено на обработчики процедур экспорта.
На данном этапе выяснилось, что атрибут userPassword недоступен ни для экспорта, ни для импорта, задание констант для него также не применимо. Таким образом, для данного атрибута доступно задание только через процедуры обработчики правил управления (provisioning rules), либо правила экспорта (export rules).
Нажмите Next.
Вкладка Deprovisioning остается без изменений.
Нажмите Next.
Вкладка Extensions остается без изменений, поскольку выбрано задание параметров коннектора в правилах управления metaverse. Если задавать параметры атрибутов в правилах экспорта, то здесь необходимо указать имя dll модуля с процедурами обработчиками.
Конфигурируются правила управления (metaverse extension).
Рисунок 24 Конфигурирование правил управления
Создаем проект «Create Rules Extension Project» и отмечаем чекбокс Enable metaverse rules extension и Enable Provisioning Rules Extension.
Далее открываем Visual Studio и в окне Visual Studio собираем проект и указываем имя dll библиотеки в поле Rules extension name.
Создайте проект на языке C#. Есть возможность создания проекта на Visual Basic. Visual Studio может быть установлен и на другом компьютере, но тогда отсутствует возможность интеграции с ILM.
Требуется закомментировать следующие строки (выделены) и вставить после них строки кода приведенного ниже.
Рисунок 25 Компиляция кода
Перед созданием библиотеки требуется внести изменения в код где нужно сменить
имя контейнера и имя организации используемого в eDirectory.
Container = "ou=Контейнер в eDirectory ,o=Организация в eDirectory";
Так же требуется указать имя агента используемого для синхронизации ILM с Novell eDirectory.
ManagementAgent = mventry.ConnectedMAs[" имя агента Novell Connector "];
Код для реализации правила управления для коннектора с именем Novell Connector:
—————————————————————————————————-
void IMVSynchronization.Provision (MVEntry mventry)
{
const long ADS_UF_SCRIPT = 0x0001; // The logon script will be executed
const long ADS_UF_ACCOUNTDISABLE = 0x0002; // Disable user account
const long ADS_UF_HOMEDIR_REQUIRED = 0x0008; // Requires a root directory
const long ADS_UF_LOCKOUT = 0x0010; // Account is locked out
const long ADS_UF_PASSWD_NOTREQD = 0x0020; // No password is required
const long ADS_UF_PASSWD_CANT_CHANGE = 0x0040; // The user cannot change the password
const long ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 0x0080; // Encrypted password allowed
const long ADS_UF_TEMP_DUPLICATE_ACCOUNT = 0x0100; // Local user account
const long ADS_UF_NORMAL_ACCOUNT = 0x0200; // Typical user account
const string USER_ACCOUNT_CONTROL_PROP = "userAccountControl";
ConnectedMA ManagementAgent; // Management agent object
int Connectors = 0; // Management agent connectors
ReferenceValue DN; // Distinguished name attribute
string Container; // Container name
string RDN ; // Relative distinguished name strings
CSEntry csentry; // Connector space entry object
ValueCollection vcObjectClass; //ObjectClass collection object
// Determine the state of the metaverse object.
if(mventry[USER_ACCOUNT_CONTROL_PROP].IsPresent)
{
long currentValue=mventry[USER_ACCOUNT_CONTROL_PROP].IntegerValue;
if((currentValue&ADS_UF_ACCOUNTDISABLE)!=ADS_UF_ACCOUNTDISABLE)
{
// Get the management agent connectors.
ManagementAgent = mventry.ConnectedMAs["Novell connector"];
Connectors = ManagementAgent.Connectors.Count;
// Construct the distinguished name.
Container = "ou=Users,o=org01";
RDN = "cn=" + mventry["uid"].Value;
DN = ManagementAgent.EscapeDNComponent(RDN).Concat(Container);
// If there are no connectors, create the connector, set the distinguished
// name attribute, and then add the new connector to the collection.
if(0 == Connectors)
{
csentry = ManagementAgent.Connectors.StartNewConnector("inetOrgPerson");
csentry.DN = DN;
vcObjectClass=Utils.ValueCollection(csentry.ObjectClass.ToString());
vcObjectClass.Clear();
vcObjectClass.Add("inetOrgPerson");
vcObjectClass.Add("organizationalPerson");
vcObjectClass.Add("person");
vcObjectClass.Add("ndsLoginProperties");
csentry.CommitNewConnector();
csentry.ObjectClass=vcObjectClass;
if (csentry["userPassword"].IsMultivalued)
{
SetNovellPW(csentry,"password");
}
}
// If a connector exists, get the existing connector and assign the new
// distinguished name value. If the original attribute value is the same
// as the new distinguished name, then the original attribute value
// remains the same.
else if(1 == Connectors)
{
csentry = ManagementAgent.Connectors.ByIndex[0];
csentry.DN = DN;
}
// Throw an exception if more than one connector exists.
else
{
string ExceptionMessage;
ExceptionMessage = "Multiple Connectors on Management Agent";
throw new UnexpectedDataException(ExceptionMessage);
}
}
}
}
void SetNovellPW(CSEntry csentry, string pw)
{
byte[] password = new byte[0];
password = System.Text.UTF8Encoding.UTF8.GetBytes(pw);
byte[] ExtendedPassword = new byte[password.Length+2];
for(int x=0;x<password.Length;++x)
{
ExtendedPassword[x] = password[x];
}
csentry["userPassword"].Values.Add(ExtendedPassword);
return;
}
——————————————————————————————————
После внесения изменений в код требуется собрать библиотеку MVExtension.dll для этого выберите в списке меню Build пункт Build solution. При этом библиотека автоматически с компилируется и будет помещена по следующему адресу
C:\Program Files\Microsoft Identity Integration Server\Extensions
Данный метод вызывается при операциях синхронизации коннекторов и метабазы. Выполняются следующие проверки:
1) Проверка того, что методу передан объект из AD коннектора и является записью пользователя.
2) Проверка наличия атрибута AccountProperties.
3) Проверка, не выставлен ли у этого аккаунта флаг AccountDisable.
Если всё это выполнено, начинается работа с коннектором Novell и проверяется, есть ли соединители в этом коннекторе:
Если их нет, то создаётся новый соединитель, в контейнере ou=Users,o=org01. Для создания пользовательской учётной записи в Novell eDirectory необходимо создать объект inetOrgPerson с атрибутом objectClass со значениями inetOrgPerson, organizationalPerson, person, ndsLoginProperties. Также здесь устанавливается начальный пароль для пользователя «password». Атрибут userPassword в eDirectory доступен только для записи, и является служебным, для задания пароля пользователя. Процедура SetNovellPW выполняет операцию перевода строки в массив байт, и передачи этого значения в коннектор.
Если соединитель есть и он один, то это значит, что объект, либо просто обновил значения атрибутов, либо перемещён. При этом необходимо обновить значение атрибута DN.
Остальные атрибуты буду экспортированы из metaverse согласно установленным правилам экспорта.
Заносится тестовая база CN=Users,DC=nwtraders,DC=msft в Active Directory, выполняется процедура полного импорта данных из AD коннектора и экспорта данных в Novell. Novell Client успешно входит в систему, под новыми записями с паролем «password».
Конфигурация Run Profiles для коннектора Active Directory Connector.
Конфигурация Run Profiles для агента Active Directory Connector
Рисунок 26 Конфигурация Run Profiles для агента Active Directory
В конфигурация Run1 используется тип синхронизации
Step1 — Full Import (Stage Only)
Рисунок 27 Конфигурация Run Profiles для агента Active Directory
В конфигурация Run3 используется тип синхронизации
Step1 — Full Synchronization
В конфигурации Normal используется
Step1 — Full import and Full Synchronization
Конфигурации Run Profiles для агента Novell
В конфигурация Run2 используется тип синхронизации
Step1 — Full Import (Stage Only)
Рисунок 28 Конфигурации Run Profiles для агента Novell
В конфигурации Run4 используется тип синхронизации
Step1 — Full Synchronization
Step 2 — Export
В конфигурации Normal используется
Step1 — Full import and Full Synchronization
Step 2 – Export
Запуск процедур Run Profiles
Запуск процедур Run Profiles необходимо выполнять согласно номерам
· Run1
· Run2
· Run3
· Run4
· Normal
· Normal
После синхронизации данных учетная запись, созданная в Active Directory будет создана в eDirectory. То есть при создании учетной записи в Active Directory она автоматически создается в Novell eDirectory, после удаления учетной записи из AD она автоматически удаляется из Novell eDirectory.
Далее создаем тестовую среду для работы компьютеров с аутентификацией в двух местах: в Novell eDirectory и в Active Directory. Текущая конфигурация клиентов Windows XP + Novell Client.
Заполняем закладку клиента Novell с указанием имени пользователя и домена Windows .
Рисунок 29 Закладка для указания имени пользователя и домена Windows
После входа в систему, появляется новое окно, в котором необходимо указать пароль Windows. Необходимо отметить чекбокс изменения пароля Windows после успешного аутентификации в Novell.
В окне смены пароля есть возможность одновременно сменить пароль Novell и пароль Windows.
Рисунок 30 Ввод пароля Windows
Рисунок 31 Смена пароля Novell и пароля Windows
Таким образом, получена среда с двойной аутентификацией. Синхронизация паролей возложена на клиента Novell.
Синхронизация учетных данных средствами ILM 2007 между каталогом Active Directory и каталогом Novell eDirectory. Часть 1