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

Vous regardez une version antérieure (v. /wiki/pages/viewpage.action?pageId=257949798) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 54) afficher la version suivante »

[INTERNAL_esupv4] Validation de la page

NON INITIÉE

#ValidateurDateComments
1Julien Marchal  
2Julien Gribonvald14/02/2013 (après midi)

Reste à voir :

Dans "Configurer un CAS externe" point 6 a. il est spécifié configurer une fichier, alors que seul un répertoire est cité en entête des zones codes.

Dans la zone de code il est indiqué cette confiuration : <param name="DatePattern" value="'.''.'yyyy-MM-dd-HH" /> il n'y a pas un problème ? Comme ce que Mathilde Guerin indiquait dans une autre page

Il y a un point 6a mais pas de 6b

Pré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 :

  • CAS interne (en bundle avec ESUP)
  • 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

esup.properties
################################################################################
## 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 (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

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é.

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

  1. Copier l'archive modules/cas-server-webapp-VERSION.war dans le répertoire webapps/ de Tomcat
  2. Démarrer Tomcat (qui se charge alors de déployer l'archive)
  3. 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).
  4. 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)
    
  5. Désactiver le cas embarqué. Pour cela :
    1. 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>
      
    2. 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>
      -->
      
  6. Configurer les propriétés de 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 :

      webapps\cas-server-webapp-<version>\WEB-INF\classes
      <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
      <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

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 :

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 :

conf/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 :

filter/esup.properties
################################################################################
## 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 et LDAP

Afin de connecter CAS et LDAP, il faut procéder aux modifications suivantes :

  1. 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>
  2. 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>



  • Aucune étiquette