...
Info | ||
---|---|---|
| ||
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 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 language xml <?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 | ||||
---|---|---|---|---|
| ||||
<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
Descomentar las siguientes propiedades del archivo
...
<o3bi>/liferay/portal-ext.properties:
Code Block
...
o3.autologin.validator=com.ideasoft.cs.ejb.ticket.DbTicketValidator dbticket.datasource=java:/
...
comp/env/jdbc/TicketDB
Se puede especificar también la propiedad dbticket.expiration de la misma manera que para
...
la configuración de O3Web.
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.O3AutoLoginAgregar 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"/>