Introducción a CAS

En este tutorial vamos a ver una herramienta que nos permite implementar Single Sign On en nuestras aplicaciones

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.

Comentarios

15 respuestas

  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.

    1. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática, especialidad en Ingeniería del Software.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

22/06/2026

Juan Antonio Jiménez Torres

Vamos a instrumentalizar un SDD para un microservicio bancario. En este artículo sobre SDD - Spec Driven Development, instrumentalizado sobre OpenSpec vamos a construir una PoC de algo más serio que una tabla periódica. Un microservicio bancario muy simplificado que gestione cuentas y permita hacer transferencias

16/06/2026

Juan Antonio Jiménez Torres

Este es el segundo artículo sobre SDD, Spec Driven Development, instrumentalizado sobre OpenSpec. Pero esta vez nos acercaremos usando softwere gratuito. Por un lado OpenCode en lugar de ClaudeCode y usando el modelo gratuito Gemma4 de Google en lugar de otros de pago.

08/06/2026

Juan Antonio Jiménez Torres

Aprenderemos sobre SDD – Spec Driven Development instrumentalizado sobre OpenSpec. Haremos un primer acercamiento usando ClaudeCode con Sonnet, para luego, en un artículo posterior pasarnos a la versión gratuita de OpenCode con Gemma4