Mise en place d'une relation bilatérale
1. Configurer une relation bilatérale entre votre IdP et un service non fédéré
Il n'est pas nécessaire de faire partie d'une fédération (cercle de confiance) pour utiliser le logiciel Shibboleth. Si vous disposez d'un fournisseur de services (SP) et d'un fournisseur d'identités (IdP), vous pouvez définir une confiance mutuelle entre ces deux briques.
Nous allons donc dans cette partie, configurer une relation de confiance entre votre IdP et un service de test non fédéré. Comme vous ne disposez pas encore d'un SP à ce stade du TP, nous avons préparé un SP local qui sera utilisé uniquement dans cette partie du TP.
Dans le cadre d'une relation bilatérale, votre IdP doit faire confiance à un SP. Pour ce faire, il doit connaitre les méta-données du SP. Le SP Shibboleth expose ses méta-données de manière dynamique via l'adresse https://formsfede-014.renater.fr/sp-ABC/Shibboleth.sso/Metadata. Les informations concernant ce SP vous seront transmises pendant la formation.
Nous allons donc configurer l'IdP pour faire confiance à ce SP en éditant le fichier metadata-provider.xml
comme suit:
- /opt/shibboleth-idp/conf/metadata-providers.xml
[...] <MetadataProvider id="SPFORMATION" xsi:type="FileBackedHTTPMetadataProvider" backingFile="%{idp.home}/metadata/spformation.xml" disregardTLSCertificate="true" ** metadataURL="https://formsfede-014.renater.fr/sp-ABC/Shibboleth.sso/Metadata">** </MetadataProvider>
Pour prendre en compte cette modification, il y a 3 options:
- recharger l'intégralité de la configuration de l'IdP, en relanceant Tomcat
- recharger uniquement la configuration de l'IdP correspondant à la gestion des métadonnées, en utilisant le script
bin/reload-service.sh
- recharger uniquement un jeu de métadonnées spécifique, en utilisant le script
bin/reload-metadata.sh
Nous choisissons ici la deuxième option:
$> /opt/shibboleth-idp/bin/reload-service.sh -id shibboleth.MetadataResolverService Configuration reloaded for 'shibboleth.MetadataResolverService'
Vous pouvez verifier que le fichier de métadonnées est bien présent dans :
$> ls -l /opt/shibboleth-idp/metadata/ -rw-r--r-- 1 tomcat root 15072 06 mai 16:35 idp-metadata.xml -rw-r--r-- 1 tomcat tomcat 8419 06 mai 17:04 spformation.xml
https://mon-poste.fr/idp/shibboleth
Il s'agit en fait du contenu fichier
/opt/shibboleth-idp/metadata/idp-metadata.xml
Ces meta-données sont rafraichies toutes les 10 minutes par le SP - pour les besoins de la formation.
Rendez-vous sur https://formsfede-014.renater.fr/sp-ABC.
Cliquez sur Connexion. Si vous rencontrez une page d'erreur de ce type, c'est normal :
En effet, le fichier /opt/shibboleth-idp/metadata/idp-metadata.xml
est généré lors de l'installation de l'IDP, mais n'est volontairement pas exploitable directement par un SP.
En effet, une balise XML indique une date de validité de ces méta-données. Cette date de validité est positionnée à la date d'installation.
Pour résoudre le problème, il est nécessaire d'éditer le fichier afin de modifier la validité - ou de supprimer la balise.
- /opt/shibboleth-idp/metadata/idp-metadata.xml
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:shibmd="urn:mace:shibboleth:metadata:1.0" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:mdui="urn:oasis:names:tc:SAML:metadata:ui" xmlns:req-attr="urn:oasis:names:tc:SAML:protocol:ext:req-attr" **validUntil="2020-09-15T14:07:20.803Z"** entityID="https://formsfede-027.renater.fr/idp/shibboleth">
Une fois cette mmise à jour effectuée (inutile de redémarrer Tomcat), et quand le SP aura pris en compte la mise à jour, vous pourrez accéder à https://formsfede-014.renater.fr/sp-ABC.
Si tout s'est bien passé, voici ce que vous devez obtenir en cliquant sur le bouton de connexion :
Vous arrivez sur la page de login de l'IDP.
Vous pouvez observer les échanges réseau lors du clic sur Connexion avec SAMLTracer ou avec la console de développement de votre navigateur (F12 avec Firefox).
Pour se connecter, il va maintenant falloir que l'IDP soit configuré pour exploiter une base d'utilisateurs, généralement contenue dans un annuaire LDAP.