ВХОД ДЛЯ КЛИЕНТОВ

OATH HOTP LDAP Plugin


Предыстория

На рынке уже довольно длительное время присутствуют продукты для сильной многофакторной аутентификации. Наиболее доступными и простыми в использовании являются генераторы одноразовых паролей (OTP, one-time password) в виде брелока/токена. Многие представленные продукты удовлетворяют открытому стандарту HOTP Алгоритм для генерации одноразовых паролей на основе HMAC (хеш-код идентификации сообщений). Ведущий открытый мировой стандарт для аутентификации по одноразовым паролям , разработанному группой Initiative for Open Authentication (OATH). Нашей компании не раз приходилось сталкиваться с задачами интеграции OTP с различными приложениями, такими как WEB-почта, корпоративные порталы и другие. В нашей деятельности мы сознательно ориентируемся на решения с открытыми исходными текстами (open source). Нами были исследованы некоторые существующие открытые решения, поддерживающие стандарт OATH HOTP. К сожалению, ситуация оказалась далека от идеальной. Все рассмотренные продукты обладали определѐнными недостатками, связанными с масштабируемостью, управлением, универсальностью и так далее. В результате мы решили создать собственное семейство программных продуктов, реализующих вышеописанные задачи.

Задача

Задача состоит в том, чтобы обеспечить аутентификацию в стандарте HOTP для ряда приложений и служб. Начальный набор рассматриваемого нами ПО включает в себя:

  • службу WEB-почты ( Dovecot Свободный IMAP- и POP3-сервер для UNIX/Linux-систем, разрабатываемый в расчёте на безопасность, гибкость настройки и быстродействие + RoundCube) Клиент для работы с электронной почтой с веб-интерфейсом, написанный на PHP с использованием CSS и XHTML и технологии AJAX ;
  • службу виртуальных сетей ( OpenVPN Полнофункциональное решение с применением SSL для виртуальных частных сетей );
  • корпоративные приложения стандарта Java EE Платформа для разработки корпоративного ПО на языке Java ;
  • стек Linux PAM Набор модулей, предоставляющий динамическую авторизацию для приложений и служб Linux-систем (для аутентификации пользователей рабочих станций).

Решение должно быть максимально универсальным, чтобы впоследствии этот список мог пополняться. Требуется централизованное управление жизненным циклом устройств аутентификации (регистрация, активация, синхронизация, отзыв), имеющее эргономичный графический пользовательский интерфейс. Решение необходимо обеспечить средствами открытого ПО. Также решение должно удовлетворять требованиям современного корпоративного окружения по безопасности, масштабируемости и отказоустойчивости.

Решение

В первую очередь необходимо было определить механизм аутентификации, который бы поддерживался всеми вышеописанными службами. Далее, требовалось расширить этот механизм для поддержки стандарта OATH HOTP. Наконец, требовалось разработать современный графический интерфейс для управления жизненным циклом токенов, интегрирующийся с данным механизмом.

Таким механизмом оказался LDAP. LDAP — древовидная база данных для хранения корпоративной информации, а также стандартизованный сетевой протокол и механизм аутентификации. LDAP поддерживается широчайшим спектром клиентского и серверного корпоративного ПО. Существует несколько открытых реализаций LDAP: OpenLDAP Открытая реализация сетевого протокола и механизма аутентификации LDAP , 389 Directory Server Открытый вариант сервера директорий RedHat Directory Server, разрабатываемый сообществом в рамках проекта Fedora , Apache Directory Server Открытый сервер директорий, написанный на Java и являющийся частью проекта Apache . Все они являются расширяемыми, т.е. предоставляют принципиальную возможность для реализации собственных аутентификационных механизмов. Существует также стандартный программный интерфейс SLAPI для написания расширений, который поддерживается продуктами OpenLDAP, 389 Directory Server, а также некоторыми коммерческими LDAP-серверами (RedHat Directory ServerКоммерческий сервер директорий корпоративного уровня , Oracle Directory ServerКорпоративный сервер директорий, разрабатываемый Oracle).

SLAPI-расширения пишутся на языке С. Принцип работы расширения заключается в перехвате LDAP-запроса типа bind, чтении информации о токенах и пользователях из LDAP-базы, проверки введѐнных пользователем данных и обновлении информации в базе. Вся информация о пользователях и токенах хранится в LDAP, с использованием как стандартных схем (пользователи), так и собственных схем нашей компании. Также реализована расширенная операция (EXOP) для поддержки синхронизации токенов.

В качестве технологии для создания графического интерфейса был выбран стек Java EE. Реализация интерфейса в виде WEB-приложения позволяет обеспечить доступ с любого компьютера через WEB-браузер (установка специального ПО не потребуется). В то же время, современные Java-технологии позволяют создавать богатые, современные и эргономичные интерфейсы.

Распространяется по GNU GPL, версия 3.0.