Está en la página 1de 3

Material soporte Identidad Digital (MISTIC)

Ejemplo uso CAS y Spring Security en una aplicación web

Introducción

En este manual mostraremos como aplicar control de acceso a una aplicación web java
mediante un servidor CAS single sign-on que se encargará de realizar la autenticación de los
usuarios y el framework Spring Security que nos proporcionará la etapa de autorización
mediante roles.

Este manual se ha realizado considerando la versión 4.0.0 de CAS;


Link con documentación de soporte:
https://apereo.github.io/cas/4.0.x/installation/Configuring-Authentication-Components.html

Diagrama en alto nivel del acceso a un recurso protegido mediante CAS y Spring Security:
Preparar un servidor CAS

1) Descargar el ZIP/TAR.GZ con el Apache-Tomcat 8.5.X (Binary Distribution – Core) de:


https://tomcat.apache.org/download-80.cgi

2) Descomprimir y copiar el Tomcat en dos carpetas bajo /opt del entorno de trabajo (Virtual
Box + Debian). Una carpeta llamada CAS y otra carpeta llamada APP, inicialmente con los
mismos contenidos.

*NOTA*: Se asume que el entorno de trabajo tiene el JDK correctamente instalado y la


variable de entorno JAVA_HOME correctamente definida.

3) Dado que acabaremos teniendo dos apache-tomcat distintos ejecutándose


simultáneamente en la misma máquina, es necesario cambiar los puertos por defecto del
servidor web. Para este ejemplo, configuraremos el HTTP connector para que escuche
peticiones en el puerto 8090 del tomcat en la carpeta CAS. Dicho cambio se realiza en el
fichero /conf/server.xml.

*NOTA*: En el server.xml se definen otros puertos. Hay que tener cuidado que los puertos de
cada tomcat sean diferentes. Si arrancamos un segundo tomcat con puertos coincidentes,
aunque no se estén usando, dará error y se cerrará.

4) Descargar el ZIP con el CAS Server 4.0.0 de:


https://github.com/Jasig/cas/releases/download/v4.0.0/cas-server-4.0.0-release.zip

5) Obtener el cas-server-webapp-4.0.0.war de la carpeta /modules del ZIP descargado y


situarlo en la carpeta /webapps del servidor apache-tomcat situado en la carpeta CAS
instalado en el punto 1. Al arrancar el tomcat, el .war se descomprimirá automáticamente y la
carpeta con el CAS Server estará situada dentro de la carpeta /webapps.

6) Abrir un browser para conectar con el servidor CAS:


http://localhost:8090/cas-server-webapp-4.0.0/login

7) Comprobar que la autenticación se realiza correctamente. Por defecto, el servidor CAS 4.0.0
utiliza el AcceptUsersAuthenticationHandler para autenticar a los usuarios. Este handler utiliza
para dicha tarea una lista de parejas login/password harcodeada en el fichero de configuración
del CAS (/WEB-INF/deployerConfigContext.xml). La pareja login/password que viene por
defecto es “casuser”/”Mellon”. Este handler aparece en la documentación del CAS dentro de la
categoría “Whitelist Authentication”.

8) Para realizar la integración con OpenLDAP, Para integrar CAS con OpenLDAP necesitaréis
como mínimo las librerías:

ldaptive-1.1.0.jar: http://central.maven.org/maven2/org/ldaptive/ldaptive/1.1.0/ldaptive-
1.1.0.jar

cas-server-support-ldap-4.0.0.jar: http://central.maven.org/maven2/org/jasig/cas/cas-server-
support-ldap/4.0.0/cas-server-support-ldap-4.0.0.jar

Estas librerías deben situarse en el directorio lib del cas server, es decir
/opt/CAS/webapps/cas-server-webapp-4.0.0/WEB-INF/lib
Preparar una aplicación web CASificada basada en Spring Security

1) Se utilizará el tomcat APP (situado en la carpeta APP). Dado que ya hemos modificado los
puertos del Apache-Tomcat CAS (situado en la carpeta CAS), no tenemos que hacer ninguna
modificación en este nuevo servidor. De todas maneras, se recomienda comprobar que no
haya ningún puerto coincidente.

2) Obtener la aplicación web facilitada por el consultor dentro del fichero simplecasclient.zip y
situarla en la carpeta /webapps del servidor apache-tomcat APP.

3) La aplicación web proporcionada por el consultor implementa de forma muy simple unos
controles de acceso mediante roles sobre dos carpetas llamadas "secure" y "extreme". La
configuración actual de la aplicación sólo contempla un único usuario llamado "casuser" con
un rol asignado que sólo le da acceso a la carpeta "secure". La autenticación del usuario se
realiza conectando con un servidor CAS.

4) Arrancar el apache-tomcat y utilizar un browser para conectar con la aplicación CASificada.


En mi caso, la URL es: http://localhost:8080/simplecasclient/

5) Comprobar que la aplicación funciona correctamente y se conecta satisfactoriamente con el


servidor CAS preparado en la sección anterior.

Algunas consideraciones adicionales


Tanto el servidor CAS como la aplicación web CASificada utilizan el framework Spring.
El archivo de configuración de cualquier proyecto basado en Spring es la parte principal del
mismo y, generalmente, se encuentra en la carpeta /WEB-INF. El nombre de este archivo suele
ser applicationContext.xml, deployerConfigContext.xml o similar.

Por ejemplo, en el caso de la aplicación simplecasclient, en este fichero


(applicationContext.xml) se realiza la asignación de roles, el control de acceso a las carpetas
protegidas y se configura la localización del servidor CAS (la URL) donde se llevará a cabo la
autenticación. Se recomienda al alumno familiarizarse con este archivo y comprobar
especialmente que las URLs indicadas en este fichero se correspondan con el entorno
desarrollado por el alumno en su propia máquina.

Como ya se ha dicho, la aplicación CASificada facilitada por el consultor está configurada para
trabajar únicamente con un usuario llamado "casuser". Este usuario tiene asignado el rol
“ROLE_USER”, el cual no le permite acceder a la carpeta "extreme". Un primer paso para
probar el funcionamiento de la aplicación de ejemplo sería crear un nuevo usuario con los
roles necesarios para acceder a todos los recursos protegidos. Cabe destacar que, con la
configuración por defecto, Spring Security requiere que los roles utilizados contengan el prefijo
“ROLE_”. Se deberá tener en cuenta este punto a la hora de crear nuevos roles.

En el caso del servidor CAS, en su fichero de configuración (deployerConfigContext.xml) se


puede modificar la forma de realizar la autenticación de los usuarios, entre otras opciones.
Cabe destacar que Spring es un framework bastante potente (y puede resultar complejo) y que
el objetivo de esta práctica es simplemente trabajar con él de forma tangencial para
implementar el control de acceso de la aplicación propuesta. Por tanto, no se pide al alumno
que profundice mucho en su configuración y utilización. Simplemente debe asimilar los
conceptos básicos necesarios para implementar la solución requerida.

También podría gustarte