Date de création : | 12 janvier 2004 | |
Dernière modification : | 27 janvier 2004 | |
Diffusion : | internet |
Ce document à pour but de spécifier le développement à effectuer pour rendre compatibles les applications Sun One avec le système de SSO choisi par Esup-Portail qui est CAS.
Initialement ce développement a été imaginé pour cassifier Sun One Calendar mais le mécanisme d'identification de ce produit est le même que de nombreux produits Sun One. Aussi cette spécification couvre-t-elle bien la cassification d'applications Sun One dont calendar.
Ce document ne rentre pas dans le détail de la gestion de l'identification des produits Sun One ou de CAS. Le lecteur devra donc se reporter aux documents http://docs.sun.com/source/816-6416-10/pr8ssn.html et https://www.esup-portail.org/consortium/espace/SSO_1B/cas/index.html pour bien analyser ce qui suit.
Le développement doit permettre le dialogue entre deux mondes. Sun One d'une part et CAS d'autre part.
Le développement ne propose aucune interface utilisateur. Il est offre deux points d'accès :
Outre le fichier de configuration de l'application (web.xml), le fichier de configuration du Tag Lib Cas (cas.xml) il existe un fichier de configuration spécifique (WEB-INF/classes/properties/socp.xml). socp pour Sun One CAS Proxy
Cette page utilise le Tag Lib CAS pour jouer le mécanisme CAS et récupérer l'identifiant de la personne qui se présente.
La page génère ensuite une cookie de nom <sso.apprefix>-<appid>. Ces deux valeurs sont lues dans le fichier de configuration de l'application (socp.xml).
Le cookie contient un numéro aléatoire de la forme SOT-XXXXXXXXXXXX où SOT veut dire Sun One Ticket.
Un objet Sot est crée en mémoire et contient comme attributs :
Attention : Ne pas confondre le SOT qui est le numéro aléatoire et l'objet Sot qui permet de mémoriser ce SOT et des informations connexes.
L'objet Sot est mémorisé dans une entrée d'une hashtable. Cette entrée de hashtable a pour clé le SOT.
L'utilisateur est redirigé vers une URL qui a été passée grâce au paramètre service de la page index.jsp. Typiquement l'URL de la page d'accueil d'une application Sun One.
Cette page est appelée par l'application Sun One afin d'obtenir l'identification de l'utilisateur.
L'adresse de cette page est spécifiée dans le fichier de configuration des applications Sun One.
Cette page lit le cookie <sso.apprefix>-<appid> et lit le SOT qu'il contient.
Grâce au SOT, on recherche dans la hashtable l'objet Sot correspondant.
Si l'objet Sot existe bien et si l'adresse IP du client est cohérente et si la date courante est inférieure à date de génération du SOT + <SOTValidationTime> alors :
fquid=user id@fully qualified domain name
authtype=plaintext
Sinon on répond sous forme d'un document contenant :
Error: user does not have a valid session
Une servlet pour nettoyer la mémoire de l'application afin de supprimer les entrées de la hastable qui ne sont plus valides a été rajoutée (Si on appelle index.jsp sans appel de verifSSO.jsp, on crée un cookie dans la Hashtable qui n'est jamais détruit). Ne sont plus valides toutes les entrées dont la date de génération du SOT + <SOTValidationTime> est supérieure à la date courante.
La servlet démarre automatiquement lors du démarrage de l'application
et réalisant une activité de nettoyage tous les <SOTCleanTime>
secondes.
Pour cela il faut rajouter dans le web.xml de Tomcat :
<servlet>
<servlet-name>LanceClean</servlet-name>
<servlet-class>fr.univrennes1.cri.calendar.LanceClean</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
Ce fichier XML contient les paramètres suivants :
<sso.apprefix> est le nom de groupe de SSO au sens Sun One.
<appid> est le nom de l'application Sun One CAS Proxy. Ce nom est spécifié dans le fichier de configuration des applications Sun One.
<SOTValidationTime> temps en milliseconde de validité d'un SOT en mémoire
<SOTCleanTime> si son utilité est démontrée ce paramètre gère le temps en seconde de sommeil de la servlet de nettoyage entre deux actions.
<cookieDomain> nom du domaine de validité du cookie
Le fichier est de la forme :
<?xml version="1.0" encoding="iso-8859-1"?>
<!--SOTValidationTime en millisecondes 1000 = 1 seconde -->
<sso
appId="sucapro"
ssoPrefix="ssogrp1"
SOTValidationTime="10000"
domain=".univ-rennes1.fr"
/>
Pré-requis :
L'installation de l'application se fait en deux étapes :
Voir la section download