O CAS (Central Authentication Service) é um projeto open-source com o objetivo de prover a funcionalidade de autenticação única (single sign-on) para aplicações web.
Neste post, explicarei como criar uma versão customizada do CAS para que suas aplicações façam uso do single sing-on da sua maneira.
Seguindo a recomendação do wiki do CAS, uma das maneiras de customizá-lo é criar um projeto maven de uma aplicação web, e adicionar como dependência a aplicação que vem no pacote do CAS.
Digamos que a empresa “Oba oba” queira autenticar suas aplicações utilizando o CAS:
1. Criar diretório para o projeto
mkdir cas-obaoba
cd cas-obaoba
mkdir -p src/main/webapp
gedit pom.xml
2. Criar o pom.xml descrevendo o projeto maven
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.obaoba.cas</groupId>
<artifactId>cas-obaoba</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>cas-obaoba - Aplicação de autenticação</name>
<description>Aplicação JA-SIG CAS customizada para a Oba oba.</description>
<dependencies>
<!-- aplicação web do CAS que será personalizada-->
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-webapp</artifactId>
<version>3.3.3</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-core</artifactId>
<version>3.3.3</version>
</dependency>
</dependencies>
<build>
<finalName>cas-obaoba</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>RELEASE</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<contextPath>cas-obaoba</contextPath>
<scanIntervalSeconds>5</scanIntervalSeconds>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>60000</maxIdleTime>
<confidentialPort>8443</confidentialPort>
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jasig-repository</id>
<name>JA-SIG Maven2 Repository</name>
<url>http://developer.ja-sig.org/maven2</url>
</repository>
</repositories>
</project>
3. Empacotar o projeto
mvn package
4. Copiar o conteúdo da aplicação web (xmls, jsps, css, javascripts, etc) que será personalizado.
cp -r target/cas-obaoba/* src/main/webapp/
5. Iniciar o servidor de desenvolvimento para confirmar que tudo deu certo.
mvn jetty:run
6. Abra http://localhost:8080/cas-obaoba no browser e verifique se a aplicação foi iniciada corretamente.
Imagem do browser exibindo a aplicação de login do CAS
Estes foram os passos básicos para iniciar um projeto de personalização do CAS. A partir deste projeto, é possível alterar o conteúdo que está em src/main/webapp para incorporar o layout da sua empresa, além de modificar as configurações do CAS no arquivo src/main/webapp/WEB-INF/deployerConfigContext.xml para utilizar AuthenticationHandlers específicos da sua instalação, bem como um TicketRegistry real de alta disponibilidade. Assuntos que possivelmente serão tratados em outros posts.