Groupe 1B (SSO et gestion des autorisations)

Date de création : mars 2003
Dernière modification : 12 mars 2004
Diffusion : internet

Intégration de CAS dans uPortal

La dernière version des librairies clientes du CAS est téléchargable :  http://www.yale.edu/tp/cas

Préalable

Il faut pouvoir utiliser uportal comme un proxy CAS. pour celà, il faut impérativement q'uPortal puisse être accessible en HTTPS, au moins pour l'URL CasProxyCallbackUrl.
Ceci ne veut pas dire que tous les accès à uPortal doivent se faire en HTTPS (au contraire) mais le dialogue CAS <-> uportal doit être sécurisé lors du transfert du PGT, qui est un jeton rejouable.

Intégration de la librairie cliente CAS java

Intégration des librairies CAS spécifiques à uportal

La dernière version de l'intégration de CAS dans uPortal est téléchargable :  http://www.yale.edu/tp/cas/cas2-uPortal.tar.gz

Modification de la page d'accueil uPortal

Ajouter un lien pour le login CAS :

<a href="https://CAS_URL/cas/index.jsp?service=http://UPORTAL_URL/uPortal/Login">CAS NetID</a> 

Clogin/yale_html.xsl

En fait, uPortal/webpages/stylesheets/org/jasig/portal/channels/CLogin/yale_html.xsl

C'est la page qu'on a intallé au paragraphe précédent. Il faut lui mettre l'url de login CAS :

<a href="https://CAS_URL/cas/index.jsp?service=http://UPORTAL_URL/uPortal/Authentication">Login using Yale NetID</a>

CHeader/html.xsl

en fait, uPortal/webpages/stylesheets/org/jasig/portal/channels/CHeader/html.xsl

C'est la partie droite de l'entête de la page principale uportal

Le changement suivant permet de générer un logout CAS en mêm temps que le logout uportal.
ATTENTION : il faut au préalable 'patcher' le Logout.java de CAS pour qu'il accepte le paramètre 'service'.

remplacer :

<a href="Logout" class="uportal-navigation-category">

par

<a href="https://CAS_URL/cas/logout?service=http://UPORTAL_URL/uPortal/Logout" class="uportal-navigation-category"> Logout </a>

Modifications de fichiers de paramètres

properties/portal.properties (uportal)

Ajouter en fin du fichier portal.properties les lignes suivantes :

org.jasig.portal.security.provider.YaleCasContext.CasValidateUrl=https://CAS_URL/cas/proxyValidate
org.jasig.portal.security.provider.YaleCasContext.CasProxyCallbackUrl=https://UPORTAL_URL/CasProxyServlet
org.jasig.portal.security.provider.YaleCasContext.PortalServiceUrl=http://UPORTAL_URL/Authentication

CasValidateUrl : est l'url ou uPortal pourra faire valider son PGT et obtenir un PT cette URL doit être en HTTPS (pour protéger le PGT). pour ce faire reporter vous à la partie Génération de certificat

CasProxyCallbackUrl : est l'url de callback que passe uPortal afin d'obtenir un PGT. Cette URL doit être en HTTPS. pour ce faire reporter vous à la partie Génération de certificat

PortalServiceUrl : est l'url d'authentification de uPortal 

properties/security.properties (uportal)

C'est le fichier dans lequel on définit les règles d'authentification dans uportal
par exemple :

root=org.jasig.portal.security.provider.UnionSecurityContextFactory
root.cas=org.jasig.portal.security.provider.YaleCasContextFactory
root.simple=org.jasig.portal.security.provider.CacheSecurityContextFactory
credentialToken.root.cas=ticket logoutRedirect.root.cas=https://UPORTAL_URL/logout?service=http://UPORTAL_URL/uPortal

la ligne root.simple permet de garder la possiblité d'authentifier via la base sql (pour l'admin)

webpages/WEB-INF/web.xml

Il faut ajouter différentes informations.

ATTENTION . L'ordre a de l'importance!
le bloc "context-param" doit être en tête du fichier, le boc "servlet" avec les blocs "servlet", le bloc "servlet-mapping" avec les autres blocs "servlet-mapping"

<context-param>
<param-name>edu.yale.its.tp.cas.proxyUrl</param-name>
<param-value>https://CAS_URL:CAS_PORT_SSL/cas/proxy</param-value>
</context-param>

<servlet>
<servlet-name>CasProxyServlet</servlet-name>
<servlet-class>edu.yale.its.tp.cas.proxy.ProxyTicketReceptor</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>CasProxyServlet</servlet-name>
<url-pattern>/CasProxyServlet</url-pattern>
</servlet-mapping>

 

Déployer et tester

Si vous pouvez vous authentifier via CAS, c'est déja un grand pas de franchi.
Maintenant, il faut vous assurer que le portail fonctionne bien en proxy CAS (de nombreuses choses peuvent l'empêcher, comme des problèmes de certificats).

Pour celà, mettre les logs uportal en mode DEBUG, puis tenter un login via CAS.

Si vous avez un message comme le suivant dans portal.log, c'est gagné :

DEBUG [TP-Processor3] jasig.portal.[] mars/12 21:40:27 - YaleCasContext: 
 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
   <cas:authenticationSuccess>
     <cas:user>vmathieu</cas:user>
     <cas:proxyGrantingTicket>PGTIOU-49993-Hrjm0GXyi8kmgT3kbkj8MMDsFaSSi7dcobOtZqKuUQRlK2fSKP</cas:proxyGrantingTicket>
   </cas:authenticationSuccess>
 </cas:serviceResponse>


Donc, faire une recherche sur PGT dans portal.log.
Si on ne trouve rien de ce genre, c'est que le portail ne fonctionne pas en mode proxy CAS
Bon courage pour le debug .....