Date de création : | mars 2003 | |
Dernière modification : | 12 mars 2004 | |
Diffusion : | internet |
La dernière version des librairies clientes du CAS est téléchargable : http://www.yale.edu/tp/cas
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.
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
Ajouter un lien pour le login CAS :
<a href="https://CAS_URL/cas/index.jsp?service=http://UPORTAL_URL/uPortal/Login">CAS NetID</a>
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>
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>
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
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)
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"
<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>
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 .....
Création : mars 2003 - Vincent Mathieu & Julien Marchal (Université de Nancy 2) | |
Modifications : |