Bon pour relecture
Sommaire :
Récupération d'un PGT
Afin de récupérer des PTs pour des services distants, l'application doit tout d'abord récupérer un PGT, obtenu en validant :
- le PT transmis par le portail dans le cas d'un déploiement portlet
- En mode portlet, la récupération du PGT est automatiquement faite « au plus tard » par le bean casService, c'est-à-dire juste avant de demander un premier PT pour un service distant ; la récupération du PGT est ainsi complètement transparente.
Forcer la récupération du PGT
Il est possible de forcer la récupération du PGT avant la récupération du premier PT pour un service distant, pour éviter que le PT transmis par le portail ne se périme avant qu'on ne le valide. Il suffit alors d'appeler la méthode validate() du bean casService.
Il possible de configurer le bean casService pour qu'il effectue plusieurs tentatives en cas d'échec lors de la récupération du PGT ou des PTs pour les services distants. Il suffit pour cela d'initialiser les valeurs des propriétés retries (nombre de tentatives à refaire en cas d'échec, par défaut 0) et sleep (nombre de secondes d'attente entre chaque tentative, par défaut 1). Il convient d'utiliser des valeurs raisonnables, notamment en déploiement portlet car trop d'essais mèneraient à un timeout du canal de la portlet.
- En mode portlet, la récupération du PGT est automatiquement faite « au plus tard » par le bean casService, c'est-à-dire juste avant de demander un premier PT pour un service distant ; la récupération du PGT est ainsi complètement transparente.
- le ST ou le PT trouvé dans l'URL dans le cas d'un déploiement servlet
- En mode servlet c'est le filtre CAS qui se charge de valider ce ST afin d'obtenir un PGT qui sera mis en session utilisateur
Récupération d'un PT pour un service distant
Il suffit simplement d'appeler la méthode getProxyTicket() du bean casService en précisant pour quel service distant on demande un PT :
String casTargetService = "http://webdav.domain.edu";
String pt = null;
try {
pt = casService.getProxyTicket(casTargetService);
} catch (CasException e) {
...
}
Le PT obtenu peut alors être passé au service distant, par un moyen propre à l'application.