Modificando as telas do CAS

outubro 5, 2009

O CAS utiliza o conceito de temas para definição do layout de suas telas. Por padrão é aplicado um tema chamado default.
Para modificar o CAS com os seus temas, é necessário o seguinte:

Modificar o arquivo cas.properties, alterando as propriedades cas.themeResolver.defaultThemeName com o nome do seu tema e cas.viewResolver.basename com o nome do arquivo properties que conterá os mapeamentos das views. Por exemplo:


#cas.themeResolver.defaultThemeName=default
#cas.viewResolver.basename=default_views

cas.themeResolver.defaultThemeName=obaoba
cas.viewResolver.basename=obaoba_views

Neste caso, o cas utilizará os mapeamentos de view do arquivo obaoba_views.properties. Portanto, é necessário criar tal arquivo. Basta criar uma cópia do default_views.properties que vem com o CAS e alterar a localização dos jps para um diretório que contenha as sua páginas personalizadas. Neste caso também vale a dica de copiar o diretório existente WEB-INF/view/jsp/default, renomeá-lo e efetuar as suas personalizações. Note que as páginas existentes nesse diretório devem ser referenciadas no arquivo obaoba_views.properties.

Seguindo essas dicas, você estará modificando o tema padrão da sua instalação do CAS. Ainda é possível associar temas aos serviços que são protegidos pelo CAS através do cadastro de serviços, dessa maneira cada aplicação protegida pode ter o seu layout específico na tela de login, tudo isso dentro de uma única instalação do CAS.


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.