Limiter la liste des IdPs proposés par le service de découverte

Cette fonctionnalité permet de mutualiser un WAYF entre plusieurs services ayant un public différent. Exemple d'utilisation : les PRES.

1. Problématique

Le service de découverte (Discovery Service ou DS, anciennement WAYF) est souvent un service mutualisé, au niveau d'un établissement par exemple. L'implémentation développée par SWITCH est configuré pour utiliser un fichier de méta-données et permet de gérer des exceptions ; par exemple pour ajouter les comptes CRU à la liste des IdP proposés.

Ceci dit, au sein d'un établissement, on peut avoir des besoins différents pour plusieurs applications quant à la population à authentifier. Mais une même instance du DS ne pouvait pas être configurée pour proposer une liste d'IdP différente, en fonction du SP qui demande une authentification.

2. Discovery Feed du SP Shibboleth

Depuis sa version 2.4, le SP Shibboleth est capable de publier la liste des IdP qu'il reconnait, sous la forme d'un flux JSON. Cette fonctionnalité est exploité par l'implémentation d'Internet2 du Centralized Discovery Service et également par l'implémentation de SWITCH. Ainsi, le DS pourra adapter la liste des IdP proposés à l'utilisateurs en fonction de la configuration du SP appelant.

Le handler qui gère ce flux JSON est activé par défaut dans le fichier de configuration shibboleth2.xml :

           <!-- JSON feed of discovery information. -->
            <Handler type="DiscoveryFeed" Location="/DiscoFeed"/>

Nous pouvons modifier la configuration de notre SP pour utiliser la fonctionnalité de liste blanche afin de limiter à quelques établissements les IdPs reconnus. Ces modifications sont réalisées dans le fichier shibboleth2.xml :

<MetadataProvider type="XML" uri="https://federation.renater.fr/renater/renater-metadata.xml"
              backingFilePath="/etc/shibboleth/renater-metadata.xml" reloadInternal="7200">
  <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
  <MetadataFilter type="Signature" certificate="metadata-federation-renater.crt"/>
  <MetadataFilter type="Whitelist">
     <Include>urn:mace:cru.fr:federation:univ-montp1.fr</Include>     
     <Include>https://federationrenater.univ-montp2.fr/idp/shibboleth</Include>     
     <Include>urn:mace:cru.fr:federation:univ-montp3.fr</Include>     
  </MetadataFilter>  
</MetadataProvider>

3. Configurer le WAYF de SWITCH pour utiliser le Discovery Feed

Depuis la version 1.16 du WAYF de SWITCH permet d'exploiter le Discovery Feed fournit par un SP. Par contre cette fonctionnalité n'est proposé que lorsque le WAYF est utilisé en mode Embedded.

Pour activer l'utilisation des Discovery Feed au niveau d'Embedded WAYF, vous devez ajouter cet élément de configuration au javascript inclus dans votre application :

// Whether to load Identity Providers from the Discovery Feed provided by
// the Service Provider. 
// IdPs that are not listed in the Discovery Feed and that the SP therefore is 
// not  are able to accept assertions from, are hidden by the Embedded WAYF
// IdPs that are in the Discovery Feed but are unknown to the SWITCHwayf
// are added to the wayf_additional_idps. 
// The list wayf_additional_idps will be sorted alphabetically
// The SP must have configured the discovery feed handler that generates a 
// JSON object. Otherwise it won't generate the JSON data containing the IdPs.
// [Optional, commented out by default]
var wayf_use_disco_feed = true;

Le menu déroulant proposé par le service de découverte liste maintenant les seuls IdPs reconnus par le SP :

4. Configurer l'appel au WAYF pour ne pas proposer certains IdPs

Le Embedded WAYF permet également d'énumérer une liste d'identifiants d'IdPs qui ne seront pas proposés à l'utilisateur. Voici un extrait du code Javascript pour l'appel au Embedded WAYF :

// EntityIDs of Identity Provider that should not be shown at all
// Example of how to hide certain Identity Provider
var wayf_hide_idps = new Array("https://idp.u-paris2.fr/idp/shibboleth", "https://idp.unicaen.fr/idp/shibboleth");

Dans ce cas les deux IdPs mentionnés (Université de Paris 2 et Université de Caen) ne seront pas présenté dans le menu déroulant du WAYF.