Installation et configuration

Le fournisseur d'identité (IdP) est intégré au portail captif Univnautes depuis sa version du 16 septembre 2011. Pour en disposer, il suffit d'installer ou de mettre à jour la solution.

Le fournisseur d'identité (IdP) n'est pas activé par défaut.

Étape 1 : Ouvrir le port 4443/tcp

L'IdP intégré propose un service en HTTPS sur le port 4443/tcp du portail captif, sur toutes ses interfaces (LAN et WAN). Pour préparer l'activation de l'IdP intégré, il faut donc ouvrir l'accès à ce port. Sur Univnautes/pfSense, il faut :

  • se rendre sur la page Firewall / Rules / LAN

  • juste en dessous de la première ligne concernant le port 8443, ajouter une ligne qui ouvre le port 4443/tcp. Potur cela, une technique simple :

    • copier la ligne concernant 8443/tcp (en cliquant sur le petit icone "+" adjacent) :

      Règles du firewall

    • modifier le port cible à 4443, et la description, puis cliquer sur Save en bas de page :

      Règles du firewall

Comme après toute modification sur les régles du firewall de pfSense, il faudra ensuite cliquer sur le bouton "Apply Changes" en haut de page pour que les changements soient pris en compte.

La modification décrite ci-dessus permet à tous les utilisateurs du réseau local (i.e. les clients derrière le portail captif) d'accéder à l'IdP. Si ce dernier doit pouvoir être accessible depuis d'autres réseaux, il faut ajouter des règles correspondante dans le pare-feu, sur l'interface WAN le cas échéant. Suivre pour cela la documentation de pfSense.

Étape 2 : Création des utilisateurs

L'IdP authentifie les utilisateurs de pfSense possédant le privilège «Univnautes IdP - account» (et uniquement ceux-ci).

Une bonne pratique est de créer un ou plusieurs groupes avec ce privilège, et de placer les utilisateurs dans ces groupes. Il est ainsi aisé de désactiver l'accès à l'IdP pour tout un groupe, en retirant le privilège au groupe.

Création d'un groupe « idp »

  • Se rendre dans System / User management sur l'onglet Groups. Cliquer sur le bouton « + » en bas à droite de la liste et ajouter un groupe nommé « idp ». Cliquer sur le bouton save, cela ramène à la liste des groupes.

  • Editer alors le groupe créé en cliquant sur l'icône « e » à droite de sa ligne. Sur la page d'édition, dans la section Assigned Privileges, ajouter le privilège « Univnautes IdP - account ». Cliquer sur save pour revenir à la liste des groupes.

Ajout d'un utilisateur

  • Se rendre dans System / User management sur le premier onglet Users. Cliquer sur le bouton « + » en bas à droite de la liste et ajouter un utilisateur en définissant ses paramètres :

    • son nom de connexion (dans la suite de ce document, ce sera « test »)

    • son mot de passe, à répéter deux fois pour éviter les fautes de frappe

    • son nom complet (en évitant si possibles les caractère « ésotériques »)

    • la date d'expiration du compte, le cas échéant

    • et l'ajouter dans le groupe «idp» précédemment créé

  • Cliquer sur le bouton save, cela ramène à la liste des utilisateurs.

C'est parce qu'il est placé dans le groupe «idp» possèdant le privilège d'accès à l'IdP que l'utilisateur pourra s'y authentifier.

En éditant l'utilisateur (petit icône « e » à droite de sa ligne), on peut voir les privilèges dont il dispose dans la section « Effective Privileges ».

Gestion des utilisateurs

Étape 3 : Ajout des clés SAML

Pour sécuriser le système, il faut déclarer une paire de clés pour l'IdP, une privée et une publique (sous forme d'un certificat x509). Une clé auto-signée suffit parfaitement (avec openssl, voire par exemple cette documentation pour produire la paire de clés).

Ces clés doivent être déclarées sur la page Services / Captive Portal au niveau de l'onglet Univnautes, dans la section SAML 2.0 Local Identity Provider :

Ajout des clés SAML

Étape 4 : Activation du service IdP

Pour activer l'IdP :

  • se rendre sur la page Services / Captive Portal

  • aller sur l'onglet Univnautes

  • au niveau de la section SAML 2.0 Local Identity Provider cocher la case Enable local IdP (voire la copie d'écran ci-dessus)

  • cliquer sur le bouton Save en bas de la page

Après quelques secondes (au maximum 10) le service IdP est visiblement lancé sur la page Status / Services.

Liste des services

Étape 5 (optionnelle) : ajout d'une entrée DNS spécifique

Par défaut, l'IdP sera disponible sous le même nom que le portail captif (en général eduspot.univ-paris42.fr), sur le port 4443. Il est cependant possible d'afficher l'IdP sous un autre nom. Pour cela, il suffit que l'entrée DNS correspondante pointe vers l'adresse LAN (ou WAN) de la machine Univnautes.

Cette entrée DNS peut être gérée sur la DNS de l'établissement, ce qui est préférable si l'IdP est destiné à être utilisé par plusieurs portails Univnautes. Mais l'entrée DNS peut aussi être déclarée uniquement sur le réseau local du ou des portails ; dans ce cas, il faut l'indiquer en bas de la section Services / DNS Forwarder (voir la documentation de pfSense).

Il n'est pas possible de placer l'IdP sur le port HTTPS classique 443, celui-ci étant déjà occupé par le portail captif. L'URL de l'IdP sera donc toujours de la forme http://nom.de.machine:4443/.

Étape 6 : Gestion des métadonnées

Une fois l'IdP activé, ses métadonnées sont accessibles sur l'URL : https://nom.de.machine:4443/idp/saml2/metadata

Métadata

L'ajout de l'IdP dans la liste présentée sur le portail captif n'est pas automatique ! Lire ci-dessous la manipulation à effectuer pour cela.

Pour que l'IdP soit visible dans la liste des établissements sur le portail captif, il faut l'ajouter au métadonnées locales. Il faut donc :

  • afficher les metadonnées de l'IdP en allant sur https://nom.de.machine:4443/idp/saml2/metadata

    Attention, les navigateurs Firefox et assimilés n'affichent pas complètement les données XML ! Pour les afficher totalement avant de faire le copier-coller, demandez au navigateur d'afficher le code source de la page (par exemple en tapant sur Ctrl-U)

  • en copier le contenu (par Ctrl-C) de <ns0:EtntityDescriptor...> jusqu'à la fin (attention avec Firefox : il le faire depuis le code source de la page !).

  • aller sur la page Services / Captive Portal, à l'onglet Univnautes

  • coller les metadonnées (Ctrl-V) dans la zone de texte Federation: local metadata (SPs and IdPs), juste au dessus de la dernière ligne </EntitiesDescriptor>.

    Copier / Coller les metadata

  • cliquer sur Save en bas de page

Quelques secondes plus tard, l'IdP est visible dans la liste sur le portail captif.

Liste des IdP

Nommer l'IdP

Les métadonnées de l'IdP intégré ne contiennent pas de joli nom", et l'IdP se trouve affiché sous forme de son URL dans la liste... C'est moche !

Pour choisir un nom pour l'IdP, il faut modifier les métadonnées et ajouter une section Organization, par exemple à la fin :

    (...)
    </ns0:IDPSSODescriptor>
      <Organization>
        <OrganizationName>UN NOM LISIBLE</OrganizationName>
      </Organization>
    </ns0:EntityDescriptor>
    

Sur l'interface d'administration, cela donne :

Nom de l'IdP

Cas d'un test local (hors fédération)

L'IdP intégré à Univnautes va chercher la liste des SP dans la fédération.

Si vous êtes en mode de test local (c'est-à-dire si votre portail captif n'est pas déclaré dans une fédération) alors vous devez également indiquer les métadonnées du portail captif dans les métadonnées locales (toujours par copier-coller).

Fin

Une fois ces opérations effectuées, l'IdP est visible dans la liste et fonctionnel.

Vous pouvez alors jouer avec la création/modification d'utilisateurs (menu System / User managment) pour définir votre politique d'accès.

Limitations

La principale limitation de ce fournisseur d'identités est lié au fait qu'il se base sur les comptes du système pfSense. Ces comptes sont de type "Unix" et ne disposent que d'un login et d'une date d'expiration.

Pour la même raison, il n'est pas raisonnable d'utiliser ce petit IdP local pour gérer un grand nombre de comptes (supérieur à un millier).