Как и в предыдущем ответе, вы должны направить все ваши запросы на аутентификацию на сервер OpenAM и позволить ему проверять учетные данные на правильном LDAP-сервере. Использование двух разных областей (по одному для каждого сервера LDAP) не будет работать в вашем случае, так как для LifeRay потребуется знать, где найти пользователя перед началом работы. Кроме того, сеансы связаны с определенной сферой.
Существует множество вариантов решения проблемы. Вот только пара:
Вариант 1
Если у вас есть контроль над потоком аутентификации. То есть, если ваше приложение использует пользовательский интерфейс и взаимодействует с OpenAM через REST, вы можете создать два разных экземпляра модуля аутентификации в одной области (скажем, два экземпляра модуля аутентификации DataStore), каждый из которых указывает на другой сервер LDAP.
Давайте назовем этот модуль экземплярами DataStore1 и DataStore2. Ваше приложение может собирать учетные данные пользователя (имя пользователя и пароль) и отправлять их в DataStore1. Если аутентификация прошла успешно, пользователь уже выполнил вход в систему. Если это не удается, приложение может попробовать с DataStore2.
Конечно, это не идеально, так как вы будете делать два запроса на аутентификацию за один логин вместо одного.
Вариант 2
Лучший вариант (хотя и более сложные в реализации) будет создавать модуль пользовательской аутентификации. Этот модуль может попытаться аутентифицировать пользователя на сервере LDAP 1, а затем попытаться с сервером LDAP 2, если первая аутентификация завершилась неудачно. Обратите внимание, что с этой опцией вам не нужна специальная логика на стороне приложения, поскольку она будет отправлять только один запрос проверки подлинности на сервер OpenAM. Фактически, вы можете защитить свое приложение с помощью агента политики OpenAM.
Другим преимуществом такого подхода по сравнению с вариантом 1 является то, что вы можете перенести своих пользователей за кулисы, предполагая, что конечной целью является миграция пользователей с сервера LDAP 1 на сервер LDAP 2.Если первая проверка подлинности завершилась успешно, ваш пользовательский код может прочитать запись пользователя с сервера LDAP 1 и скопировать его на сервер LDAP 2.
Надеюсь, это поможет вам решить проблему.
Отличный ответ. Большое спасибо. Я попробую эти альтернативы и напишу свой опыт с конфигурацией :) –