Pages enfant
  • CAS (Central Authentication Service) (esup 4)

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3

 

CAS est couramment utilisé dans les établissements de l'enseignement supérieur et donc chez les partenaires ESUP.

De fait EsupPortail, via le socle uPortal, propose l'intégration de l'authentification CAS (avec identification LDAP).

On note cependant que l'ENT EsupPortail  supporte également d'autres modes d'authentification (shibboleth ou directement via LDAP)

Remarque
titlePrérequis

Tomcat doit avoir été configuré !

CAS est un moyen parmi d'autres d'effectuer l'authentification sur le portail.

Il y a plusieurs possibilités d'utilisation de CAS au niveau du package ESUP :

  • 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)

De plus, il est possible :

...

  • : l'idée étant d'utiliser naturellement le service de CAS pré-existant dans l'établissement.

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 (tout comme pour l'ENT).

...

Le fichier de propriétés

Bloc de code
themeConfluence
languagenone
titleesup.properties
firstline68
linenumberstrue
################################################################################
## Configuration Serveur UPortal                                              ##
################################################################################
environment.build.uportal.server=esup4ent.univ.fr
environment.build.real.uportal.server=esup4ent1.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

...

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 (En toute logique "/ uPortal")

environment.build.real.uportal.contextUtilisé 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 CASDé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 (En toute logique "/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
Avertissement
titleDe 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

...

au niveau de l'ENT

Fichier esup.propertiesUtiliser 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 :

Bloc de code
environment.build.cas.server=localhostent.univ.fr
environment.build.cas.protocol=httphttps
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 version bundle !) pourra être testé à l'URL suivante : httphttps://localhost:8080ent.univ.fr/cas /login. Il ne redirigera nulle part puisqu'aucun service ne lui a été demandé.

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 (V3.5.1 ou plus conseillée) et réaliser l'installation (Source = INSTALL.txt du zip) :

...

Modifier la configuration du fichier esup.properties :

Bloc de code
environment.build.cas.server=localhost
environment.build.cas.protocol=http
environment.build.cas.context=/cas-server-webapp-<VERSION> (où <VERSION> est à remplacer)

L'utilisateur test est admin/admin.

Désactiver le cas embarqué.

...

    1. Commenter la ligne "<module>cas</module>" dans le fichier uportal-portlets-overlay/pom.xml.

      Bloc de code
      languagehtml/xml
      <modules>
          ...
          <module>BookmarksPortlet</module>
          <!-- module>cas</module -->
          <module>cas-proxy-test-portlet</module>
          ...
      </modules>
      
    2. Commenter la dépendance CAS dans le fichier uportal-ear/pom.xml.

      Bloc de code
      languagehtml/xml
      <!--
      <dependency>
          <groupId>org.jasig.portal.portlets-overlay</groupId>
          <artifactId>cas</artifactId>
          <version>${project.version}</version>
          <type>war</type>
      </dependency>
      -->
      
  1. Configurer les logs telles qu'elles l'auraient été dans un CAS embarqué :
    1. É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 :

      Bloc de code
      languagehtml/xml
      titlewebapps\cas-server-webapp-<version>\WEB-INF\classes
      firstline35
      linenumberstrue
      <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>
      
      Bloc de code
      languagehtml/xml
      titlewebapps\cas-server-webapp-<version>\WEB-INF\classes
      firstline104
      <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>

       

       

Utiliser un certificat

Remarque

Avant de continuer, vous devez posséder la clé publique du CAS (Ex: certificat .pem) !

Il faut dans un premier temps ajouter ce certificat dans le magasin :

Bloc de code
languagebash
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 :

Installer CAS (rappel)

Pour installer un CAS de production (si vous n'en avez pas déjà un dans votre établissement) on vous réfère à la documentation ESUP qui lui est spécifique :
http://www.esup-portail.org/display/CAS 

Proxy CAS

Le fonctionnement d'un proxy CAS est également expliqué sur le wiki de l'esup-portail.

Le portail embarque par défaut la portlet cas-proxy-test-portlet (nommée PORTLET TEST CAS) qui indique si le portail est correctement configuré pour fonctionner en mode proxy CAS, hors si vous appliquez une configuration autre ou en load balancing par exemple que pour un fonctionnement en local la portlet ne sera pas automatiquement correctement configurée et retournera toujours une erreur de fonctionnement proxy cas, il sera donc nécessaire d'appliquer cette configuration une fois la portlet du pakaging du portail déployée :

Bloc de code
themeConfluence
languagenone
titlePATH.TO.WEBAPPS/cas-proxy-test-portlet/WEB-INF/classes/configuration.properties
firstline19
linenumberstrue
cas.server.base.url=https://auth.univ.fr/cas
portal.server.base=https://ent.univ.fr
portal.real.base=https://ent1.univ.fr
portlet.context=cas-proxy-test-portlet

Remarque/rappel : on pourra utiliser également ici un system property java pour portal.real.base notamment, cf  Apache frontal (esup 4)#Bonnepratique

 

Bloc de code
themeConfluence
languagenone
titlePATH.TO.WEBAPPS/cas-proxy-test-portlet/WEB-INF/context/applicationContext.xml
firstline48
linenumberstrue
   <!-- 
        Validates service and proxy tickets for both the servlet targets and
        proxy portlet
    -->
    <bean id="ticketValidator" 
        class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator"
        p:proxyCallbackUrl="${portal.real.base}/${portlet.context}/proxy/receptor"
        p:proxyGrantingTicketStorage-ref="proxyGrantingTicketStorage"
        p:acceptAnyProxy="true">
Bloc de code
themeConfluence
languagehtml/xml
titleconf/server.xml
<!-- 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 :

Bloc de code
themeConfluence
languagenone
titlefilter/esup.properties
firstline80
linenumberstrue
################################################################################
## 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.

...

<constructor-arg index="0" value="${cas.server.base.url}" />
    </bean>

Ancre
CASLDAP
CASLDAP

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) :

  1. Ajout dans le fichier pom.xml du cas bundle :

    Bloc de code
    titleuportal-portlets-overlay\/cas\/pom.xml
    firstline160
    linenumberstrue
    <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>
  2. Ajouts dans le fichier deployerConfigContext.xml du cas bundle :

    Bloc de code
    titleuportal-portlets-overlay\/cas\/src\/main\/webapp\/WEB-INF\/deployerConfigContext.xml
    firstline120
    linenumberstrue
    <property name="authenticationHandlers">
            <list>
            ...
            <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>
        </list>
    </property>
    Bloc de code
    titleuportal-portlets-overlay\/cas\/src\/main\/webapp\/WEB-INF\/deployerConfigContext.xml
    firstline222
    linenumberstrue
    </beans>
        ...
        <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
            <property name="urls">
                <list>
                    <value>${environment.build.ldap.url}</value>
                </list>
            </property>
    </bean>		<property name="userDn" value="${environment.build.ldap.userName}"/>
            <property name="password" value="${environment.build.ldap.password}"/>
            <property name="pooled" value="${environment.build.ldap.pooled}"/>
    	 </bean>
        ...
    </beans>

...

Info
titleRé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
CAS