Shibboleth

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)

Installation

Pré-requis

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

Installation de Shibboleth

Téléchargement de l’archive

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

Configuration de la variable JAVA_HOME

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:

  • si vous utilisez csh:
setenv JAVA_HOME "/usr/local/openjdk6/jre/"
  • si vous utilisez sh, bash ou encore zsh:
export JAVA_HOME="/usr/local/openjdk6/jre/"

Lancement de l’installeur

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/

Lancement du service

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

Designer le SSO

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.

Conclusion

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.

Sources

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