Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемВалерий Мишуточкин
1 Повышение эффективности управления корпоративными данными. Обеспечение взаимодействия ПП «Парус-Предприятие 8» с Active Directory 2014 Миндияров Илья Гафурович Главный специалист по программному обеспечению Центра информационных технологий и консалтинга «ПАРУС»
2 Пример написания КОР-разделов по отображению данных из Active Directory Пример пользовательской процедуры по обновлению адресной книги Пример отчета о незаблокированных учетных записях уволенных сотрудников Рассматриваемые задачи В архиве находятся файлы, используемые в презентации. Чтобы их открыть нужно: 1. Открыть PowerPoint 2. Открыть файл этой презентации 3. На текущем слайде 2 раза нажать кнопку мыши на иконке файла
3 Когда на предприятии работает Парус 8, то информация по актуальным кадровым данным находится внутри модуля Управление персоналом и штатное расписание, но т.к. адресная книга, например Microsoft Outlook, ведется в Active Directory, то после перевода работника на другую должность необходимо затратить некоторые усилия по редактированию адресной книги. Microsoft предоставляет возможность давать разрешения на редактирование отдельных атрибутов записей в Active Directory, но кадровики, как правило не меняют еще и адресную книгу. Другая проблема заключается в том, что при увольнении сотрудника возможно не всегда в IT-службу сообщают об увольнении и учетная запись пользователя в Active Directory не блокируется. Общая проблематика
4 В презентации рассматривается только изменение атрибутов, которые отображаются в адресной книге и выборка учетных записей для анализа. Заведение пользователя и редактирование его прав доступа в домене мной не рассматривается, т.к. такие операции должны производиться только по письменным заявкам о предоставлении доступа в IT-службу предприятия. Общая проблематика
5 В предлагаемом решении сотрудник IT-службы после того как сам создаст пользователя в домене один раз выполнит привязку между учетной записью пользователя в Active Directory и записью в разделе Сотрудники в ПП Парус 8. Далее редактирование информации о ФИО, должности, телефонах и размещению сотрудника осуществляется через Парус 8, что снимает нагрузку с IT-службы предприятия и повышает достоверность информации. Общая проблематика
6 Сотруднику IT-службы предоставляется отдельный модуль в котором он осуществляет привязку между сотрудником Парус 8 и объектом ActiveDirectory, причем содержание деревьев ActiveDirectory показывается в привычном виде (в виде дерева узлов). Возможна настройка привязки из модулей в которых есть раздел сотрудники, например Управление персоналом и штатное расписание, Расчет заработной платы. Доступ к деревьям осуществляется на основе ролей Парус 8, т.е. разные роли могут видеть разные деревья, т.к. Парус 8 на предприятии один, а контроллеров доменов много и географически они могут располагаться в разных городах Как работает решение
7 Сотрудникам, ответственным за ведение адресной книги в разделе Сотрудники предоставляется КОР-расширение Связь с адресной книгой Как работает решение
8 Поля Фамилия, Имя, Отчество, Полное наименование берутся из справочника Контрагент Поле организация заполняется из работодателя Сотрудника Поля подразделение и должность заполняются либо из Штатного подразделения и Штатной должности раздела Исполнения должностей либо при явном заполнении полей Подразделение, Должность подраздела Связь с адресной книгой. Примечание: т.к. в ActiveDirectory существует ограничение на название в 64 символа в Штатных подразделениях и Штатных должностях вводятся дополнительные свойства. Как работает решение
9 Поля Подразделение и Должность подраздела Связь с адресной книгой введены для случая если: 1. В адресной книге надо показать неправду 2. В адресной книге присутствуют записи о сотрудниках других организаций. Во втором случае исполнения должности у такого контакта быть не может и становятся необходимы эти поля. Как работает решение
10 При изменении данных раздела Связь с адресной книгой, при отработке приказов о переводе, увольнении автоматически меняются записи в ActiveDirectory. При возникновении ошибок в ActiveDirectory сетевому администратору высылается письмо с описанием ошибки. В подразделе Связь с адресной книгой может быть только одна запись (это более культурный аналог дополнительных свойств). В подраздел Связь с адресной книгой можно внести запись только после установления привязки с ActiveDirectory. Обычные пользователи Парус 8 напрямую к ActiveDirectory не обращаются – они не могут видеть с каким паролем осуществляется редактирование записей Как работает решение
11 Создайте группу, например parus8. Создайте пользователя, например ADEditor. Включите ADEditor в parus8 Через мастер делегирования назначьте права группе parus8 : на чтение и запись атрибутов displayName, givenName, middleName, sn, initials, company, department, title, telephoneNumber, otherTelephone, physicalDeliveryOfficeName. на чтение атрибутов objectGUID, lockoutTime, userAccountControl Если этих атрибутов в мастере не видно, то исправьте файл %systemroot%\System32\Dssec.dat Примечание: в интернете много статей и на русском языке Установка: в Active Direcrory
12 Установите программу ADExplorer aspx Проверьте подключение Установка: в Active Direcrory
13 Обратите внимание на Apache Directory Studio Установка: в Active Direcrory
14 Из архива второго слайда этой презентации выполните в sqlplus файл java.sql Например: Посмотрите файл java.log на предмет ошибок, которых быть не должно. В базе данных должны создаться следующие объекты UDO_T_AD_TMPUSERS – временная таблица UDO_P_AD_TMPUSERS_INSERT – процедура по заполнению UDO_T_AD_TMPUSERS ru/parus/ActiveDirectory - JAVA SOURCE и JAVA CLASS UDO_P_AD_FILL_USERS – процедура для вызова ru.parus.ActiveDirectory.fillUsers UDO_F_AD_MODIFY_BY_GUID – функция для вызова ru.parus.ActiveDirectory.modifyAttributes UDO_F_AD_GET_ESCAPED_GUID –сервисная функция по преобразованию атрибута objectGUID Установка: в Парус 8
15 Установленных объектов достаточно, чтобы научиться программно взаимодействовать с Active Directory UDO_P_AD_FILL_USERS это как бы аналог select objectGUID, distinguishedName, mail, displayName, givenName, middleName, sn, initials, company, department, title, telephoneNumber, otherTelephone, physicalDeliveryOfficeName, lockoutTime, userAccountControl from ActiveDirectory where searchFilter UDO_F_AD_MODIFY_BY_GUID это update ActiveDirectory set displayName= :displayName, givenName= :givenName, middleName= :middleName, sn= :sn, initials=:initials, company=:company, department= :department, title= :title, telephoneNumber= :telephoneNumber, otherTelephone= :otherTelephone, physicalDeliveryOfficeName= :physicalDeliveryOfficeName where objectGUID = : objectGUID Пояснение
16 Собственно теперь если к сотруднику добавить Дополнительное свойство со значением objectGUID, то уже можно редактировать адресную книгу. Рассмотрим UDO_F_AD_MODIFY_BY_GUID ( LDAPADSERVER in varchar2, BASECTXDN in varchar2, SUSER in varchar2, SPASSWORD in varchar2, sGUID in varchar2, displayName in varchar2, givenName in varchar2, middleName in varchar2, sn in varchar2, initials in varchar2, company in varchar2, department in varchar2, title in varchar2, telephoneNumber in varchar2, otherTelephone in varchar2, physicalDeliveryOfficeName in varchar2 ) ; Пояснение
17 Где LDAPADSERVER – адрес сервера: ldap:// BASECTXDN - узел с которого начнется просмотр: DC=parus,DC=ru SUSER - пользователь в ActivDirectory: SPASSWORD - пароль пользователя ADEditor Перед тем как работать необходимо под пользователем SYS выполнить begin dbms_java.grant_permission('PARUS','SYS:java.net.SocketPermission',' :389','c onnect,resolve'); end; Это позволит пользователю PARUS соединяться с на стандартный порт LDAP -389 Пояснение
18 Функция UDO_F_AD_MODIFY_BY_GUID возвращает значение типа CLOB в котором записан XML поясняющий, что сделано и/или какие произошли ошибки выполнения. Например: [LDAP: error code : SecErr: DSID-03150E8A, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0 ?] Это означает, что нет прав на изменение displayName. Я объясняю это потому, что при первоначальной настройке доступа в ActiveDirectory необходимо будет находить ошибки. Пояснение
19 Из архива второго слайда этой презентации выполните в sqlplus файлы common.sql и classes.sql Например: Скомпилируйте объекты В списке нескомпилированных возможно останутся UDO_P_AD_CLNPERSONS_BASE_SEND зависимые от этой процедуры UDO_P_AD_CLNPERONS_ADDRBK_INS UDO_P_AD_CLNPERONS_ADDRBK_UPD UDO_P_AD_CLNPERONS_ADDRBK_DEL Так может случиться потому что в системе нет пакета по отсылке электронной почты UDO_PKG_MAIL Установка проектного решения
20 Решение состоит из КОР-классов: UDOActiveDirectoryAccessConf – настройка доступа в контроллеры ActiveDirectory UDOActiveDirectoryTree – представление для отображения узлов ActiveDirectory UDOActiveDirectoryUsers – представление для отображения записей в ActiveDirectory UDOActiveDirectoryClnpersons - раздел в котором осуществляется привязка к сотрудникам UDO_ClientPersonsAddrBook – подраздел для Сотрудников для хранения данных По sql-коду и слайдам презентации вы самостоятельно сможете повторить эти классы. Цель моего доклада показать как можно взаимодействовать с ActiveDirectory, т.к. правильных способов множество. Описание проектного решения
21 UDOActiveDirectoryAccessConf
22 Атрибуты UDOActiveDirectoryAccessConf
23 Связи с Организации, Каталоги, Роли UDOActiveDirectoryAccessConf
24 Пример формы на исправление UDOActiveDirectoryAccessConf
25 Когда будете добавлять запись, то сначала дайте себе роль например ADEditor если вы будете добавлять запись для этой роли. В представлении раздела пароль будет показываться только если у вас есть права на редактирование каталога с записью. Таким образом пользователи не узнают пароля на учетную запись в ActivDirectory. UDOActiveDirectoryAccessConf
26 Если у Вас один контроллер домена, то этот раздел можно не создавать. Проще создать 4 строковых константы в отдельном каталоге, на просмотр которого имеют право только администраторы. UDOActiveDirectoryAccessConf
27 UDOActiveDirectoryTree
28 Атрибуты UDOActiveDirectoryTree
29 Связи UDOActiveDirectoryTree
30 UDOActiveDirectoryUsers
31 Атрибуты UDOActiveDirectoryUsers
32 Связи с Организациями и с UDOActiveDirectoryTree UDOActiveDirectoryUsers
33 Методы вызова UDOActiveDirectoryUsers
34 Настройка метода вызова UDOActiveDirectoryUsers
35 Настройка метода вызова Обратите внимание на действие перед открытием раздела UDOActiveDirectoryUsers
36 Настройка метода вызова UDOActiveDirectoryUsers
37 UDOActiveDirectoryClnpersons
38 Атрибуты UDOActiveDirectoryClnpersons
39 Метод UDOActiveDirectoryClnpersons
40 Собираем новый модуль Рабочее место IT-специалиста
41 Подключаем модули и добавляем UDOActiveDirectoryClnpersons в меню Рабочее место IT-специалиста
42 Эти 3 класса нужны только для того, чтобы устанавливать связь между сотрудником и атрибутом objectGUID Если сетевой администратор согласен напрямую устанавливать objectGUID у сотрудника путем копирования значения, то можно классы не создавать, а в Сотрудниках добавить новое КОР-действие и творчески переписать в UDO_P_AD_CLNPERSONS_SET_GUID вызовы pkg_env.PROLOGUE и pkg_env.EPILOGUE Рабочее место IT-специалиста
43 Этот класс является дочерним к штатному разделу Сотрудники UDO_ClientPersonsAddrBook
44 Атрибуты UDO_ClientPersonsAddrBook
45 Действия UDO_ClientPersonsAddrBook
46 Метод вызова UDO_ClientPersonsAddrBook
47 Ограничения UDO_ClientPersonsAddrBook
48 В сотрудниках создайте действие с типом Открыть раздел UDO_ClientPersonsAddrBook
49 В сотрудниках даем права и проверяем вызов UDO_ClientPersonsAddrBook
50 1. На втором слайде в архиве возьмите UDO_P_AD_NOTLOCKED.prc 2. Выполните скрипт 3. Создайте пользовательский отчет с типом Двоичные данные 4. Загрузите в отчет любой файл Отчет о незаблокированных учетных записях
51 Как это работает UDO_P_AD_FILL_USERS_ALL(ncompany => NCOMPANY); Во временной таблице udo_t_ad_tmpusers сохранит сведения обо всех пользователях в ActivDirectory. Вообще-то эта процедура еще строит и дерево каталогов для КОР-классов и выбирает лишние атрибуты, но как пример для примера она нам подходит. Нас будут интересовать 2 поля учетной записи lockouttTme и userAccountControl --блокировки нет или блокировка в будущем (t2. lockouttime is null or t2. lockouttime > sysdate) and --флаг...10 т.е. 2, говорит что учетная запись блокирована bitand(t2.useraccountcontrol, 2) = 0 Отчет о незаблокированных учетных записях
52 Код Java и PL/SQL рабочий, но следует понимать, что он предоставлен в учебных целях, например для сопоставления с адресной книгой достаточно 2 полей objectGUID и distinguishedName, а для отчета 4 - objectGUID, distinguishedName, lockoutTime и userAccountControl. Причем получение userAccountControl прилично увеличивает время выполнение запроса. Не рекомендуется редактировать поля cn и distinguishedName, не разобравшись, что они из себя представляют. На практике оказалось, что выполнение запросов из Java быстрее, чем через DBMS_LDAP. У Active Directory есть ограничение – просто запрос вернет 1000 записей (может и меньше, зависит от настроек), посмотрите как используется PagedResultsResponseControl Послесловие
53 В сообщениях об ошибках LDAP [LDAP: error code : SecErr: DSID-03150E8A, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0 ?] В ?] – знак вопроса это замена 0x00, если замену не сделать,то xml-файл в браузере корректно не отобразится. Даты в LDAP хранятся в формате с точностью 100 наносекунд, прошедшее с 1 января В LDAP в одном атрибуте может храниться несколько значений параметров. В ADExplorer при просмотре атрибута переходите на определение его в схеме, чтобы понять его размерность. Желаю успехов Вам в изучении взаимодействия с Active Directory, это дело полезное. Послесловие
54 СПАСИБО ЗА ВНИМАНИЕ «Корпорация ПАРУС», , Москва, ул. Ярославская, д.10 корп.4, (495) ,
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.