Предоставление функций Liferay другому веб-приложению

Вот моя ситуация: я использую JBoss 7 в доменном режиме с несколькими узлами. Один узел отвечает за мой Liferay 6.2, другой - несколько других веб-приложений. Теперь я хотел бы реализовать некоторые правила Single Sign On. Поэтому, чтобы использовать мои веб-приложения, вам сначала нужно пройти через liferay. Аутентифицируйте против liferay, затем перейдите к одному из веб-приложений.

Таким образом, вопрос заключается в том, существует ли способ предоставления некоторых методов liferays для доступа к хранилищу пользователей и проверки того, совпадает ли пользователь, который обращается к веб-приложению, с тем, кто вошел в систему на liferay. Разработка какого-то моста вполне устраивает меня. Я имею в виду портлет, который выполняет все взаимодействие с liferay и предоставляет некоторые методы, такие как readUser(), Может быть, я могу сделать поиск jndi для этого портлета или компонента, встроенного в этот портлет, для вызова readUser() из моих других веб-приложений. Я думаю, что это звучит немного как EJB.

Использование Liferays API, Services и LocalServices для чтения пользовательской информации и т. Д. Не должно быть таким сложным (с этим уже немного поиграли). Я просто не знаю, как установить связь между веб-приложением и liferay.

Если бы это не работало таким образом, я бы согласился на что-то другое, может быть, веб-сервис или другой способ, который имеет смысл, но я хотел бы сначала попробовать подход EJB/JNDI (за исключением того, что это не имеет никакого смысла). Может быть, кто-то может указать мне в правильном направлении.

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

Спасибо и всего наилучшего Себастьян

2 ответа

Вы можете использовать сервис-компоновщик и выставить свой сервис как удаленный.

Несколько вариантов:

  • Просто получите доступ к методам API Liferay из ваших приложений. Вы можете получить доступ к JSON API по адресу http://www.example.com/api/jsonws.
  • Есть также интерфейс SOAP ( http://www.example.com/api/axis), который обычно доступен только с localhost (вы можете настроить иначе в portal-ext.properties)
  • Вы можете инкапсулировать звонки в эти службы, создавая свои собственные службы. Используйте инструмент по вашему выбору или сервис-строитель Liferay. Вы можете создавать пустые сущности и просто ссылаться на собственные сущности Liferay. Servicebuilder сгенерирует JSON или SOAP WS, если вы позволите. (что упоминал Слимен Белхаджали)

Говоря конкретно о проверке личности пользователя, вы можете даже подумать о совершенно другом решении и просто взглянуть на решения с единым входом (SSO). Таким образом, вы будете входить только один раз (на сервер единого входа) и автоматически (неявно) в ваше веб-приложение, а также в Liferay. Это работает лучше всего, если оба обращаются к одному и тому же хранилищу пользователей, например, по LDAP.

Другие вопросы по тегам