Introducción a CAS

15
33498

Introducción a CAS (Central Authentication Service)

0. Índice de
contenidos.

1. Introducción

CAS (Central Authentication Service) es de una aplicación web
que nos
permite implementar el conocido SSO (Single Sign On) que es un
procedimiento de autenticación que habilita a un usuario para
acceder a
distintas aplicaciones web (en distintos dominios y en distintos
servidores) con hacer login una única vez.

En general, cuando un usuario se conecta a una de estas aplicaciones el
sistema comprueba si está autenticado y si no lo está, lo
redirige a la
pantalla del servidor de autenticación. Si la
autenticación es correcta
el sistema de autenticación, en este caso CAS, vuelve a
redirigir al
usuario a la página a la que quería acceder en un primer
momento.

Que implica esto para los que desarrollamos, que no tenemos que
preocuparnos por mantener la seguridad y tener un formulario de login
en cada una de las aplicaciones web que desarrollemos, sino que simplemente
tendremos que hacer la comprobación de si el usuario ya
está
registrado, que es tan sencillo como preguntar a la request de esta
forma: request.getRemoteUser()

Si el método devuelve null es que no está registrado y
será
redireccionado a la página de login de CAS. Si ya está
registrado por
CAS, esté método devolverá un valor con el que
sabremos que es un
usuario registrado.

Algo que tiene que quedar muy claro es que CAS se encarga única
y
exclusivamente de la autenticación es decir, de comprobar contra
una
fuente de datos especifica si el usuario y contraseña
facilitados
existen, NO se encarga de la autorización, que sería la
gestión de lo
que puede o no puede hacer ese usuario en función de sus roles.

Para tener además autorización, CAS se integra
fácilmente con Spring
Security.

2. Entorno

El tutorial est&aacute escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 17″ (2,6 Ghz Intel Core i7, 8 GB DDR3)
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.4
  • CAS Server 3.4.2.1

3. Instalación

Primero nos hacemos con los binarios de la última versión
en esta
dirección: http://www.jasig.org/cas/download

Descomprimimos el contenido en una carpeta a la que conoceremos como
CAS_HOME. Si entramos en CAS_HOME podremos comprobar que el producto se
distribuye en distintos proyectos de tipo Maven con todos los fuentes,
por lo que necesitamos tener Maven instalado en la máquina.

Para hacer una prueba rápida del producto, abrimos un terminal y
nos
situamos dentro de la carpeta CAS_HOME/cas-server-webapp y ejecutamos:
mvn clean install

Esta sentencia (después de unos minutos) creará en el
directorio
CAS_HOME/cas-server-webapp/target un fichero cas.war listo para ser
desplegado en cualquier servidor de aplicaciones.

Probamos a desplegarlo en un Apache Tomcat y este es el resultado:

Por defecto, este producto viene con un sistema de autenticación
de
prueba que es tan sencillo como que el campo “NetId” y el campo
“Contraseña” coincidan. De esta forma cuando ponemos los campos
iguales
obtenemos la siguiente pantalla:

4. Conclusiones

Este es un sistema muy sencillo para olvidarnos de las tediosas tareas
relacionadas con la seguridad como la creación del típico
formulario de login en todas nuestras aplicaciones web. Podemos delegar
la autenticación en este producto y conectarlo con cualquier
fuente de datos de usuarios: base de datos, LDAP, ActiveDirectory, …
De esta forma podremos tener centralizada toda esta información
y los mantenimientos serán mucho más sencillos.

No olvideis que esto es sólo un sistema de autenticación,
por lo que si queréis también autorización
tendréis que recurrir a integrarlo con Spring Security.

En posteriores tutoriales veremos como establecer nuestro propio
sistema de
autenticación y como integrarlo con Spring Security.

Saludos.

15 Comentarios

  1. Hola, solo me queda una duda con respecto al CAS. Las aplicaciones Cliente, ¿necseitan estar en el mismo servidor de aplicaciones o es lo mismo? ¿Pueden ser de distintas tecnologias?

    gracias

  2. Hola fsd,

    las aplicaciones clientes no tienen porque estar en el mismo servidor de aplicaciones donde este corriendo CAS, pero todas tienen que estar implementadas con tecnología J2EE.

    Saludos

  3. Hola

    Están excelentes los tutoriales sobre CAS, Tengo una duda, la licencia para la utilización de esta solución es free o tiene licencia comercial y hay que pagar para ser utilizado.

    Muchas Gracias.

  4. Hola,

    Una pregunta, la versión de MAVEN que empleas para realizar la prueba rápida del producto cuál es?? Pues yo estoy usando la 3.3.9 y al final no se me pudo generar el .war para ser desplegado en el tomcat.

    Gracias de antemano y un saludo.

    Miguel

  5. Hola Miguel,

    No sabría decirte exactamente la versión de maven que usé para hacer este tutorial, si nos indicas el error quizás te podamos ayudar mejor.

    Saludos

  6. Hola.

    Tengo el mismo problema de Miguel.

    Estoy usando la ultima version del maven 3.3.9.

    Y al ejecutar mvn clean install, me lanza este error:

    [ERROR] The goal you specified requires a project to execute but there is no POM in this directory (D:Respaldo_Unidad_Cjavacas_projectcas-server-webapp). Please verify you invoked Maven from the correct directory. -> [Help 1]

    Si me pueden ayudar.

    Muchas gracias.

    Saludos.

    • Saludos Ramon tengo el mismo problema que tu quisiera saber como lo solucionaste o con que version de Maven trabajaste para solucionar el error The goal you specified requires a project to execute but there is no POM in this directory estare agradecido por tu pronta respuesta

  7. Hola.

    Muy buena información, pero tengo una duda y es la siguiente. ¿Realmente se mantiene la sesión de sistemas alojados en distintos servidores? y si es así, como lo hace?

    Gracias, saludos!

  8. Hola!
    Como puedo lograr que cas realice la autenticación en distintos dominios y en distintos servidores?
    Estoy trabajando con aplicaciones php por lo que utilizo PhpCAS y funciona bien cuando todas las aplicaciones están en el mismo servidor que cas (máquina virtual) y hasta si una de las aplicaciones está fuera de la máquina virtual pero en el mismo equipo, el problema es cuando coloco una aplicación en una máquina distinta, al acceder a ella me pide el login y emite el ticket o eso es lo que parece ya que en la url sale ticketblablabla pero no me deja entrar a la aplicación como tal.

  9. Hola Beatriz,

    Este es el caso típico de problema con el dominio de la cookie. Tienes que tener en cuenta que todas las aplicaciones que quieras tener gestionadas con CAS tengan el mismo dominio o estén dentro de un subdominio del principal.

    Saludos

  10. Hola,
    Tengo la siguiente situación:
    El problema está dado cuando quiero que dos o más máquinas con dos servicios diferentes (en mi caso son dos Tomcat, uno con pentaho y otro con liferay y cas ) utilicen el mismo certificado

    Pasa lo siguiente: cuando se intenta entrar con el cas desde pentaho este redirecciona a la página del cas para ingresar las credenciales y autenticarse siendo exitoso el cas da un error con la firma digital

    Este mismo escenario pero con todos los servicios desplegados en una única maquina no ocurre. El cas autentica correctamente y luego redirecciona al usuario a la aplicación que hizo el request para autenticarse.

    Qué puedo hacer para darle solución a esto?

    Saludos y gracias.

  11. Hola,

    Tengo un problema estoy trabajando con el proyecto de CAS (cas-overlay-template), y me encuentro en una situación donde después de personalizar la interfaz y realizar el filtro para la conexión, necesito guardar los datos de usuario cuando este se autentica por medio (Facebook, Google) en una base de datos y no encuentro la solución si me puede ayudar u orientar sobre este tema se lo agradecería.

    Gracias, Saludo.

Dejar respuesta

Please enter your comment!
Please enter your name here