Date de création : | 4 décembre 2003 | |
Dernière modification : | 9 décembre 2003 | |
Diffusion : | internet |
Ce document présente l'utilisation de CASFilter pour la CAS-ification d'une appli serveur java.
Se reporter au document client CAS java pour d'autres informations sur la CAS-ification d'une temme appli.
La technique de filtre J2EE permet de n'autoriser l'accès à certaines URLs d'une serlvet java que si un filtre (en fait, une classe java) l'autorise.
Les filtres sont appliqués par rapport à des patterns d'urls (/chemin/*, /chemin/*.doc, ...)
Si une url est filtrée, le serveur d'application invoque un appel au filtre à la place de cette url. Il est aussi possible de combiner plusieurs filtres pour un meme pattern d'url.
L'intérêt est de pouvoir paramétrer ce filtre dans le fichier
web.xml de l'application, donc sans intervenir dans le code source.
Il serait ainsi possible de changer le mode d'authentification d'une application
sans toucher au code de celle-ci.
La classe fournie par le package CAS est edu. yale .its.tp. cas .client.filter.CASFilter.
Le principe du filtre CAS est, dans le cas où l'utilisateur n'est pas préalablement authentifié CAS, de rediriger son navigateur web vers la page de login CAS et de valider ensuite le ticket obtenu avant de lui donner accès à l'url protégée. Une variable de session contenant le login validé par CAS est positionnée et est accessible par les programmes java.
Ce filtre positionne une variable de requete, accessible dans l'application protégée de cette manière :
String casUser = (String) session.getAttribute(edu.yale.its.tp.cas.client.filter.CASFilter.CAS_FILTER_USER);
En fait, le filtre CASFilter est également capable de valider un proxy ticket
la configuration d'un filtre est propre à un contexte ; pour celà, on utilise le fichier web.xml.
Les différents paramètres du filtre sont :
edu.yale.its.tp.cas.client.filter.loginUrl | l'url de login sur le serveur cas |
edu.yale.its.tp.cas.client.filter.validateUrl | l'url pour la validation du ticket |
edu.yale.its.tp.cas.client.filter.authorizedProxy | eventuellement le ou les proxy(ies) autorisé(s) |
edu.yale.its.tp.cas.client.filter.serviceUrl | optionnel : le service a protéger, on peut n'indiquer que le nom du serveur |
edu.yale.its.tp.cas.client.filter.renew | agit sur le parametre renew pour la demande d'un ticket |
edu.yale.its.tp.cas.client.filter.serverName | le nom du serveur sur lequel tourne le filtre (et les urls a protéger) |
ATTENTION :
Pour respecter la dtd du web.xml, il faut que l'élément filter et l'élément filter-mapping soient précisés dans cet ordre, et situés entre l'élément context-param et le premier élément servlet.
Voici un extrait, concernant la déclaration d'un filtre CASFilter.
Respecter l'ordre dans le fichier web.xml, voir la remarque précédente.
<filter>
<filter-name>Filtre CAS</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://auth.univ.fr/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://auth.univ.fr/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>ent.univ.fr</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filtre CAS</filter-name>
<url-pattern>/private/*</url-pattern>
</filter-mapping>
Voici un jsp d'exemple, situé dans l'uri /private :
<%@ page import="edu.yale.its.tp.cas.client.*"%>
<% String casUser = (String) session.getAttribute(edu.yale.its.tp.cas.client.filter.CASFilter.CAS_FILTER_USER); %> <html> <head> </head> <body> <h1>Bonjour <%out.println(casUser);%></h1> </body> </html>
Création : 4 décembre 2003 - Jean-Guy Avelin | |
Modifications : |