Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
titleNOTA

La funcionalidad descrita en este documento está disponible a partir de la versión 57.1.4.0-22

Introducción

Si bien una forma de integrarse con el Single Sign On de O3 es la adaptación de la aplicación existente para que utilice el CAS de O3, en muchas oportunidades esto es demasiado complejo y se requiere una alternativa más simple.

Excerpt

Este documento presenta una forma de integración con aplicaciones existentes (que realizan una validación previa del usuario) para que éstas redirijan a O3 incluyendo información de autenticación, que permita que el usuario no deba ingresar nuevamente las credenciales al acceder a los diferentes módulos web de O3.

Single Sign On de aplicaciones externas con los módulos web de O3

...

La URL generada por la aplicación para redirigir a O3 debe llevar el parámetro "_externalTicket" con el valor del ticket generado por la aplicación y almacenado en la base de datos.
Por ejemplo:

http://localhost:8080/o3portalo3web?_externalTicket=12345678

http://localhost:80808380/eportal/group/default?_externalTicket=12345678

...

  • Ejemplo de DataSource para una base Postgres MySql (jboss\server\default\deploy\gserver\ticket<o3bi>/jboss/standalone/deployments/Ticket-ds.xml).
Code Block
xml
xml

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
  <local-tx-datasource>
    <datasource jndi-name="java:jboss/datasources/TicketDS"
        pool-name="TicketDS" enabled="true" jta="true" use-java-context="true"
        <jndi-name>TicketDS</jndi-name>use-ccm="true">
        <connection-url>jdbc:postgresqlurl>
            jdbc:mysql://localhost:5432/ticket<5858/sso_tickets
        </connection-url>
        <driver>
            mysql
    <driver-class>org.postgresql.Driver</driver-class>    </driver>
        <security>
            <user-name>postgres<name>root</user-name>
			<password>root</password>
   <password>postgres</password>
      </security>
    </datasource>
</datasources>
  • Ejemplo de DataSource para una base Postgres (<o3bi>/jboss/standalone/deployments/Ticket-ds.xml).

    Code Block
    languagexml
    <?xml version="1.0" encoding="UTF-8"?>
    <datasources>
        <datasource jndi-name="java:jboss/datasources/TicketDS"
            pool-name="TicketDS" enabled="true" jta="true" use-java-context="true"
        

...

  •     use-ccm="true">
           

...

  •  <connection-url>
                jdbc:postgresql://localhost:5432/sso_tickets
            </

...

  • connection-url>
            <driver>
                postgres
            </

...

  • driver>
            <security>
                <user-name>postgres</user-name>
                <password>postgres</password>
            </security>
        </datasource>
    </datasources>

...

Poner el driver en jboss. Para esto leer el wiki: Cómo configurar RBAC de O3BI con Diferentes Bases de Datos que explica como poner un driver en jboss7

  • Script de creación de la tabla para PostgresMySQL
Code Block

CREATE TABLE ssoSSO_ticketsTICKETS
(
  ticketTicket character varying(100) NOT NULL,
  ticketTicket_tsTS timestamp without time zone NOT NULL,
  usernameUserName character varying(50) NOT NULL,
  CONSTRAINT pk_sso_tickets PRIMARY KEY (ticketTicket)
)
  • Ejemplo de insert para el usuario "admin"

    Code Block
    INSERT INTO `SSO_TICKETS` (`Ticket`, `Ticket_TS`, `UserName`) VALUES ('12345678', '2016-08-01 03:00:00', 'admin');

    Nota: acualizar la fecha para hacer el insert

Configuración de SSO en

...

O3Web

Se debe de configurar el filtro de CAS para habilitar la recepción y validación de tickets desde aplicaciones externas.

Para esto se deben descomentar las siguientes líneas hay que agregar en el archivo "<o3bi>/jboss/serverstandalone/default/deploy/gserver/0o3.ear/o3portaldeployments/o3-server.ear/o3web.war/o3web.war/WEB-INF/web.xml" los siguientes init-param en:

  • 2 filtros ("CASAuthenticationFilter" y "CAS Validation Filter")
  • un Servlet que se llama "o3WebLogoutServlet"

Code Block
xml
xml

<init-param>
	<param-name>ticket.validator</param-name>
	<param-value>com.ideasoft.cs.ejb.ticket.DbTicketValidator</param-value>
</init-param>
<init-param>
	<param-name>dbticket.datasource</param-name>
	<param-value>java:jboss/datasources/TicketDS</param-value>
</init-param>

Nombre de atributo

Descripción

Valor por Defecto

ticket.validator

El nombre de la clase Java utilizada para validar el ticket, para la validación contra base de datos presentada aquí debe utilizarse el valor presentado en el ejemplo

 

dbticket.datasource

Nombre JNDI del DataSource donde se declara el acceso a la base de datos que tiene la tabla con los tickets

 

dbticket.expiration

Tiempo para la expiración de los tickets expresada en segundos

86400 (un día)

Configuración de SSO para EPortal

  1. Descomentar las siguientes propiedades del archivo

...

  1. <o3bi>/liferay/portal-ext.properties: 

    Code Block

...

  1. o3.autologin.validator=com.ideasoft.cs.ejb.ticket.DbTicketValidator
    dbticket.datasource=java:/

...

  1. comp/env/jdbc/TicketDB

    Se puede especificar también la propiedad dbticket.expiration de la misma manera que para

...

  1. la configuración de O3Web.
     

  2. Agregar el "O3AutoLogin" en la property "auto.login.hooks".
    Debe queda así: auto.login.hooks=com.liferay.portal.security.auth.CASAutoLogin,com.liferay.portal.security.auth.FacebookAutoLogin,com.liferay.portal.security.auth.NtlmAutoLogin,com.liferay.portal.security.auth.OpenIdAutoLogin,com.liferay.portal.security.auth.OpenSSOAutoLogin,com.liferay.portal.security.auth.RememberMeAutoLogin,com.liferay.portal.security.auth.SiteMinderAutoLogin,biz.ideasoft.liferay.portal.login.O3AutoLogin


  3. Agregar la configuración de la Base de datos en liferay:
    Agregar el "Resource" en el archivo <o3bi>liferay/tomcat/conf/context.xml

    Ejemplo Mysql: 

    Code Block
    <Resource name="jdbc/TicketDB"
                auth="Container"
                type="javax.sql.DataSource"
                username="root"
                password="root"
                driverClassName="com.mysql.jdbc.Driver"
                url="jdbc:mysql://localhost:5858/sso_tickets"
    			validationQuery="select 1"
                maxActive="50"
                maxIdle="10"/>

    Ejemplo PostgreSQL:

     

    Code Block
    <Resource name="jdbc/TicketDB"
                auth="Container"
                type="javax.sql.DataSource"
                username="postgres"
                password="postgres"
                driverClassName="org.postgresql.Driver"
                url="jdbc:postgresql://localhost:5432/sso_tickets"
    			validationQuery="select 1"
                maxActive="50"
                maxIdle="10"/>