[INTERNAL_esupv4] Validation de la page
EN COURS ...
# | Validateur | Date | Comments |
---|---|---|---|
1 | Julien Marchal | ||
2 | Julien Gribonvald | 14/02/2013 (après midi) | Commentaires pris en compte, donc Ok Cf commentaires Julien Marchal, il est vrai que dans le CCTP nous avions parlé de CAS-toolbox "Avec un CAS version 3.X (la dernière version du toolbox est la 3.4) ;" |
Prérequis
Tomcat doit avoir été configuré !
CAS, bien que préconisé par ESUP, est un moyen parmi d'autres d'effectuer l'authentification sur le portail.
Il y a plusieurs possibilités d'utilisation de CAS :
- CAS interne (en bundle avec ESUP). Attention : ce CAS n'est pas préconisé pour un environnement hors développement.
- CAS externe (à installer soi-même)
En environnement de production, il est fortement recommandé de déployer l'application de façon sécurisée en utilisant des certificats et le protocole HTTPS uniquement.
Le fichier de propriétés
################################################################################ ## Configuration Serveur UPortal ## ################################################################################ environment.build.uportal.server=ent.univ.fr environment.build.real.uportal.server=esup4.univ.fr environment.build.uportal.protocol=https environment.build.uportal.context=/uPortal environment.build.real.uportal.context=/uPortal environment.build.uportal.email.fromAddress=portal4@univ.fr ################################################################################ ## Configuration Serveur CAS ## ################################################################################ environment.build.cas.server=auth.univ.fr environment.build.cas.protocol=https environment.build.cas.context=/cas
Voici à quoi correspondent les différentes propriétés :
Propriétés uPortal | Définition |
---|---|
environment.build.uportal.server | Hostname du serveur uPortal |
environment.build.real.uportal.server | Utilisé pour le load balancing. Par défaut mettre la même adresse que environment.build.uportal.server. La configuration exacte est expliquée dans la section dédiée au load balancing. |
environment.build.uportal.protocol | Protocole utilisé pour contacter le serveur uPortal (http ou https) |
environment.build.uportal.context | Nom de la webapp du serveur uPortal |
environment.build.real.uportal.context | Utilisé pour le load balancing. Par défaut mettre la même adresse que environment.build.uportal.context. La configuration exacte est expliquée dans la section dédiée au load balancing. |
environment.build.uportal.email.fromAddress | Adresse utilisée pour envoyer des messages électronique. Elle sera visible des destinataires |
Propriétés CAS | Définition |
environment.build.cas.server | Hostname du serveur CAS |
environment.build.cas.protocol | Protocole utilisé pour contacter le serveur CAS (http ou https) |
environment.build.cas.context | Nom de la webapp du serveur CAS |
- Toutes les propriétés "cas" servent à configurer la manière de contacter le serveur CAS
- Toutes les propriétés "uportal" servent à configurer le service pour lequel on appelle le CAS. Concrètement, il s'agit de l'URL de redirection une fois l'authentification effectuée
De la sécurité
Le mode HTTP (non sécurisé) est fortement déconseillé en production, que ce soit pour CAS (environment.build.cas.protocol) ou pour le portail (environment.build.uportal.protocol) !
Configurer le CAS embarqué
Utiliser le CAS embarqué revient à utiliser celui la machine locale qui ne demande pas de connexion sécurisée. Il faut donc configurer les propriétés du serveur CAS comme suit :
environment.build.cas.server=localhost environment.build.cas.protocol=http environment.build.cas.context=/cas
Les autres propriétés doivent être renseignées en fonction de là où est déployé l'application uPortal.
Le serveur CAS (SEUL !) pourra être testé à l'URL suivante : http://localhost:8080/cas/login. Il ne redirigera nulle part puisqu'aucun service ne lui a été demandé. L'utilisateur test est admin/admin.
Configurer un CAS externe
Il est possible d'utiliser un serveur CAS externe. Cela peut permettre d'héberger le serveur CAS sur une autre machine que celle du portail.
Pour cela, il faut télécharger un serveur CAS. La V3.4.7 est fortement conseillée (le fonctionnement de FastBindLdap n'est autrement pas garanti). La solution la plus simple reste d'utiliser le cas-toolbox de RENATER. Ce toolbox embarque la version 3.4.7 fonctionnelle. À défaut, utiliser INSTALL.txt du zip pour réaliser l'installation :
- Copier l'archive modules/cas-server-webapp-VERSION.war dans le répertoire webapps/ de Tomcat
- Démarrer Tomcat (qui se charge alors de déployer l'archive)
- Vérifier la bonne installation du serveur CAS en visitant l'URL suivante : http://localhost:8080/cas-server-webapp-<VERSION>/login (où <VERSION> devient le numéro de version du serveur téléchargé, 3.5.1 dans notre exemple).
Modifier la configuration du fichier esup.properties :
environment.build.cas.server=localhost environment.build.cas.protocol=http environment.build.cas.context=/cas-server-webapp-<VERSION> (où <VERSION> est à remplacer)
- Désactiver le cas embarqué. Pour cela :
Commenter la ligne "<module>cas</module>" dans le fichier uportal-portlets-overlay/pom.xml.
<modules> ... <module>BookmarksPortlet</module> <!-- module>cas</module --> <module>cas-proxy-test-portlet</module> ... </modules>
Commenter la dépendance CAS dans le fichier uportal-ear/pom.xml.
<!-- <dependency> <groupId>org.jasig.portal.portlets-overlay</groupId> <artifactId>cas</artifactId> <version>${project.version}</version> <type>war</type> </dependency> -->
Configurer les propriétés de logs telles qu'elles l'auraient été dans un CAS embarqué. Pour cela, éditer le fichier suivant, remplacer les balises existantes par celles-ci et remplacer le texte entre crochets par les valeurs issues du fichier esup.properties :
webapps\cas-server-webapp-<version>\WEB-INF\classes\log4j.xml<appender name="cas" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="[environment.build.log.logfileDirectory]/cas.log" /> <param name="DatePattern" value="'.'yyyy-MM-dd-HH" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[${environment.build.host.logicalName}]%5p [%t] %d{MMM/dd HH:mm:ss,SSS} %c{2}.[%x] - %m%n"/> </layout> </appender>
webapps\cas-server-webapp-<version>\WEB-INF\classes\log4j.xml<logger name="org.jasig" additivity="true"> <level value="[environment.build.log.rootLevel]" /> <appender-ref ref="cas" /> </logger> <logger name="com.github.inspektr.audit.support.Slf4jLoggingAuditTrailManager"> <level value="[environment.build.log.rootLevel]" /> <appender-ref ref="cas" /> </logger> <!-- WARNING: Setting the flow package to DEBUG will display the parameters posted to the login servlet including cleartext authentication credentials --> <logger name="org.jasig.cas.web.flow" additivity="true"> <level value="[environment.build.log.rootLevel]" /> <appender-ref ref="cas" /> </logger>
Connecter le CAS au LDAP pour le rendre actif. Cf. section ci-dessous.
Utiliser un certificat
Avant de continuer, vous devez disposer d'un couple clé privé/publique valide (Ex: certificat .pem) !
Il faut dans un premier temps ajouter ce certificat dans le magasin :
keytool -import -trustcacerts -alias cas_ca -file [full_path_to_the.pem] -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
Il faut dans un deuxième temps configurer le serveur pour qu'il accepte les connexions HTTPS. Dans le fichier server.xml, il faut décommenter le bon connecteur et éventuellement ajouter quelques attributs :
<!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="D:\ESUP\Certificats\tomcat.jks" keystorePass="changeit"/>
Enfin, il faut modifier le paramétrage du CAS de la manière suivante :
################################################################################ ## Configuration Serveur CAS ## ################################################################################ environment.build.cas.server=localhost:8443 environment.build.cas.protocol=https environment.build.cas.context=/cas
Serveur frontal Apache
Dans un contexte CAS + Tomcat avec un serveur Apache en frontal, il faut bien prendre en compte la configuration ad hoc.
Proxy CAS
Le fonctionnement d'un proxy CAS est expliqué sur le wiki de l'esup-portail.
Connecter CAS Bundle et LDAP
Afin de connecter CAS bundle et LDAP, il faut procéder aux modifications suivantes (exemple de configuration - le FastBind ne fonctionne pas avec tous les LDAP) :
Ajout dans le fichier pom.xml du cas bundle :
uportal-portlets-overlay/cas/pom.xml<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-ldap</artifactId> <version>${cas-server.version}</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>org.inspektr</groupId> <artifactId>inspektr-core</artifactId> </exclusion> </exclusions> </dependency>
Ajouts dans le fichier deployerConfigContext.xml du cas bundle :
uportal-portlets-overlay/cas/src/main/webapp/WEB-INF/deployerConfigContext.xml<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler" > <property name="filter" value="${environment.build.ldap.uidAttr}=%u,${environment.build.ldap.baseDn}" /> <property name="contextSource" ref="contextSource" /> </bean>
uportal-portlets-overlay/cas/src/main/webapp/WEB-INF/deployerConfigContext.xml<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> <property name="urls"> <list> <value>${environment.build.ldap.url}</value> </list> </property> </bean>
Connecter un CAS Externe et LDAP
La configuration d'un annuaire LDAP sur un serveur CAS externe est décrite sur le wiki Jasig : https://wiki.jasig.org/display/CASUM/LDAP
Afin de connecter un CAS externe et LDAP, il faut procéder aux modifications suivantes (exemple de configuration - le FastBind ne fonctionne pas avec tous les LDAP) :
Ajout dans le fichier pom.xml du cas :
cas-server-3.5.1/cas-server-webapp/pom.xml<dependency> <groupId>org.jasig.cas</groupId> <artifactId>cas-server-support-ldap</artifactId> <version>${cas.version}</version> </dependency>
Le paramètre ${cas.version} est à remplacer par la version de CAS.
Ajouts dans le fichier deployerConfigContext.xml du cas :
cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml<bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler" > <property name="filter" value="${environment.build.ldap.uidAttr}=%u,${environment.build.ldap.baseDn}" /> <property name="contextSource" ref="contextSource" /> </bean>
cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> <property name="urls"> <list> <value>${environment.build.ldap.url}</value> </list> </property> </bean>
Les paramètres suivants sont à remplacer :
${environment.build.ldap.uidAttr}
${environment.build.ldap.baseDn}
${environment.build.ldap.url}
Ces paramètres sont explicités sur la page de configuration LDAP.
Références
https://wiki.jasig.org/display/UPM40/CAS+in+uPortal+Overview
https://wiki.jasig.org/display/UPM40/CAS
http://www.ens-lyon.fr/Bibli/ENT-ESUP/sources/esup.properties.txt
https://wiki.jasig.org/display/UPM40/SSL+Configuration
http://www.esup-portail.org/consortium/espace/SSO_1B/cas/
Exemple de fichier de configuration
https://sourcesup.cru.fr/frs/?group_id=401&release_id=1461