CAS: Validador personalizado

CAS: Validador personalizado

0. Índice de contenidos.

1. Introducción

Antes de seguir este tutorial os recomiendo que le echéis un vistazo al anterior de introducción a CAS, para entender de que se trata y poder instalar el producto. Introducción a CAS.

También os puede interesar personalizar la interfaz de CAS, podéis encontrar cómo en este tutorial CAS: Personalización de la interfaz

En este vamos a abordar como cambiar el validador que viene por defecto con CAS, que consiste en comparar usuario y contraseña y si son iguales darlo por bueno, por uno un poco más elaborado que acceda a una base de datos para ver si el usuario con esa contraseña existe.

2. Entorno

Este tutorial está 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. Creación del validador

Para crear el validador tenemos que crear un proyecto y que mejor forma de hacerlo que con Maven. Para ello vamos a abrir un terminal y ejecutar:
Ahora editamos el fichero pom.xml del proyecto para añadir las siguientes dependencias:
Lo siguiente que tenemos que hacer es crear una nueva clase que herede de la clase AbstractUsernamePasswordAuthenticationHandler lo que nos obliga a implementar el método authenticateUsernamePasswordInternal(UsernamePasswordCredentials credentials) donde recibimos el usuario y la contraseña del usuario que se quiere logar. Un ejemplo de implementación podría ser este:

4. Configuración de CAS

Una vez implementado el validador tenemos que configurar CAS para que lo utilice en vez del que utiliza por defecto. Para ello vamos a empaquetar nuestro proyecto ejecutando en un terminal “mvn clean package”, el .war resultante lo copiamos dentro de la carpeta %CAS_WEBAPP_HOME%/WEB-INF/lib para que la clase pueda ser accedida por CAS.

Por último, tenemos que editar el fichero %CAS_WEBAPP_HOME%/WEB-INF/deployerConfigContext.xml, buscamos la sección “authenticationHandlers” y sustituimos la clase que trae por defecto (“org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler”) por la nuestra (com.autentia.democas.DemoCasValidador):
Para configurar el datasource del que hace uso nuestra clase vamos a editar el fichero %TOMCAT_HOME%/conf/context.xml para añadir la declaración del datasource de esta forma:
Ya sólo nos queda reiniciar el servidor y comprobar que ahora para validarse en CAS tienes que estar registrado en la base de datos.

5. Conclusiones

Como era de esperar no es díficil modificar el validador que CAS trae por defecto por el que se ajuste a nuestras necesidades. En este tutorial hemos visto como logarse contra una base de datos pero esto es extensible para cualquier fuentes de datos como LDAP o Active Directory.

Saludos.