Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LII Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 06 сентября 2018 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Алексеев Г.С. РАЗРАБОТКА ИНТЕГРАЦИОННОГО РЕШЕНИЯ СИНХРОНИЗАЦИИ УЧЕТНЫХ ЗАПИСЕЙ ПОЛЬЗОВАТЕЛЕЙ ACTIVE DIRECTORY // Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ: сб. ст. по мат. LII междунар. студ. науч.-практ. конф. № 17(52). URL: https://sibac.info/archive/meghdis/17(52).pdf (дата обращения: 30.11.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

РАЗРАБОТКА ИНТЕГРАЦИОННОГО РЕШЕНИЯ СИНХРОНИЗАЦИИ УЧЕТНЫХ ЗАПИСЕЙ ПОЛЬЗОВАТЕЛЕЙ ACTIVE DIRECTORY

Алексеев Георгий Сергеевич

студент, кафедра теплофизики и информатики в металлургии, РФ, г. Екатеринбург

Лавров Владислав Васильевич

научный руководитель,

д-р техн. наук, доц. кафедры теплофизики и информатики в металлургии, УрФУ, РФ, г. Екатеринбург

Зачастую в рамках реализации той или иной корпоративной информационной системы (сокращенно КИС) возникает необходимость каким-то образом внедрять разрабатываемое решение в уже существующую инфраструктуру предприятия, ведь на предприятии почти всегда есть некоторые выделенные локальные вычислительные сети, например, для сотрудников отдела бухгалтерии, некоторое программное обеспечение, с помощью которого персонал выполняет свои непосредственные обязанности – системы электронного документооборота, вычислительные математические и офисные пакеты. Кроме всего прочего в ИТ – инфраструктуре предприятия почтив всегда имеет место быть система администрирования рабочих станций, которая позволяет проводить комплексную их настройку, переустановку программного обеспечения и т.д. Также в задачи системы администрирования входит разделение прав доступа к тем или иным ресурсам в вычислительной сети предприятия: например, совсем ни к чему давать доступ секретариату к рабочим документам бухгалтерии. Одним из таких решений является Active Directory от компании Майкрософт.

Active Directory (AD, активный каталог) это служба каталогов, разработанная для ОС семейства Windows Server. С помощью AD можно решить следующие задачи, возникающие при создании ИТ-инфраструктуры:

  • Обеспечение единообразия рабочих сред пользователей через механизм групповых политик;
  • Централизованная установка обновления операционной системы;
  •  Централизованное хранение настроек пользователей;
  • Разграничение прав доступа через тот же механизм групповых политик.

Изначально данная служба каталогов не предполагала интеграций со сторонними сервисами, это стало возможно только после выхода Windows Server 2008. В этот же момент стали разрабатываться и соответствующие интеграционные решения, которые в большинстве своем сводятся к синхронизации учетных записей пользователей, некоторых служебных данных (информация о блокировке и адресе электронной почты, например). По ходу данной статьи будет разобрана реализация программы для синхронизации пользователей между Active Directory (по сути – хранилищем  пользователей внутри организации) и некой сторонней системой.

Разберем основные понятия Active Directory с точки зрения разработки подобных интеграционных решений. Ключевые определения сведены в Таблицу 1.

Таблица 1.

Наименование атрибута

Название на английском языке

Название на русском языке

Пример

В рамках сущности Департамент (OU - Organizational Unit)

distinguishedName

Distinguished Name

Отличительное (уникальное) имя

OU=Organization

name

Name

Наименование

Организация

В рамках сущности Группа (Group)

distinguishedName

Distinguished Name

Отличительное (уникальное) имя

CN=Group,OU= Organization

name

Name

Наименование

Группа_1

member

Members

Коллекция членов группы

CN=Иванов Иван Иванович,OU= Organization

В рамках сущности пользователь (User)

DN

Distinguished Name

Отличительное (уникальное) имя

CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com

DC

Domain Component

Компонент(класс) доменного имени.

DC=domain,DC=com

OU

Organizational Unit

Подразделение

Компания

CN

Common Name

Общее имя

Сергей Петрович Иванов

givenName

First name

Имя

Сергей Петрович

name

Full name

Полное имя

Сергей Петрович Иванов

sn (SurName)

Last name

Фамилия

Иванов

displayName

Display Name

Выводимое имя

Сергей Петрович Иванов

mail

E-mail

Электронная почта

sAMAccountName

User logon name (pre-Windows 2000)

Имя входа пользователя (до Windows 2000)

IvanovSP

userPrincipalName

User logon name

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

memberOf

Member Of

Член групп

CN=Группа,OU=Компания,DC=domain,DC=com

 

Таблица специально приведена с формулировками на английском языке, так как большинство литературы по Active Directory и технологиям компании Майкрософт в целом издается на английском языке.

Стоит отметить, что два таких параметра как userPrincipalName и sAMAccountName являются похожими – второй является частью первого. Но не смотря на это в программных реализациях следует использовать userPrincipalName, так как sAMAccountName является устаревшим и на его основе функционал AD не расширяется, таким образом, вы рискуете остаться без возможности расширить вашу интеграцию в будущем.

Перейдем к программной реализации на языке C#. Этот язык был выбран не случайно: за его разработкой стоит та же корпорация Майкрософт, что гарантирует отличную доступность Active Directory с помощью подключаемых библиотек System.DirectoryServices, System.DirectoryServices.AccountManagement, System.DirectoryServices.ActiveDirectory.

Выделим специальный класс, который будет служить провайдером к AD и будет доступен для вызова из других методов – ActiveDirectoryHelper.cs. Содержание данного класса раскрыто на Рисунке 1.

 

Рисунок 1. Программный код класса ActiveDirectoryHelper.cs

 

Приведем некоторые пояснения к данному программному коду, несмотря на то, что код содержит комментарии.

В первую очередь необходимо открыть PrincipalContext – некоторый провайдер к сущностям Active Directory. Разумеется, чтобы иметь такой доступ, нужна учетная запись администратора, логин и пароль которого необходимо прописывать при открытии контекста. Конечно, жестко указывать логин и пароль в исходном коде – дурная затея, лучше создать отдельный модуль с графическим интерфейсом, в котором будут поля для ввода логина и пароля администратора и условная кнопка «Синхронизировать пользователей».

Далее мы настраиваем фильтр, создавая сущность класса UserPrincipal. Это нужно для того, чтобы отсеять остальные сущности в AD – grop, machine и другие. Далее ищем все сущности, удовлетворяющие данному фильтру методом FindAll(), который вызывается у экземпляра класса PrincipalSearcher.

Теперь в памяти сохранен список сущностей, которые формально числятся как пользователи. Далее необходимо получить из них информацию.

Но перед этим необходимо убедиться, что сущность, которая числится как пользователь действительно таковой является: для этого выполним поиск среди экземпляров класса UserPrincipal по идентификатору GUID, и если результат этого поиска будет null (то есть среди UserPrincipal) не числится данной сущности, то синхронизировать ее не нужно, а нужно пропустить ее оператором continue.

Далее разбираются данные пользователя: логин, емейл, номер телефона, информация о блокировке в AD.

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

Доступа к паролям Active Directory не предоставляет из соображений информационной безопасности.

 

Список литературы:

  1. Библиотека классов C# [Электронный ресурс], Режим доступа: https://msdn.microsoft.com/ru-ru/library/mt472912(v=vs.110).aspx (дата обращения: 04.09.2018).
  2. Рэст Д., Рэст Н., Холм Д. Настройка Active Directory. Windows Server 2008. 1-е изд., М.: Русская Редакция-М, 2009. — 960 с.
  3. Справочник по C#. [Электронный ресурс]. Режим доступа: https://msdn.microsoft.com/library/edakx9da(v=vs.100).aspx/ (дата обращения: 04.09.2018);.
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.