Интеграция Liferay и WSO2 IS через протокол OpenId - Интеграция Liferay и WSO2 IS через протокол OpenId
Blogs
Есть задача - организовать единую точку входа (SSO) используя WSO2 Identity Server (WSO2 IS) и подключить к ней Liferay. В случае если используется Liferay Enterprise Edition - никаких проблем нет - для него есть плагин поддержки SAML 2.0 и данную задачу можно решить используя протокол SAML. Но что делать если у нас Community Edition.
Тут все хуже - к сожалению "из коробки" есть только поддержка протокола OpenID - и тут мы рассмотрим как можно реализовать логин в портал Liferay используя этот протокол.
Конфигурация WSO2 IS для поддержки OpenID
Рассмотрим на примере нашего демо-стенда https://wso2demo.emdev.ru:19443. Для того, чтобы сервер IS правильно обрабатывал запросы, необходимо настроить его на использование правильного доменного имени. Для этого открываем файл <wso2is>/repository/conf/identity.xml и редактируем часть, отвечающую за OpenID:
<OpenID> <OpenIDServerUrl>https://wso2demo.emdev.ru:19443/openidserver</OpenIDServerUrl> <OpenIDUserPattern>https://wso2demo.emdev.ru:19443/openid/</OpenIDUserPattern>
Тут надо указать используемый домен и порт.
Установка сертификата
Для того, что бы портал Liferay мог взаимодействовать с OpenID сервером WSO2IS по https, необходимо добавить его сертификат в cacerts. Для этого я экспортировал сертификат в файл wso2demo.emdev.ru.crt (например кликнув на https в браузере Firefox, получив информацию о сертификате и нажав Экспорт) и добавил его в cacerts JRE используя утилиту keytool . У меня на MacOS X это можно сделать командой
#sudo keytool -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/security/cacerts \
-importcert -alias wso2demoemdevru -file ~/Downloads/wso2demo.emdev.ru.crt
Если вдруг кто-то не знает - пароль к cacerts - changeit
Логин из портала Liferay используя OpenID
Поддержка OpenID включена в портале Liferay по умолчанию. Если нет - то идем Control Panel -> Portal Settings -> Authentication -> OpenID и включаем.
В Результате, в портлете Login будет доступна ссылка - "OpenID". При клике на нее попадаем в окно входа по OpenID
Тут надо ввести урл на OpenID провайдер - причем в нем указать имя пользователя, которым мы хотим залогинится. В моем случае это был https://wso2demo.emdev.ru:19443/openid/akakunin
После нажатия на кнопку "Sign In" мы попадем в окно входа в WSO2 IS, причем так как имя пользователя мы уже указали в URL - то у нас спросят только пароль
После ввода пароля будет спрошено разрешение о предоставлении внешнему приложения данных о пользователе. Передается только имя пользователя
Дальше управление будет передано обратно порталу. Так как полученных данных не достаточно для того, что бы создать нового пользователя, портал предложит создать нового в форме Регистрации. Однако, если указанный openID URL (https://wso2demo.emdev.ru:19443/openid/akakunin в моем случае) заранее присвоить одному из пользователей портала (Control Panel -> Users and Organizations -> user -> таб OpenID) то будет осуществлен вход указанным пользователем.
ИТОГО
Итого грусно. Конечно организовать SSO между Liferay CE и WSO2 IS можно через OpenID - но практической ценности такой способ никакой не несет:
- Никто не будет помнить свой OpenID URL
- Нет возможности автоматически создать пользователя
- Как итог - указанный OpenID URL надо заранее задавать заранее созданным пользователям портала.
В этом плане интеграция через SAML 2.0 выглядит значительно предпочтительней.
- 6.2 (12)
- 7.0 (12)
- activiti (14)
- apache camel (6)
- camel (11)
- devcon (6)
- devops (5)
- emdev (9)
- emdev limited (9)
- entaxy (13)
- esb (10)
- fuse (5)
- gartner (7)
- google apps (6)
- jboss (5)
- liferay (143)
- liferay 7.1 (11)
- liferay dxp (11)
- liferay7 (12)
- openshift (8)
- osgi (5)
- redhat (15)
- rest (6)
- wso2 (70)
- wso2 api-m (10)
- wso2 ei (8)
- wso2ei (5)
- wso2esb (7)
- wso2is (8)
- емдев (11)
Сайт использует файлы cookie. Они позволяют узнавать вас и получать информацию о вашем пользовательском опыте. Это нужно, чтобы улучшать сайт. Посещая страницы сайта и предоставляя свои данные, вы позволяете нам предоставлять их сторонним партнерам. Если вы согласны, продолжайте пользоваться сайтом. Если нет – установите специальные настройки в браузере или обратитесь в техподдержку.