Настраиваем SSO c использованием SAML2 на примере UCM и BPM

Автор Роман Пугин Дата 01.06.2011

Категории Fusion Middleware,Общее,Руководства,Управление правами доступа,Учебное пособие

Как известно 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:
    • /cs/idcplg

      /adfAuthentication

      /bpm/workspace/faces/jsf/worklist/worklist.jspx

    • Process Attributes: 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 (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

  • Если же в другой вкладке обратиться к странице BPM http://ecm11g-bpm:8001/bpm/workspace/ то мы автоматически без запроса логина и пароля попадает на ресурс BPM. При этом открытая сессия UCM не обрывается.

  • Также возможен и другой вариант: сначала обращаемся к ресурсу BPM, логинимся через собственное приложение, и уже без запроса логина и пароля получаем доступ к приложению UCM.
Социальные сети
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • Reddit
  • StumbleUpon
  • Technorati
  • Twitter

{ 2 комментарии… read them below or add one }

Михаил М. 04.07.2011 в 15:05

Роман, спасибо
супер – актуальный пост. Подскажите эта метода будет работать с WebCenter?
Или же все таки смотреть на полноценные SSO решения?

Спасибо

Ответить

Роман Пугин 04.07.2011 в 16:16

​Михаил, эта модель работает в принципе для приложений задеплоиных в Weblogic и использующих для аутентификации провайдеры Weblogic. Применение этого решения не ограничивается рамками UCM и BPM. Поэтому я не вижу каких-либо противоречий для использования этого решения и для WebCenter, или какого-либо другого приложения.
Но все таки, если уже есть система реализующая SSO (например Oracle AM, Oracle SSO), то с моей точки зрения правильнее использовать именно SSO систему.

Ответить

Оставить комментарий

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Предыдущий пост:

Следующий пост: