Personalizando o CAS

setembro 23, 2009

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

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.

Anúncios