Shibboleth sur NetBSD

Il est indispensable de potasser un minimum avant de se lancer ; voir :

Après un moment d'intense doute sur la santé mentale des concepteurs mais en relisant quelques paragraphes bien choisis dans la prose ci-dessus (en particulier dans le dernier lien), il s'avère que c'est relativement simple. À installer aussi finalement.

Commencer par installer via pkgsrc :

  • security/openssl (en premier)
  • www/apache22 et www/curl (veiller à avoir $SSLBASE=/usr/pkg)
  • textproc/xerces-c et textprox/xalan-c

Si vous voulez la documentation des paquetages, installez aussi devel/doxygen.

Suite à la main. Il nous manque (dans cet ordre) : log4cpp et log4shib, xmlsecurity-c et xmltooling-c, cxxtest et enfin OpenSAML et Shibboleth-SP. À la fin, on veut un service provider dans sa version 1.3.

Tous les paquetages suivants utilisent les GNU tools, il suffit de lancer le script configure avec --help pour trouver les options kivonbien.

checking XML-Security version... OK
configure: error: unable to link with XML-Security

Le config.log est explicite :

ld: warning: libxalan-c.so, needed by /usr/local/lib/libxml-security-c.so, not found (try using -rpath or -rpath-link)
ld: warning: libxalanMsg.so, needed by /usr/local/lib/libxml-security-c.so, not found (try using -rpath or -rpath-link)

J'ai donc dû aider un peu ld(1) avec un $LDFLAGS bien senti :

$ env LDFLAGS="-L/usr/pkg/lib -L/usr/lib -L/lib -lxalan-c -lxalanMsg" \
? ./configure --with-log4shib=/usr/local --with-xerces=/usr/pkg \
? --with-xalan=/usr/pkg --with-xmlsec=/usr/local --with-openssl=/usr/pkg \
? --with-curl=/usr/pkg && gmake && sudo gmake install
$ sudo cp -rp cxxtest /usr/local

et éditer cxxtestgen.pl et cxxtestgen.py pour changer le shebang.

Voilà, on a des bibliothèques dans /usr/local/lib, un module Apache /usr/local/libexec/mod_shib_22.so et un daemon /usr/local/sbin/shibd. On a aussi des fichiers de config dans /usr/local/etc.

Penser à peupler /etc/ld.so.conf avec :

/usr/pkg/lib
/usr/local/lib

On va rejoindre la fédération de test du CRU. Charger les exemples http://federation.cru.fr/test/exemples/conf-sp13-cru.tar.gz Dans la tarball, on trouve des fichiers de configuration et plusieurs scripts.

Le serveur a besoin de 2 certificats :

  • l'un pour les clients HTTPS, celui de votre serveur Apache donc
  • un autre pour discuter avec l'IdP

Dans les fichiers du CRU, dans le script metadatarefresh.sh, changer le shebang pour utiliser /usr/pkg/bin/bash (le script utilise une syntaxe spécifique à bash(1) qui n'est pas exécutable par le sh(1) Bourne).

metadatarefres.sh appelle /usr/local/sbin/siterefresh ; ce binaire (qui ne connaît pas la notion de proxy apparemment) charge en HTTP le fichier $METADATA_URL ; pour nous c'est http://federation.cru.fr/deploiement. Ça n'est dit nulle-part mais ouvrir en sortie tcp/80.

Ce script doit tourner régulièrement, l'ajouter en crontab(5) ; la doc dit :

30 4 * * * /usr/local/etc/shibboleth/metadatarefresh.sh SP

Pour durcir on ajoute un wrapper qui vérifie que federation.cru.fr a bien l'IP 195.220.94.183 et on restreint en sortie sur tcp/80 à cette IP (ipf(8) est votre ami). En cas de changement d'adresse, email à netadmin@ et erreur syslog(3). C'est notre wrapper /usr/local/eila/shib-md-refresh.sh qu'on met en crontab(5) à la place.

La documentation recommande de surveiller le dameon shibd. Monit fait très bien l'affaire (pkgsrc : sysutils/monit).

On crée un petit script /usr/local/eila/shibd.sh (qui accepte les arguments start, stop, restart et status) et on l'appelle /etc/rc.local pour qu'il soit lancé au démarrage du système.

Bien faire attention à avoir un certificat auto-signé pour discuter entre le SP et l'IdP (sans quoi, si le certificat est signé par une AC non-reconnue, voir avec le CRU pour que l'AC soit intégrée aux métadonnées).

Le daemon shibd se configure avec le fichier /usr/local/etc/shibboleth/shibboleth.xml. En particulier, configurer :

  ...
  <UnixListener address="/var/run/shib-shar.sock"/>
  ...
  <Host name="shibboleth.eila.univ-paris-diderot.fr">
    <!-- requireSession = false car ShibRequireSession vaut On dans la conf' apache -->
    <!-- malgre cette note, ca marche bien avec true -->
    <Path name="tests" authType="shibboleth" requireSession="true"/>
  ...
  <Applications id="default" providerId="https://shibboleth.eila.univ-paris-diderot.fr/tests"
    homeURL="https://shibboleth.eila.univ-paris-diderot.fr/tests/index.html"
  ...
  <Sessions lifetime="7200" timeout="3600" checkAddress="false" consistentAddress="true"
    handlerURL="/tests/Shibboleth.sso" handlerSSL="false" idpHistory="true" idpHistoryDays="7">
  ...
  <SessionInitiator isDefault="true" id="example" Location="/WAYF/idp.example.org"
    wayfURL="http://federation.cru.fr/wayftest/"
  ...
    supportContact="netadmin@eila.univ-paris-diderot.fr"
  ...
  <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata"
    uri="/usr/local/etc/shibboleth/cru-test-metadata.xml" />
  ...
  <Key>
    <Path>/usr/local/etc/shibboleth/shib-sp-idp.key</Path>
  </Key>
  <Certificate>
       <Path>/usr/local/etc/shibboleth/shib-sp-idp.crt</Path>
  </Certificate>

Passons à Apache : ajoutons :

Include "/usr/local/etc/shibboleth/apache22.config"

dans le virtual host concerné (pensez à gérer votre /cgi-bin au passage pour le CGI de test shibenv.cgi que vous trouverez ici : http://shib.kuleuven.be/download/sp/test_scripts/shibenv.pl.txt dans /users/htdocs/web/cgi-bin ; changer le shebang, les droits, etc…). Dans /usr/local/etc/shibboleth/apache22.config, modifier :

<Location /tests>
  AuthType shibboleth
  ShibRequireSession On
  require valid-user
</Location>

En principe vous devez aussi avoir :

LoadModule mod_shib /usr/local/libexec/mod_shib_22.so
...
ShibSchemaDir /usr/local/share/xml/shibboleth
ShibConfig /usr/local/etc/shibboleth/shibboleth.xml

Configurez /etc/newsyslog.conf en reprenant les journaux de shibd et Apache.

C'est prêt, plus qu'à tester !

S'inscrire à la liste federation-utilisateurs@cru.fr sur le site du CRU http://listes.cru.fr/sympa puis se connecter à https://federation.cru.fr/test/gestion/enregistrement/sp pour s'enregistrer dans la fédération de test.

Bien noter l'URL de votre formulaire pour pouvoir modifier des paramètres par la suite.

Pour choisir les attributs : http://federation.cru.fr/cru/attributs.html

Lancer les daemons shibd puis httpd et testons avec notre CGI, pour moi : https://shibboleth.eila.univ-paris-diderot.fr/tests/cgi-bin/shibenv.cgi

On peut consulter les journaux sur l'IdP :

Voilà, plus qu'à jouer avec les variables d'environnement dans le code de votre application, par exemple $ENV{REMOTE_USER} (Perl) aka $_SERVER['REMOTE_USER'] (PHP).

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus
  • user/pc/sysadmin/shibboleth-netbsd.txt
  • Dernière modification : 2009/04/05 19:25
  • de 127.0.0.1