Outils pour utilisateurs

Outils du site


braveo:docinstall:cas:install

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
braveo:docinstall:cas:install [2012/02/18 12:51] – modification externe 127.0.0.1braveo:docinstall:cas:install [2024/04/16 22:28] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Installation du serveur d'authentification centralisé CAS : Jasig ======
 +
 +===== Introduction =====
 +
 +Nous allons mettre en place un serveur d'authentification centralisée CAS. Le serveur le plus réputé est JASIG. JASIG étant relativement complexe à installer nous allons utiliser 2 outils CAS-Quickstart et CAS-toolbox qui vont grandement nous simplifier l'installation de JASIG et sa configuration.
 +
 +Une fois le serveur installé nous montrerons comment configurer un vhost apache, qui sera utilisé pour l'accès au CAS.
 +
 +__Sommaire :__
 +
 +===== Installation du CAS =====
 +
 +==== Installation du JDK JAVA ====
 +
 + Le CAS étant programmé en JAVA nous aurons besoin du kit de développement JDK. Pour se faire :
 +  apt-get install sun-java6-jdk
 +
 +Commande qui permet de choisir entre JRE et JDK.
 +  sudo update-alternatives --config java
 +
 +Ne vous préoccupez pas de la variable d'environnement JAVA_HOME, elle sera définie dans la configuration du CAS de toute façon.
 +
 +==== Installation de CAS-Quickstart ====
 + 
 +Commencez par télécharger l'archive tar.gz de la dernière version ici : https://sourcesup.cru.fr/frs/?group_id=401
 +
 +
 +Nous allons ensuite travailler dans **/opt/** :
 +  cd /opt/
 +  
 +Décompression de l'archive :
 +  tar xvzf ~/cas-quickstart-3.4.7-1.tar.gz
 +  cd cas-quickstart-3.4.7-1/
 +
 +Avant d'aller plus loin nous allons régler quelques petits problème, il est possible (suivant la version de quick-cas) que les fichiers *.sh ne soient pas au format UNIX (\r\n au lieu de \n pour les fin de lignes). Pour régler simplement ce problème exécutez :
 +  cat env.sh | tr -d '\015' > env
 +  mv env env.sh
 +
 +
 +A répéter sur **start.sh** et **stop.sh** :
 +  cat start.sh | tr -d '\015' > start
 +  mv start start.sh
 +  cat stop.sh | tr -d '\015' > stop
 +  mv stop stop.sh
 +
 +
 +On configure les variables d'environnement de **cas-quickstart-3.4.7-1/env.sh** pour pouvoir lancer notre CAS :
 +<code C>
 +#!/bin/sh
 +
 +export LANG=fr_FR
 +
 +export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/
 +
 +export CATALINA_HOME=/opt/cas-quickstart-3.4.7-1/apache-tomcat-6.0.32
 +export CATALINA_BASE=$CATALINA_HOME
 +export CATALINA_TMPDIR=$CATALINA_HOME/temp
 +</code>
 +
 +<note>Pour trouver le JAVA_HOME :
 +  readlink -f /usr/bin/java | sed "s:bin/java::"
 +Vous pouvez aussi le configurer dans /etc/profile .
 +</note>
 +
 +Pour s'assurer des droits :
 +  chmod a+x *.sh
 +  chmod a+x apache-tomcat-6.0.32/bin/*.sh
 +  
 +En lance le CAS :
 +  ./start.sh
 +  
 +Vous avez deviné pour l'arrêter utilisez simplement **stop.sh**.
 +
 +On vérifie qu'il tourne bien en regardant les ports ouvert de la machine :
 +<code>
 +$ netstat -nlpt
 +Connexions Internet actives (seulement serveurs)
 +Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
 +tcp        0      0 0.0.0.0:111             0.0.0.0:              LISTEN      867/portmap     
 +tcp        0      0 0.0.0.0:51797           0.0.0.0:              LISTEN      879/rpc.statd   
 +tcp        0      0 0.0.0.0:22              0.0.0.0:              LISTEN      1464/sshd       
 +tcp        0      0 127.0.0.1:25            0.0.0.0:              LISTEN      1411/exim4      
 +tcp6            0 :::8080                 :::                   LISTEN      15083/java      
 +tcp6            0 :::22                   :::                   LISTEN      1464/sshd       
 +tcp6            0 ::1:25                  :::*                    LISTEN      1411/exim4      
 +tcp6            0 127.0.0.1:8005          :::*                    LISTEN      15083/java      
 +tcp6            0 :::8009                 :::                   LISTEN      15083/java  
 +</code>
 +Si les port 8005, 8009 (ajp pour apache) et 8080 sont ouverts, alors votre CAS tourne correctement.
 +Allons voir ce que cela donne concrètement : http://IP_du_CAS:8080/ vous redirige normalement sur la page /login du CAS. Il existe un compte de test, identifiant : **password** et mot de passe **password**.
 +
 +Un petit tout dans les logs pour voir se qu'il s'y passe :
 +<code>
 +$ tail apache-tomcat-6.0.32/logs/auth.log 
 +Sat Aug 20 22:40:45 CEST 2011 - AUTHENTICATION_SUCCESS for '[username: password]' from '192.168.10.99'
 +</code>
 +
 +Pour se déconnecter : http://IP_du_CAS:8080/logout
 +
 +
 +===== Sécurisation du CAS =====
 +
 +Nous n'avons tout simplement pas eu besoin de le faire, car nous utilisons ensuite un vhost qui lui est sécurisé.
 +
 +===== CAS-toolbox =====
 +
 +Avec CAS-toolbox, nous allons pouvoir configurer le CAS pour qu'il utilise notre LDAP et aussi personnaliser les page (template et CSS).
 +
 +
 +==== Installation de ANT ====
 +
 +Ant est un outil de compilation. Pour l'installer :
 +  sudo apt-get install ant
 +
 +==== Installation de CAS-toolbox ====
 +
 +Téléchargez la dernière version de cas-toolbox ici : https://sourcesup.cru.fr/frs/?group_id=401
 +Dans la foulé, téléchargez aussi cas-maven-repository (sur le même site).
 +
 +Décompressez le dans **/opt/** :
 +  tar xvzf ~/cas-toolbox-3.4.7-1.tar.gz
 +  cd cas-toolbox-3.4.7-1/
 +
 +On crée ensuite un répertoire build pour y décompacter cas-maven-repository :
 +  mkdir build
 +  tar xvzf /opt/cas-maven-repository-3.4.7-1.tar.gz -C build/
 +  
 +Dans **config.properties** vérifiez/adaptez les variables suivantes (nous sommes dans une configuration de test) :
 +<code>
 +cas.authHandlers=fileHandler,simpleTestHandler
 +</code>
 +
 +Dans **build.properties**, pensez à bien adapter le //deploy.path// au dossier de cas-quickstart :
 +<code>
 +#deploy dir
 +deploy.path=/opt/cas-quickstart-3.4.7-1/webapps/cas/
 +[...]
 +#Améliore la rapidité de la compilation
 +maven.offline=true
 +[...]
 +simpleTestHandler.name=cas-server-support-generic
 +simpleTestHandler.conf=simpletest-auth.xml
 +</code>
 +
 +<note important>Dans la version il manque la variable package.version, ce qui génère une erreur pendant la compilation je l'ai donc simplement ajoutée dans build.properties :
 +  package.version=3.4.7
 +</note>
 +
 +Allez on compile et on déploie (dans le dossier de cas-toolbox) :
 +<code>
 +$ ant init
 +[...]
 +BUILD SUCCESSFUL
 +$ ant deploy
 +BUILD SUCCESSFUL
 +</code>
 +
 +Voilà c'est bon, on va maintenant configurer le LDAP puis personnaliser les pages.
 +
 +===== Configuration du LDAP =====
 +
 +Rien de plus simple c'est configuré en 2 lignes, dans **config.properties** de cas-toolbox :
 +<code>
 +# Ldap properties
 +ldap.host.1=ldap://ldap.mdl29:389
 +ldap.basedn=uid=%u,ou=Users,dc=mdl29,dc=net
 +[...]
 +cas.authHandlers=ldapHandler
 +</code>
 +
 +Un petit **ant init** et **ant deploy**, puis relance de cas-quickstart **./stop.sh && start.sh**.
 +
 +
 +===== Thème et template =====
 +
 +Nous allons jouer sur les variables **theme** et **views** de **config.properties** (cas-toolbox).
 +
 +==== Création d'une "vue"  ====
 +
 +Les fichiers personnalisés seront dans **custom** (de cas-toolbox). On crée d'abord  les dossiers avec les bonnes arborescences pour accueillir notre view :
 +  mkdir -p custom/webpages/WEB-INF/view/jsp/
 +  mkdir -p custom/webpages/WEB-INF/classes
 +Puis on part de la vue par défaut présente dans cas-quickstart qu'on va copier coller (mdl29 est le nom de la vue) :
 +  cp ../cas-quickstart*/webapps/cas/WEB-INF/view/jsp/default custom/webpages/WEB-INF/view/jsp/mdl29
 +
 +
 +
 +Enfin il faut créer un fichier **custom/webpages/WEB-INF/classes/mdl29_views.properties** (adapter au nom de votre vue). Ce fichier n'est autre qu'une adaptation de **/cas-quickstart*/webapps/cas/WEB-INF/classes/default_views.properties**.
 +
 +Ensuite vous changez le(s) chemin(s), par exemple dans notre fichier :
 +<code>
 +### Login view (/login)
 +casLoginView.(class)=org.springframework.web.servlet.view.JstlView
 +casLoginView.url=/WEB-INF/view/jsp/mdl29/ui/casLoginView.jsp
 +
 +### Login confirmation view (logged in, warn=true)
 +casLoginConfirmView.(class)=org.springframework.web.servlet.view.JstlView
 +casLoginConfirmView.url=/WEB-INF/view/jsp/mdl29/ui/casConfirmView.jsp
 +
 +### Logged-in view (logged in, no service provided)
 +casLoginGenericSuccessView.(class)=org.springframework.web.servlet.view.JstlView
 +casLoginGenericSuccessView.url=/WEB-INF/view/jsp/mdl29/ui/casGenericSuccess.jsp
 +
 +### Logout view (/logout)
 +casLogoutView.(class)=org.springframework.web.servlet.view.JstlView
 +casLogoutView.url=/WEB-INF/view/jsp/mdl29/ui/casLogoutView.jsp
 +
 +### CAS error view
 +viewServiceErrorView.(class)=org.springframework.web.servlet.view.JstlView
 +viewServiceErrorView.url=/WEB-INF/view/jsp/mdl29/ui/serviceErrorView.jsp
 +
 +viewServiceSsoErrorView.(class)=org.springframework.web.servlet.view.JstlView
 +viewServiceSsoErrorView.url=/WEB-INF/view/jsp/mdl29/ui/serviceErrorSsoView.jsp
 +</code>
 +
 +Je vous laisse bidouiller les scripts pour vous amuser avec :)
 +
 +==== Création d'un thème ====
 +
 +On crée l'arborescence :
 +  mkdir -p custom/webpages/themes/mdl29
 +  
 +Puis on copie le thème par défaut :
 +  cp /opt/cas-quickstart-*/webapps/cas/themes/default/* custom/webpages/themes/mdl29/
 +
 +Ensuite vous adaptez les CSS, il ne faut pas non plus oublier un autre fichier .properties.
 +
 +Vous aurez besoin d'un fichier **custom/webpages/WEB-INF/classes/mdl29.properties** (adapter au nom de votre thème), voici le notre (nous avons 2 CSS dont un pour mobile) :
 +<code>
 +mobile.custom.css.file=themes/mdl29/default-mobile-custom.css
 +standard.custom.css.file=themes/mdl29/cas.css
 +</code>
 +
 +\\ \\
 +
 +Enfin dans la configuration **config.properties** :
 +<code>
 +# graphic theme
 +theme=mdl29
 +views=mdl29
 +</code>
 +
 +\\
 +
 +On compile et on relance le CAS.
 +
 +===== vhost apache =====
 +
 +Vous devez activer le module prox_ajp :
 +  a2enmod proxy_ajp
 +
 +Ensuite voici le vhost /etc/apache2/sites-available/castest.mdl29 :
 +<code>
 +<VirtualHost *:80> #Utilié pour les transactions internes avec le cas, sinon redirection, car pam_cas ne prend pas en compte le certif
 +   ServerName castest.mdl29
 +   DocumentRoot /var/www/cas
 +
 +   ProxyPass      / ajp://cas2.mdl29:8009/ retry=0
 +   ProxyPassReverse  / ajp://cas2.mdl29:8009/ retry=0
 +   RequestHeader set "x-webobjects-server-name" "cas2.mdl29"
 +   RequestHeader set "x-webobjects-server-url" "https://cas2.mdl29/CAS/"
 +</VirtualHost>
 +
 +
 +<VirtualHost *:443>
 + ServerName castest.mdl29
 + DocumentRoot /var/www/cas
 +   # SSL
 +          SSLEngine on
 +          SSLCertificateFile     /etc/apache2/sites-available/ssl/auto_mdl29/mdl29.crt
 +          SSLCertificateKeyFile /etc/apache2/sites-available/ssl/auto_mdl29/mdl29.key
 +          SSLCACertificateFile /chemin/du/pem
 +          SSLVerifyClient None
 +
 + CustomLog /var/log/apache2/cas.mdl29.net.log combined
 +
 + ProxyPass      / ajp://cas2.mdl29:8009/ retry=0
 + ProxyPassReverse  / ajp://cas2.mdl29:8009/ retry=0
 + RequestHeader set "x-webobjects-server-name" "cas2.mdl29"
 + RequestHeader set "x-webobjects-server-url" "https://cas2.mdl29/CAS/"
 +</VirtualHost>
 +</code>
 +
 +<note>Nous avons ajouté un accès sur port 80, que nous utilisons uniquement en local car pam_cas n'acceptait pas notre certificat</note>
 +
 +===== CAS Proxy et certificats =====
 +
 +Le CAS aura besoin de communiquer avec les différents services, toujours de manière sécurisée, il doit donc accepter les certificats de ses services.
 +
 +
 +Pour des besoins de développement vous serez peut-être amené à utiliser des certificats auto signés il est donc nécessaire de connaitre la démarche d'ajout des certificats.
 +
 + 
 +Les certificats sont stockés dans le keystore de JAVA, pour lister les certificats déjà présents (sur la machine du CAS) :
 +  keytool -v -list -keystore $JAVA_HOME/jre/lib/security/cacerts
 +
 +Le mot de passe par défaut est **changeit**
 +
 +Pour ajouter un certificat :
 +  keytool -import -trustcacerts -alias _mdl29_net -file mdl29.net.crt  -keystore $JAVA_HOME/jre/lib/security/cacerts
 +  
 +
 +Pour plus de commandes : http://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html
 +
 +\\ \\
 +
 +
 +----
 +Rédigé par Benjamin Bernard \\
 +Retour au sommaire principal : [[braveo:docinstall:cas|Central Authentification Service CAS]]
 +Retour au sommaire principal
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki