Note |
---|
Under contruction |
Single Sign-On
...
in O3
La funcionalidad de O3's Single sign-on (login único) en las herramientas web de IdeaSoft se realiza mediante CAS.
Esta funcionalidad está habilitada por defecto como una válvula del Tomcat que ejecuta dentro del JBoss y que se encarga de interceptar el login y administrarlo correctamente a través de CAS.
Se encuentra definida en el archivo is performed through the use of CAS.
This functionality is enabled by default as a Tomcat Valve inside the JBoss. This valve intercepts the login and manages it through CAS.
This Valve is defined in the file <O3>/jboss/server/default/deploy/jbossweb-tomcat55.sar/server.xml:
Code Block |
---|
<!-- CAS SSO --> <Valve className="com.ideasoft.sso.cas.tomcat.CASSingleSignOnValve" debug="0" filteredApps="/o3process,/o3portal,/o3planner,/liferay"/> |
Propuesta para SSO entre una aplicación web existente y O3 utilizando mecanismo de ticket
Este es un ejemplo de cómo se puede implementar el macanismo de SSO para evitar el doble login en o3portal, considerando que el usuario ya se encuentra loqueado en otra aplicación (aplicación X, de ahora en más). Características de la implementación:
- Se utiliza un mecanismo de SSO basado en tickets.
- El ticket debe ser generado por la aplicación en la que se loguea el usuario y almacenado en una base de datos. El único requerimiento de dicha base de datos es que sea accesible por el servidor O3 a través de un driver JDBC.
- Los usuarios deben estar definidos en los dos sistemas (en la aplicación X y en O3). Dependiendo del respositorio de usuarios que la aplicación X proveea, se podrá integrar a O3 (por ejemplo LDAP), evitando tener que mantener la doble definición de usuarios.
Cómo funciona este mecanismo de SSO?:
- El usuario ingresa a la aplicación X, y en el momento que desea acceder al O3Portal se genera el ticket y se almacena en la base de datos (más adelante se propone el esquema de la tabla a utilizar).
- Cuando la aplicación genera un link al O3Portal, éste llevaría el ticket como argumento de la URL
- O3 recibe el ticket y consulta la base de datos, para validar el ticket y obtener el nombre del usuario conectado
- O3 es quien elimine de la base de datos el ticket inmediatamente después de ser validado el usuario.
Base de datos
...
SSO between a web application (X) and O3 using tickets
What follows is an example of how to implement the SSO mechanism to prevent the system to request multiple logins in the same session
Details about the implementation:
- SSO based on tickets is used.
- Ticket must be generated by the application where the user logs in, and stored in a database.
The only requirement about the database is that it should be accesible by the O3 Sesrver through a JDBC driver. - Users must be defined in both applications (X and O3).
Depending on the user repository configured for X, it might be possible to integrate it with O3's repository (i.e. LDAP), avoiding the duplication of users in two separate repositories.
How does this SSO mechanism work?
- User logs into application X. When the user wishes to swith to O3 Portal, a new ticket is generated and stored in the database. (following are more details about the database schema to use).
- When the application X provides a link to O3 Portal, this link should contain the ticket a part of the URL
- O3 receives the ticket, queries the database to validate it and retrieve the username
- O3 then eliminates the ticket from the database as soon as the user is validated.
Database
A table named SSO_TICKETS should exist with the following fields:
Campo | Tipo | Descripción |
---|---|---|
Ticket | Varchar(100) |
|
Ticket_TS | Timestamp Fecha | y hora de creación del ticket Date and time when the ticket was created |
UserName | Varchar(50) | Login del usuario conectado |
Expiración
...
Username of user connected |
Expiration
The field Ticket_TS is used to validate the ticket. The data in this field is used by O3 to make sure that the ticket has not been created for more than the predefined lifetime for the tickets. The expiration time is defined with a parameter.
Características que debería cumplir el ticket
El ticket puede ser cualquier texto pero es recomendable:
...
Un ejemplo de una clase Java que puede ayudar a esta implementación es java.rmi.server.UID
Configuración de SSO según la propuesta planteada.
Se debe de configurar una válvula que es la encargada de correr la lógica de verificación del ticket.
Para esto se debe de tener en cuenta los siguientes puntos:
...
Code Block |
---|
create table SSO_TICKETS(Ticket Varchar(100) NOT NULL ,Ticket_TS TIMESTAMP NOT NULL ,UserName Varchar(50) NOT NULL ,CONSTRAINT PK_SSO_TICKETS PRIMARY KEY(Ticket)) |
Problemas con CAS ejecutando detrás de un firewall
Cuando se utiliza O3 Portal detrás de un firewall puede ocurrir que luego de la pantalla de login aparezca una pantalla en blanco, esto es causado por un problema en el módulo de validación de CAS, que ocurre cuando el servidor no se puede conectar a si mismo con el nombre de host ingresado por el usuario en la URL del navegador.
Es decir que esto ocurre si el usuario accede a 'http://www.company.com/o3portal' y el servidor O3 no puede acceder al host www.company.com en el puerto 80.
...