Аутентификация и по внутренней БД пользователей и по LDAP

Предполагается, что с разрабатываемым приложением будут работать как внутренние пользователи, которых необходимо аутентифицировать через LDAP каталог, так и внешние пользователи, которые будут регистрироваться самостоятельно и аутентифицироваться через внутреннюю базу пользователей. Однако, при настройке аутентификации через LDAP каталог пропадает возможность проводить аутентификацию по внутренней базе пользователей. Вопрос: есть ли возможность настроить одновременную аутентификацию пользователей через два указанных центра аутентификации? Например, сначала осуществляется попытка аутентифицировать пользователя через внутреннюю базу пользователей, в случае ошибки - через LDAP, в случае ошибки генерировать исключение. Если стандартными настройками так сделать нельзя, то подскажите как написать свой LoginProvider?

Если по простому и пользователей не ldap немного - то мы используем настройку cuba.web.standardAuthenticationUsers

перечисляются логины пользователей со стандартной аутентификацией через запятую

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

Посмотрите код com.haulmont.cuba.web.security.ldap.LdapLoginProvider и com.haulmont.cuba.web.security.providers.LoginPasswordLoginProvider, создайте аналог с нужной функциональностью в модуле web проекта и задайте ему order = HIGHEST_PLATFORM_PRECEDENCE - 10.

1 симпатия

Большое спасибо за консультацию! Сделал свой провайдер аутентификации, в котором совместил аутентификацию по базе пользователей приложения и по LDAP. Теперь вход работает в случае положительной проверки по любому из указанных центров аутентификации.

Удивительно насколько просто в платформе реализован механизм переопределения и работы с настолько глубоко системными функциями…

1 симпатия