Shibboleth est un système de fédération d’identités. Il permet d’authentifier des utilisateurs faisant partie d’établissements/entreprises différentes sur des applications mutualisées.
Peu présent et utile dans le secteur privé, Shibboleth est une référence en terme d’authentification dans le secteur public, au sein du ministère de l’enseignement supérieur et de la recherche. Renater, fournisseur d’accès à Internet réservé aux établissement d’enseignement supérieur et de recherche, est l’un des organismes qui l’utilise le plus.
Shibboleth est composé de plusieurs briques, notamment le Service Provider (SP, fournisseur de services) et dans notre cas le fournisseur d’identité (Identity Provider, IdP)
Avant de pouvoir installer et utiliser shibboleth, il vous faudra installer JDK 6 et Tomcat 7.
Si vous utilisez Debian tapez simplement:
apt-get install openjdk-6-jdk tomcat7
Si vous utilisez FreeBSD, compilez le port www/tomcat
cd /usr/ports/www/tomcat7
make install clean
ou installez le package depuis votre repo pkgng préféré
pkg install tomcat
On télécharge tout d’abord le dernier Shibboleth puis on l’extrait
wget http://shibboleth.net/downloads/identity-provider/latest/shibboleth-identityprovider-2.4.0-bin.tar.gz
tar xvzf shibboleth-identityprovider-2.4.0-bin.tar.gz
Pour pouvoir installer Shibboleth nous allons avoir besoin de spécifier la variable d’environnement JAVA_HOME.
Pour Debian, tapez la commande suivante:
export JAVA_HOME="/usr/lib/jvm/java-6-openjdk-amd64/jre"
Pour FreeBSD:
setenv JAVA_HOME "/usr/local/openjdk6/jre/"
export JAVA_HOME="/usr/local/openjdk6/jre/"
Pour finir nous lançons l’installation:
cd shibboleth-identityprovider-2.4.0
./install.sh
Lors de l’installation le chemin d’installation, le nom du serveur (adresse DNS du CAS/SSO) et un mot de passe vous seront demandés:
Where should the Shibboleth Identity Provider software be installed? [/opt/shibboleth-idp]
What is the fully qualified hostname of the Shibboleth Identity Provider server? [idp.example.org]
A keystore is about to be generated for you. Please enter a password that will be used to protect it.
Une fois l’installation terminée, on copie le fichier WAR de l’application java dans le répertoire d’applications tomcat.
Pour Debian:
cp /opt/shibboleth-idp/war/idp.war /usr/share/tomcat7/webapps/
Pour FreeBSD:
cp /opt/shibboleth-idp/war/idp.war /usr/local/apache-tomcat-7.0/webapps/
Il faut ensuite changer les droits des répertoires de logs et de méta-données.
Pour Debian:
chown -R tomcat7 /opt/shibboleth-idp/logs
chown -R tomcat7 /opt/shibboleth-idp/metadata
Pour FreeBSD:
chown -R www /opt/shibboleth-idp/logs
chown -R www /opt/shibboleth-idp/metadata
Pour finir, on va ajouter quelques librairies JAVA à tomcat afin que Shibboleth fonctionne correctement. Vous trouverez ces fichiers dans le répertoire où vous avez extrait l’installeur de Shibboleth.
Pour Debian:
cp endorsed/*.jar /usr/share/tomcat7/endorsed/
Pour FreeBSD:
cp endorsed/*.jar /usr/local/apache-tomcat-7.0/endorsed/
On peut désormais lancer Tomcat.
Sous Debian:
service tomcat7 start
Sous FreeBSD:
service tomcat start
Pour vérifier que tout fonctionne, connectez vous à l’adresse http://idp.example.org:8080/idp/profile/Status. Si la page affiche ok c’est que l’application est correctement déployée.
Enfin, vérifiez que le portail SSO de Shibboleth fonctionne en allant à l’URL http://idp.example.org:8080/idp/Authn/UserPassword
Le premier axe d’amélioration est la personnalisation du design du SSO. Pour cela c’est très simple, il suffit d’aller dans le répertoire webapps/idp/ de votre tomcat et de personnaliser les fichiers login.jsp et login.css, correspondant à la page de login. Vous n’avez pas besoin de redémarrer tomcat à chaque modification, à contrario des fichiers de configuration de Shibboleth.
Nous avons ici fait la partie la plus simple, à savoir l’installation de Shibboleth. Le plus compliqué reste la configuration de l’IdP lui-même. Vous trouverez dans les sources ci-dessous la documentation Renater, extrêmement complète permettant de comprendre les différents éléments à configurer pour Shibboleth (partez de la partie 4)
J’ai également essayé d’installer Shibboleth avec Jetty 8 (Shibboleth ne supporte que Jetty >= 7) mais je n’ai pas réussi, ni sur Debian, ni sur FreeBSD. Jetty nécessite d’intégrer des fichiers de configuration supplémentaires et des librairies Tomcat pour faire fonctionner Shibboleth, il reste donc plus pertinent d’utiliser Tomcat 7.
Par ailleurs, j’ai fortement apprécié le déploiement sur cette version de Tomcat 7. J’utilise peu Tomcat et ma précédente expérience avec Tomcat 6 n’avait pas été convaincante.
Même si vous n’utilisez pas la fédération d’identité, Shibboleth peut très bien être utilisé en tant que serveur CAS/SSO (dans mon cas il est branché sur 2 OpenLDAP). Si vous suivez la documentation Renater vous devriez sans problème arriver à faire fonctionner cette partie et pouvoir commencer à l’intégrer sur vos services web.
https://wiki.shibboleth.net/confluence/display/SHIB2/IdPInstall https://www.switch.ch/aai/docs/shibboleth/SWITCH/latest/idp/deployment/#shibboleth-idp-configuration https://services.renater.fr/federation/docs/installation/idp_decembre2012