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

OATH HOTP JAAS Plugin


Предыстория

Стек технологий Java EE Платформа для разработки корпоративного ПО на языке Java является одним из самых популярных на сегодняшний день для создания корпоративных информационных систем и WEB-приложений. На практике нередко приходится сталкиваться с классом приложений, для которых интеграция с LDAP невозможна или затруднительна. Это могут быть либо сторонние приложения с закрытыми исходными текстами, либо унаследованные (legacy) приложения, работающие исключительно с СУБД. В то же время, существует необходимость обеспечить для таких приложений двухфакторную аутентификацию с использованием одноразовых паролей.

Задача

Пусть имеется приложение, написанное в стандарте Java EE, развѐрнутое в Java EE-совместимом контейнере. При этом вся аутентификационная информация хранится в реляционной СУБД. Аутентификация реализуется контейнером при помощи стандартных механизмов. Необходимо обеспечить приложение механизмом аутентификации по стандарту OATH HOTP, не модифицируя само приложение (модификация схем БД допускается).

Решение

Вопросы аутентификации в стеке Java EE покрываются технологией JAAS Технология для настраиваемой аутентификации в рамках платформы Java EE (Java Authentication and Authorization Services). В том числе, допускается создание собственных механизмов аутентификации в виде загружаемых модулей. JAAS поддерживается большинством популярных Java EE-контейнеров: Tomcat Открытый сервер приложений стандарта Java EE, являющийся частью проекта Apache , GlassFish Открытый сервер приложений, разрабатываемый Oracle и являющийся стандартной реализацией Java EE , JBoss Открытый сервер приложений стандарта Java EE, разрабатываемый RedHat , Resin Сервер приложений стандарта Java EE, разрабатываемый Caucho Technology в открытой и коммерческой версиях и прочие. Поэтому нами был реализован механизм аутентификации по стандарту OATH HOTP в виде JAAS-модуля. Для работы с СУБД применяется JPA — технология ORM, стандартная для JavaEE.

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