informatique:securite:cas

Ceci est une ancienne révision du document !


SSO CAS

L'installation est facilement réalisable à l'aide du packet cas-toolbox téléchargeable ici et documenté ici. L'installation sera réalisé dans entièrement à l'aide d'un utilisateur POSIX cas dédié.

La configuration de cas-toolbox sera conservée dans un repos git (local) situé dans le dossier /home/cas/local.

Toute modification de la configuration du CAS devront être faite en tant qu'utilisateur cas. Celui-ci disposera des droits sudo pour le déploiement en production et le redémarrage de Tomcat.
/home/cas
  |- upstream : les sources logicielles téléchargées
  |- cas-toolbox-XXXXXX : les différentes versions de cas-toolbox présentes sur le serveur
  |- current : lien symbolique vers les sources de la version courante de cas-toolbox
   |- build.properties : fichier de configuration de la compilation
   |- config.properties : fichier de configuration de CAS
   |- custom : dossier de personnalisation de l'installation du CAS
   |- build : dossier de compilation du CAS
  |- local : repos GIT de personnalisation de l'application CAS
   |- static : données web statiques
  |- webapps : lien symbolique pointant sur le répertoire des webapps de Tomcat
    |- cas : Répertoire de déploiement de CAS

Cette application a pour dépendance les paquets Debian suivants :

  • tomcat7
  • ant
  • maven
  • openjdk-6-jre
  • openjdk-6-jdk
  • memcached

Configuration de Tomcat

  • Il est nécessaire de créer le lien symbolique suivant :
    ln -s /var/log/tomcat7/ /usr/share/tomcat7/logs
  • Dans le fichier /etc/tomcat7/server.xml :
    • Commenter le <Connector port=“8080” …/>
    • Dé-commenter le <Connector port=“8009” …/>
  • Redémarrer Tomcat :
    service tomcat7 restart

Configuration d'Apache

  • Les modules Apache suivants doivent être activés :
    a2enmod proxy proxy_ajp proxy_http
Exemple de VirtualHost Apache
<VirtualHost *:80>
    ServerAdmin webmaster@exemple.fr
    ServerName connexion.exemple.fr

    RedirectMatch / https://connexion.exemple.fr

    ErrorLog /var/log/apache2/connexion.exemple.fr.error.log
    CustomLog /var/log/apache2/connexion.exemple.fr.access.log combined
</VirtualHost>


<VirtualHost *:443>
    ServerAdmin webmaster@exemple.fr
    ServerName connexion.exemple.fr

    DocumentRoot /var/www/empty

    Alias /static /home/cas/local/static

    <Directory /home/cas/local/static>
        Options -Indexes
    </Directory>

    RedirectMatch ^/$ /cas/

    SSLEngine On

    ProxyRequests Off
    <Proxy *>
        Order Deny,Allow
        Allow From All
    </Proxy>

    ProxyPass /cas ajp://127.0.0.1:8009/cas retry=2

    ErrorLog /var/log/apache2/connexion.exemple.fr.error.log
    CustomLog /var/log/apache2/connexion.exemple.fr.access.log combined
</VirtualHost>

Configuration de sudo

  • Créer le fichier /etc/sudoers.d/cas :
    cas	ALL=NOPASSWD:/usr/bin/ant
    cas	ALL=NOPASSWD:/etc/init.d/tomcat7
  • Corriger les droits du fichier :
    chmod 440 /etc/sudoers.d/cas

Configuration de memcached

Il n'y a pas de modification à apporter à la configuration standard du service.

Vous pouvez utiliser comme base la configuration présente dans le repos cas-common-config. Votre configuration devra se trouver dans le dossier /home/cas/local.

Adapter le contenu du fichier config.properties et notamment les variables suivantes :

  • log.dir : Le chemin du répertoire de log. Dans notre cas, mettre /var/log/tomcat7.
  • cas.host : Le FQDN d'accès au serveur CAS
  • cas.uri : Le contexte Web de déploiement du serveur CAS. Dans notre cas, mettre /cas.
  • security.useradmin : Le login de l'utilisateur qui aura le droit de se connecte à l'interface de gestion des services utilisant l'annuaire LDAP
  • Configuration LDAP :
    • ldap.host.1 et ldap.host.2 : les URI de vos serveurs LDAP. Si vous en avez qu'un seul, mettez simplement la même valeur dans les deux variables.
    • ldap.basedn : la base de recherche dans utilisateur dans l'annuaire LDAP
    • ldap.manager.dn : Le DN utilisateur par le serveur CAS pour se connecter à vos annuaires LDAP
    • ldap.manager.password : Le mot de passe associé
Un service CAS est normalement toujours derrière une connexion sécurisé (HTTPS). Si jamais, pour une raison que vous appartient, vous décider d'installer un service CAS derrière une connexion non-sécurisé (HTTP) il faudra modifier la configuration du générateur de cookie pour qu'il n'oblige pas les connexions sécurisées. Pour cela, copier le fichier build/cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml dans le dossier custom/webpages/WEB-INF/spring-configuration (à créé au préalable) et modifier le paramètre p:cookieSecure dans ce fichier comme suit :
[...]
        <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
                p:cookieSecure="false"
                p:cookieMaxAge="-1"
                p:cookieName="CASTGC"
[...]
  • Créer le dossier /home/cas/upstream et y télécharger le package de cas-toolbox
  • Décompresser le package dans le répertoire /home/cas/
  • Créer le lien symbolique /home/cas/current pointant vers le répertoire de cas-toolbox
  • Dans le répertoire /home/cas/current/, créer les liens symboliques suivant :
    cd /home/cas/current
    ln -s ../local/build.properties
    ln -s ../local/config.properties
    rmdir custom && ln -s ln -s ../local/custom
  • Exécuter la tâche ant init :
    ant init
  • Déployer l'installation du CAS :
    sudo ant deploy
  • Redémarrer Tomcat7 :
    sudo /etc/init.d/tomcat7 restart
Il semble que les dépôts Maven utiliser pour le build du serveur CAS est changé, rendant impossible les nouveaux déploiements. Cela ne pose cependant pas de problème au ancien déploiement qui dispose d'un cache local des dépendances. Une solution simple (mais crade) de contourner se problème est de récupérer le cache d'un serveur CAS préalablement déployé : il s'agit du dossier current/build/maven-repository. Vous pouvez aussi télécharger l'archive suivante qui contient le dossier maven-repository.

Un re-déploiment permet de prendre en compte les modifications faites sur la configuration du serveur Git.

Cette procédure n'est pas nécessaire pour les données statiques (dossier /local/static).

Pour cela, il faut :

  • Re-compiler CAS et le re-déployer :
    cd /home/cas/current
    ant
    sudo ant deploy
  • Redémarrer Tomcat :
    sudo /etc/init.d/tomcat7 restart

CAS contrôles les services qui sont autorisés à utiliser son service de SSO. La liste des services autorisés au configurés dans le fichier custom/webpages/WEB-INF/deployerConfigContext.xml. Par défaut, le service autorise les services suivants :

http://**
https://**
imap://**
imaps://**
Seul les services HTTP/HTTPS ont cepandant accès aux attributs CAS.

Il est possible d'ajouter des nouveaux services autorisés lorsque le service est démarré en utilisant l'interface https://login.example.fr/cas/services/manage.html. Il faudra pour cela se connecté avec un utilisateur reconnu comme ADMIN du service (cf. paramètre security.useradmin).

Attention : Les ajouts fait par ce biais ne sont pas conservé lors du redémarrage du service.
  • informatique/securite/cas.1445593961.txt.gz
  • Dernière modification : 2015/10/23 09:52
  • de bn8