Как известно 11-ые версии UCM и BPM претерпели ряд инфраструктурных изменений, в связи с переходом в окружение WebLogic Server. Развернув приложения UCM и BPM в одном домене WebLogic, мы интуитивно ожидаем, что WebLogic будет поддерживать SSO между приложениями UCM и BPM, размещенных на разных Managed серверах. Но на самом деле, как и написано в документации, SSO будет работать для приложений размещенных только в рамках одного Managed сервера. Для работы SSO между разными Managed серверами необходимо наcтроить SAML.
SSO – (Single Sign-On) – однократная точка входа, организует доступ к защищенным ресурсам без вторичного запроса у пользователя прохождения процесса аутентификации, в частном случае без вторичного запроса пароля.
Итак, целью данной статья ставится описание процесса настройки SAML2 в домене WebLogic, где установлены UCM и BPM на разных Managed серверах.
На представленном выше рисунке Admin сервер будет выступать в роли SAML2 Identity Provider, то есть стороной выполняющей аутентификацию пользователей. Для чего на Admin сервер будет размещено собственное приложение со страницей входа.
На Managed серверах будут установлены приложения UCM и BPM, а сами Managed сервера будут являться SAML2 Service Provider. В такой реализации приложения UCM и BPM должны будут не аутентифицированных пользователей перенаправлять на Admin сервер для ввода логин и пароля на нашей странице входа. После выполнения успешного входа пользователи будут обратно перенаправлены на страницу приложения. При последующем обращении к другому приложению, в рамках текущего интернет обозревателя, пользователи будут автоматически идентифицированы при помощи SAML2 протокола.
Особенности:
В данном примере используются демо сертификаты, что допустимо только для иллюстрации данного решения.
Параметры данного решения:
Hostname сервера: ecm11g
Weblogic домен: base-domain
| Hostname (virtualhost) | Weblogic Server name: port | Приложение |
| ecm11g | AdminServer : 7001 | saml2IdP, страница логона |
| ecm11g-bpm | (Managed) soa_server1 : 8001 | SOA suite, BPM |
| ecm11g-ucm | (Managed) ucm_server1 : 16200 | UCM |
Имена серверов ecm11g, ecm11g-bpm, ecm11g-ucm должны распознаваться самим сервером и клиентской машиной, то есть по крайне мере должны быть прописаны в файле hosts.
Настройка приложений:
На Admin сервере будет размещено приложение saml2IdP, выполняющее функцию запроса логина и пароля у пользователя и выполняющее обратное перенаправление пользователя в приложение при успешной аутентификации.
Функцию перенаправления в приложение выполняет файл saml2login.jsp :
<% response.sendRedirect(response.encodeRedirectURL(“/saml2/idp/sso/login-return”)); %>
В файле web.xml описана защита ресурса saml2login:
<servlet>
<servlet-name>saml2login</servlet-name>
<jsp-file>saml2login.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>saml2login</servlet-name>
<url-pattern>/saml2login</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>saml2login</web-resource-name>
<url-pattern>/saml2login</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<description>These are the roles who have access.</description>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>myrealm</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/fail_login.htm</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>These are the roles who have access</description>
<role-name>saml2-role</role-name>
</security-role>
В файле weblogic.xml описано назначение роли saml2-role для всех пользователей.
<context-root>/saml2IdP</context-root>
<security-role-assignment>
<role-name>saml2-role</role-name>
<principal-name>users</principal-name>
</security-role-assignment>
В приложениях UCM и BPM метод аутентификации уже стоит по умолчанию <auth-method>CLIENT-CERT</auth-method>.
Настройка Realm Providers:
Создание Realm > Providers > Credential Mapping:
- Создать новый SAML2 Credential Mapper провайдер (saml2CMP): myrealm > Providers > Credential Mapping
- После создания зайти в данный провайдер saml2CMP > provider specific
- Заполнить значения:
- Issuer URI: saml2CMP
- Name Qualifier: ecm11g
- WS Assertion Signing Key Alias: DemoIdentity
- WS Assertion Signing Key Pass Phrase: DemoIdentityPassPhrase
- Generate Attributes: true
- Сохраняем изменения
Создание Realm > Providers> Authentication Provider:
- Создать новый SAML2 Identity Assertion Provider провайдер (saml2AP): myrealm > Providers > Authentication
- Сохраняем и перегружаем Admin сервер
Настройка серверов:
Настройка Admin сервера:
- Выбрать в консоли AdminServer > Federation Services > SAML 2.0 General
- Заполнить значения:
- Site Info – описательные поля
- Published Site URL: http://ecm11g:7001/saml2
- Entity ID: saml2IdP
- Recipient Check Enabled: true
- Transport Layer Security Key Alias: DemoIdentity
- Transport Layer Security Pass Phrase: DemoIdentityPassPhrase
- Only Accept Signed Artifact Requests: true (будет доступно для изменений после установки значений во вкладке SAML2.0 Identity Provider)
- SSO Signing Key Alias: DemoIdentity
- SSO Signing Pass Phrase: DemoIdentityPassPhrase
- Сохранить изменения
- Выбрать в консоли AdminServer > Federation Services > SAML 2.0 Identity Provider
- Заполнить значения:
- Enabled: true
- Only Accept Signed Authentication Requests: true
- Login Customized: true
- Login URL: /appA/saml2login
- POST Binding Enabled: true
- Redirect Binding Enabled: true
- Artifact Binding Enabled: true
- Сохранить изменения и перегрузить AdminServer
- Выбрать в консоли AdminServer > Federation Services > SAML 2.0 General
- Сохранить профиль в виде файла (Publish metadata): user_projects\domains\base_domain\metadata_admin.xml
Настройка ucm_server1:
- Выбрать в консоли ucm_server1 > Federation Services > SAML 2.0 General
- Заполнить значения:
- Site Info – описательные поля
- Published Site URL: http://ecm11g-ucm:16200/saml2
- Entity ID: saml2SPucm
- Recipient Check Enabled: true
- Transport Layer Security Key Alias: DemoIdentity
- Transport Layer Security Pass Phrase: DemoIdentityPassPhrase
- Only Accept Signed Artifact Requests: true (будет доступно для изменений после установки значений во вкладке SAML2.0 Service Provider)
- SSO Signing Key Alias: DemoIdentity
- SSO Signing Pass Phrase: DemoIdentityPassPhrase
- Сохранить изменения
- Выбрать в консоли ucm_server1 > Federation Services > SAML 2.0 Service Provider
- Заполнить значения:
- Enabled: true
- Always Sign Authentication Requests: true
- Force Authentication: true
- Passive: false
- Only Accept Signed Assertions: true
- POST Binding Enabled: true
- Redirect Binding Enabled: true
- Artifact Binding Enabled: true
- Сохранить изменения и перегрузить сервера
- Выбрать в консоли ucm_server1 > Federation Services > SAML 2.0 General
- Сохранить профиль в виде файла (Publish metadata): user_projects\domains\base_domain\metadata_ucm.xml
Настройка soa_server1:
- Выбрать в консоли soa_server1 > Federation Services > SAML 2.0 General
- Заполнить значения:
- Site Info – описательные поля
- Published Site URL: http://ecm11g-bpm:8001/saml2
- Entity ID: saml2APbpm
- Recipient Check Enabled: true
- Transport Layer Security Key Alias: DemoIdentity
- Transport Layer Security Pass Phrase: DemoIdentityPassPhrase
- Only Accept Signed Artifact Requests: true (будет доступно для изменений после установки значений во вкладке SAML2.0 Service Provider)
- SSO Signing Key Alias: DemoIdentity
- SSO Signing Pass Phrase: DemoIdentityPassPhrase
- Сохранить изменения
- Выбрать в консоли soa_server1 > Federation Services > SAML 2.0 Service Provider
- Заполнить значения:
- Enabled: true
- Always Sign Authentication Requests: true
- Force Authentication: true
- Passive: false
- Only Accept Signed Assertions: true
- POST Binding Enabled: true
- Redirect Binding Enabled: true
- Artifact Binding Enabled: true
- Сохранить изменения и перегрузить сервера
- Выбрать в консоли soa_server1 > Federation Services > SAML 2.0 General
- Сохранить профиль в виде файла (Publish metadata): user_projects\domains\base_domain\metadata_bpm.xml
Загрузка metadata профилей:
- Выбрать в консоли домена провайдер saml2AP: myrealm > Providers > Authentication > saml2AP > Management
- Создать новый provider partner (admin) : New > New Web Single Sign-On Identity Provider Partner >metadata_admin.xml
- Зайти в созданный Identity Provider Partner: admin
- Заполнить значения:
- Enabled: true
- Virtual User: false
- Redirect URIs:
- Process Attributes: true
- Only Accept Signed Authentication Requests: true
- Only Accept Signed Artifact Requests: true
- Send Artifact via POST: false
/cs/idcplg
/adfAuthentication
/bpm/workspace/faces/jsf/worklist/worklist.jspx
- Сохранить изменения
- Выбрать в консоли домена провайдер saml2CMP: myrealm > Providers > Credential Mapping > saml2CMP > Management
- Создать новый provider partner (ucm): New > New Web Single Sign-On Service Provider Partner >metadata_ucm.xml
- Зайти в созданный Service Provider Partner: ucm
- Заполнить значения:
- Enabled: true
- Time to Live: 120
- Time to Live Offset: -5
- Generate Attributes: true
- Include One Time Use Condition: false
- Key Info Included: true
- Only Accept Signed Assertions: true
- Only Accept Signed Authentication Requests: true
- Only Accept Signed Artifact Requests: true
- Send Artifact via POST: false
- Сохранить изменения
- Выбрать в консоли домена провайдер saml2CMP: myrealm > Providers > Credential Mapping > saml2CMP > Management
- Создать новый provider partner (bpm): New > New Web Single Sign-On Service Provider Partner >metadata_bpm.xml
- Зайти в созданный Service Provider Partner: bpm
- Заполнить значения:
- Enabled: true
- Time to Live: 120
- Time to Live Offset: -5
- Generate Attributes: true
- Include One Time Use Condition: false
- Key Info Included: true
- Only Accept Signed Assertions: true
- Only Accept Signed Authentication Requests: true
- Only Accept Signed Artifact Requests: true
- Send Artifact via POST: false
- Сохранить изменения
- Для «надежности» перегрузить Admin сервер.
Результат:
- На странице UCM http://ecm11g-ucm:16200/cs/ для входа в систему переходим по ссылке Login
- Нас переправляют на страницу нашего приложения http://ecm11g:7001/saml2IdP/login.jsp для ввода логина и пароля
- Если были введены не правильные учетные данные, то открывается окно с соответствующим сообщением и ссылкой на страницу логона.
- После успешного ввода логина и пароля нас переправляют обратно в UCM
- Если же в другой вкладке обратиться к странице BPM http://ecm11g-bpm:8001/bpm/workspace/ то мы автоматически без запроса логина и пароля попадает на ресурс BPM. При этом открытая сессия UCM не обрывается.
- Также возможен и другой вариант: сначала обращаемся к ресурсу BPM, логинимся через собственное приложение, и уже без запроса логина и пароля получаем доступ к приложению UCM.





























{ 2 комментарии… read them below or add one }
Роман, спасибо
супер – актуальный пост. Подскажите эта метода будет работать с WebCenter?
Или же все таки смотреть на полноценные SSO решения?
Спасибо
Михаил, эта модель работает в принципе для приложений задеплоиных в Weblogic и использующих для аутентификации провайдеры Weblogic. Применение этого решения не ограничивается рамками UCM и BPM. Поэтому я не вижу каких-либо противоречий для использования этого решения и для WebCenter, или какого-либо другого приложения.
Но все таки, если уже есть система реализующая SSO (например Oracle AM, Oracle SSO), то с моей точки зрения правильнее использовать именно SSO систему.