Utilisation du programme d’installation Shibboleth pour Windows

Introduction

Le guide que voici est un condensé, étape par étape, du guide d’installation de Shibboleth pour Windows. En utilisant ce programme d’installation, vous aiderez le serveur de votre fournisseur d’identité (IdP) à se connecter plus vite et vous en assurerez une plus grande stabilité dans certains cas. Le programme installe à la fois un serveur Web Jetty et le logiciel Shibboleth IdP avec une configuration vierge au départ, ce qui en garantit le bon fonctionnement. Une fois l’installation de base terminée, on pourra ajouter les paramètres spécifiques à la Fédération canadienne d’accès (FCA) à l’IdP.

Au terme de ces étapes :

  • vous disposerez d’un fournisseur d’identités fonctionnel bien que réduit à son strict minimum que vous pourrez adapter à votre environnement;
  • vous pourrez vérifier l’ouverture d’une séance avec la fonction admin/Hello intégrée au protocole de connexion LDAP sur l’Active Directory de l’institution.

Prérequis

  • Installer Visual Studio Redistributable (https://aka.ms/vs/16/release/vc_redist.x64.exe)
  • Installer une version 11.X JDK d’OpenJDK à partir d’une des machines Java virtuelles (JVM) énumérées ici
    • La FCA préconise Corretto 11 d’Amazon pour l’IdP sur Windows.

Remarque : les versions de JDK postérieures à la version 11.X ne fonctionneront pas, car elles viennent sans créateur de script Java.

  • Installer un éditeur XML avec surlignage syntaxique afin de réduire le nombre d’erreurs possibles lors de l’édition (version gratuite de Visual Studio Community, par exemple, ou Notepad++)

Installation de l’IdP Shibboleth

  1. Étapes à suivre pour l’installateur Shibboleth : https://wiki.shibboleth.net/confluence/display/IDP4/WindowsInstallation
    Cochez les cases « Install Jetty » et « Configure for Active Directory », puis suivez le dialogue d’AD.
  2. Dans ldap.properties vérifiez les paramètre de idp.authn.LDAP.XXX, car ils sont spécifiques au site. Lisez https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631612/LDAPAuthnConfiguration pour en savoir plus.
  3. Autorisez http://<idp_name>/idp/status à accéder à la page de statut de l’IdP.
    • Modifiez admin.properties et décommentez le bloc sur le statut.
    • Modifiez access-control.xml et ajoutez une ou plusieurs plages d’adresses IP à AccessByIPAddress afin que les adresses désirées puissent accéder aux pages de statut. Par défaut, seule la machine locale y aura accès par rebouclage de l’adresse.
    • Relancez l’IdP.
  4. Activer l’application de configuration HelloWorld

Remarque : Pour accéder à l’application, vous devrez ajouter le SubjectName que vous utilisez de manière à établir la connexion, comme avec $idphome/conf/access-control.xml dans le bloc « AccessByAdminUser ».

  • Relancez l’IdP pour activer les changements et visitez le site admin/hello sur votre IdP.
  1. Préparer l’IdP pour les agrégats de métadonnées volumineux en augmentant au maximum le pool de mémoire de la JVM.
    • Portez le pool de mémoire de la JVM à son maximum avec la commande que voici :

C:\Program Files (x86)\Shibboleth\Procrun\shibd_idpw.exe

  • Cliquez l’onglet Java et fixez le pool de mémoire à 4 096 Mo puis cliquez OK.

Configuration pour la FCA

Configurer le fils de métadonnées de la FCA

Pour vous connecter au fil de métadonnées de la FCA :

  • configurez la récupération des métadonnées pour qu’elle s’effectue toutes les heures;
  • vérifiez les agrégats avec la clé de signature de la FCA (caf_metadata_verify.crt);
  • demandez à la FCA de reconnaître la nouvelle instance de votre IdP en envoyant vos métadonnées à [email protected].

Pour valider les agrégats, l’IdP aura besoin de la clé de signature de la FCA qui devra être enregistrée sur le disque. À cette fin, récupérez la clé sur l’url opérationnel de la FCA à https://caf-shib2ops.ca/CoreServices/caf_metadata_verify.crt et placez-la dans le fichier $idp_home/credentials/caf_metadata_verify.crt en prévision de la vérification des métadonnées.

Ensuite, établissez le lien de confiance entre votre IdP et la FCA et modifiez metadata-providers.xml en ajoutant ce qui suit au fichier :

<MetadataProvider id="URLMDCAFTestbed"        
        xsi:type="FileBackedHTTPMetadataProvider"
        xmlns="urn:mace:shibboleth:2.0:metadata"
        metadataURL="https://caf-shib2ops.ca/CoreServices/testbed/caf_test_fed_unsigned.xml"
        backingFile="%{idp.home}/metadata/caf_test_fed_unsigned.xml"
        maxRefreshDelay="PT1H">
</MetadataProvider>

<MetadataProvider id="URLMDCAF_Prod"
xsi:type="FileBackedHTTPMetadataProvider"
backingFile="%{idp.home}/metadata/caf_metadata_signed_sha256.xml"
metadataURL="https://caf-shib2ops.ca/CoreServices/caf_metadata_signed_sha256.xml"
failFastInitialization="false"
maxRefreshDelay="PT4H">
        <MetadataFilter xsi:type="SignatureValidation" certificateFile="%
{idp.home}/credentials/caf_metadata_verify.crt" />
        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P30D"/>
        <MetadataFilter xsi:type="EntityRole" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
                  <RetainedRole>md:SPSSODescriptor</RetainedRole>
        </MetadataFilter>
</MetadataProvider>

<MetadataProvider id="URLMDCAF_eduGAIN_SP"
xsi:type="FileBackedHTTPMetadataProvider"backingFile="%
{idp.home}/metadata/caf_interfed_sp.xml"
metadataURL="https://caf-shib2ops.ca/CoreServices/caf_interfed_sp.xml"
failFastInitialization="false"
maxRefreshDelay="PT4H">
        <MetadataFilter xsi:type="SignatureValidation" certificateFile="%{idp.home}/credentials/caf_metadata_verify.crt" />
        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P30D"/>
        <MetadataFilter xsi:type="EntityRole" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
                  <RetainedRole>md:SPSSODescriptor</RetainedRole>
        </MetadataFilter>
</MetadataProvider>

Astuce : on peut contraindre le rechargement des métadonnées d’essai de la FCA en exécutant la commande suivante :
C:\Program Files (x86)”\Shibboleth\IdP\bin\reload-metadata -id URLMDCAFTestbed
à partir de la fenêtre CMD ou de l’adresse suivante, sur le navigateur :
https://127.0.0.1/idp/profile/admin/reload-metadata?id=URLMDCAFTestbed

Cela fait, envoyez votre nouvelle entityID et les métadonnées de $idp_home/metadata/idp-metadata.xml à [email protected] pour que CANARIE les ajoute à la version d’essai de la fédération. Ensuite, vous pourrez tester la connexion d’une autre façon avec https://validator.caftest.canarie.ca. Cela vous permettra de vérifier votre IdP avec un service fédéré complet, sans avoir à en un créer vous-même.

Diffusion des attributs

Ouvrir une séance et ajouter (« résoudre ») des attributs à une identité sont deux opérations distinctes. En d’autres termes, vous connecter ne signifie pas nécessairement que vous avez des attributs.

Les attributs de la version de l’IdP Shibboleth la plus récente sont commandés par le registre des attributs, qui se trouve dans %{idp.home}/conf/attributes et utilise default-rules.xml pour indiquer quelle série de fichiers utiliser comme attributs des répertoires. Si vous n’avez pas ces attributs, copiez-les dans le répertoire %{idp.home}/dist/conf/attributes.

La version de base de l’IdP vient avec un jeu modeste d’attributs dynamiques et statiques par défaut, à l’installation. Vous devez personnaliser celui-ci pour faire concorder les attributs de la bonne source dans votre répertoire (AD/LDAP) avec les attributs correspondants de l’utilisateur.

On trouvera des précisions techniques sur la résolution des attributs ici : https://shibboleth.atlassian.net/wiki/spaces/IDP4/pages/1265631517/AttributeFilterConfiguration

Configuration plus avancées

Il se peut que certains sites exigent l’utilisation d’Azure comme fournisseur d’identification unique (SSO) et d’authentification multifactorielle (MFA). Nous vous recommandons de lire l’article que voici, dans la base de connaissances Shibboleth , pour en apprendre davantage sur cette configuration plus complexe : https://shibboleth.atlassian.net/wiki/spaces/KB/pages/1467056889/Using+SAML+Proxying+in+the+Shibboleth+IdP+to+connect+with+Azure+AD