Groupe 1B (SSO et gestion des autorisations)

Date de création : 4 décembre 2003
Dernière modification : 8 décembre 2003
Diffusion : internet

Librairie client java pour CAS

Voir le diagramme de classe.

La distribution cas-client comporte entre autres une librairie client java pour CAS.

Deux techniques peuvent être utilisées pour CAS-ifier une application java serveur :

Ce document décrit rapidement la librairie 'bas niveau' CAS ; en fait, il présente des exemples d'utilisation.

Il est conseillé de consulter la documentation du CASFilter ; cette technique très intéressante permet de CAS-ifier facilement une application java serveur, quasiment sans modification de code.

La première partie de la documentation concerne la validation d'un service Ticket ou d'un proxy Ticket

La seconde partie montre comment apporter les fonctions de proxy CAS à une servlet java

Validation de Service Ticket ou Proxy Ticket

Classes définies

2 classes sont définies dans la librairie cliente CAS (en plus du CASFilter):

Récupération d'un Service Ticket

On suppose ici que la servlet est accessible à l'URL UrlMonService.

String CASLogin = "https://auth.univ.fr/cas/login" ;
String UrlMonService = "http://serv.univ.fr/appli/testCAS"

String ticket = request.getParameter( "ticket");
if (ticket == null )
{  	
 	response.sendRedirect( CASLogin + "?service=" +UrlMonService);
}

Validation d'un Service Ticket

String CASValidate = "https://auth.univ.fr/cas/serviceValidate" ;

edu.yale.its.tp.cas.client.ServiceTicketValidator st = new edu.yale.its.tp.cas.client.ServiceTicketValidator();
st.setCasValidateUrl(CASValidate);
st.setServiceTicket( ticket );
st.setService( UrlMonService );
st.validate();
if ( st.isAuthenticationSuccesful() )
{	
    out.println("utilisateur = "+ st.getUser() );
} 

Validation d'un Proxy Ticket

String CASProxyValidate = "https://auth.univ.fr/cas/proxyValidate" ;

edu.yale.its.tp.cas.client.ProxyTicketValidator pv =  new edu.yale.its.tp.cas.client.ProxyTicketValidator();
pv.setCasValidateUrl(CASProxyValidate);	
pv.setServiceTicket( ticket );
pv.setService( UrlMonService );
pv.validate();
if (!pv.isAuthenticationSuccesful()) {
 	out.println("auth ratee" +"<br/>");
 	out.println( pv.getResponse()+"<br/>" );
 	out.println( pv.getErrorCode()+"<br/>" );
 	out.println( pv.getErrorMessage() );
 }
 else {
 	out.println("auth reussie avec user = "+pv.getUser()+"<br/>" );
		// affichage de la liste des proxys.

 	java.util.List plist = pv.getProxyList();
 	java.util.Iterator it = plist.iterator();
 	while ( it.hasNext() )
 	{
	 	Object item = it.next();
 		out.println(" proxy "+ item.getClass()+ " "+ item );
 	}
 }

Apporter les fonctionnalités proxy CAS

Traité par la classe ProxyTicketReceptor.

blablabla.... à faire