8.4.2. Пример настройки SSO
В данном разделе рассмотрен пример настройки SSO для двух приложений: Foo и Bar. Foo будет одновременно выполнять роль Identity Provider и Service Provider, Bar будет являться Service Provider.
-
Оба приложения будут запущены на localhost, поэтому создайте алиасы в файле
hosts
:127.0.0.1 foo 127.0.0.1 bar
-
Создайте поочередно два проекта в Studio и назначьте разные порты Tomcat.
Проект HTTP port AJP port Shutdown port Foo
8081
8011
8051
Bar
8082
8012
8052
-
В проекте Foo отредактируйте файл
modules/web/web/WEB-INF/web.xml
добавив следующую конфигурацию IDP:<servlet> <servlet-name>idp</servlet-name> <servlet-class>com.haulmont.idp.sys.CubaIdpServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>idp</servlet-name> <url-pattern>/idp/*</url-pattern> </servlet-mapping> <filter> <filter-name>idpSpringSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> <init-param> <param-name>contextAttribute</param-name> <param-value>org.springframework.web.servlet.FrameworkServlet.CONTEXT.idp</param-value> </init-param> <init-param> <param-name>targetBeanName</param-name> <param-value>springSecurityFilterChain</param-value> </init-param> </filter> <filter-mapping> <filter-name>idpSpringSecurityFilterChain</filter-name> <url-pattern>/idp/*</url-pattern> </filter-mapping>
-
В проекте Foo отредактируйте файл
web-app.properties
модуля web, добавив следующие свойства:cuba.idp.serviceProviderUrls = http://foo:8081/app/,http://bar:8082/app/ cuba.idp.serviceProviderLogoutUrls = http://foo:8081/app/dispatch/idpc/logout,http://bar:8082/app/dispatch/idpc/logout cuba.idp.trustedServicePassword = mdgh12SSX_pic2 cuba.webAppUrl = http://foo:8081/app/ cuba.web.externalAuthentication = true cuba.web.externalAuthenticationProviderClass = com.haulmont.cuba.web.auth.IdpAuthProvider cuba.web.idp.baseUrl = http://foo:8081/app/idp/ cuba.web.idp.trustedServicePassword = mdgh12SSX_pic2
-
В проекте Bar отредактируйте файл
web-app.properties
модуля web, добавив следующие свойства:cuba.webAppUrl = http://bar:8082/app/ cuba.web.externalAuthentication = true cuba.web.externalAuthenticationProviderClass = com.haulmont.cuba.web.auth.IdpAuthProvider cuba.web.idp.baseUrl = http://foo:8081/app/idp/ cuba.web.idp.trustedServicePassword = mdgh12SSX_pic2
-
Запустите сервер Foo с помощью скрипта
tomcat/bin/startup.*
. -
Перейдите по адресу
http://foo:8081/app
в веб-браузере. Вы будете перенаправлены на страницу логина IDP. Войдите с именем и паролемadmin
/admin
. Создайте нового пользователя, напримерu1
. -
Запустите сервер Bar с помощью скрипта
tomcat/bin/startup.*
. -
Перейдите по адресу
http://bar:8082/app
в том же веб-браузере. Если вы по прежнему аутентифицированы в приложении Foo, то вы автоматически войдете какadmin
и в приложение Bar. Создайте пользователяu1
(пароль не важен) в приложении Bar. -
Теперь вы сможете входить как
admin
илиu1
в оба приложения через единую форму логина, и если вы аутентифицированы в одном приложении, то вход во второе будет автоматическим, минуя форму.