Groupe 1B (SSO et gestion des autorisations)

Date de création : 12 janvier 2004
Dernière modification : 27 janvier 2004
Diffusion : internet

Cassification d'applications Sun One

INTRODUCTION

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.

PRINCIPE

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

INDEX.JSP

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.

verifySSO.JSP

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 de nettoyage mémoire

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>

SOCP.XML

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"
/>

Installation

Pré-requis :

L'installation de l'application se fait en deux étapes :

Téléchargement

Voir la section download