Esup_mondossierweb gère deux types d’utilisateur (étudiant et enseignant). Nous allons expliquer comment nous gérons l’accès aux différentes parties de l’application grâce à on-load et CAS.
La page d’accueil par défaut de l’application est stylesheets/welcome.xhtml. Elle est ‘protégée’ par le composant on-load qui redirige (via la méthode ‘accueil’ du SessionController) vers etu/welcome.xhtml ou ens/welcome.xhmtl suivant le type de l’utilisateur (voir le post ‘Redirection depuis l’accueil selon le type utilisateur’).
En plus de cela, on-load intercepte les accès aux pages se trouvant dans les répertoires etu/ et ens/ contenant respectivement les pages dédiées aux étudiants et aux enseignants.
Quand on tente d’accéder à une page de ens/ on-load lance la méthode isEns() du SessionController. Cette méthode retourne ‘null’ (on a accès à la page désirée) si l’utilisateur est un enseignant, ‘error’ si l’utilisateur est un étudiant, et ‘error-connexion’ si il n’est ni étudiant, ni enseignant donc non connecté.
’error’ renvoit vers la page error/acces-interdit.xhtml, qui affiche un message d’erreur et un lien vers la méthode ‘accueil’ du SessionController.
‘error-connexion’ revoit vers la page error/connexion.xhtml qui affiche un message d’erreur et un lien pour s’authentifier. Ce lien est en fait un lien vers la page ‘login.xhtml’ qui est ‘sécurisée’ par le filtre CAS ; l’utilisateur est donc automatiquement dirigé vers la page d’authentification de CAS. Une fois authentifié, l’utilisateur est donc redirigé vers la page login.xhtml qui redirige automatiquement (grâce au on-load) vers la méthode ‘accueil’ du SessionController.
Quand on tente d’accéder à une page de etu/ on-load lance la méthode ‘isLoggue’ du SessionController. Cette méthode retourne ‘null’ (on a accès à la page désirée) si l’utilisateur est reconnu en tant qu’enseignant ou étudiant, ‘error-connexion’ sinon.
En plus de cette protection nous avons placé un « security constraint » (dans le web.xml) qui bloque l’accès direct aux pages.
|
<security-constraint> <display-name>Protection of the raw XHTML pages</display-name> <web-resource-collection> <web-resource-name>Raw JSF XHTML Pages</web-resource-name> <description> All the XHTML pages of the application. </description> <url-pattern>/stylesheets/*</url-pattern> </web-resource-collection> <auth-constraint> <description>No roles, so no direct access</description> </auth-constraint> </security-constraint> |
avril 19, 2007 à 1:49
[...] avons déjà vu dans un des posts précédents intitulé “Gestion des rôles avec on-load et CAS” que le composant jsf ‘on-load’ sécurisait la page d’accueil de l’application en [...]