Configurer un SP Shibboleth pour exporter une assertion SAML

Le fonctionnement du SP Shibboleth consiste notamment à extraire les attributs utilisateurs de l'assertion SAML reçue de l'IdP et les rendre disponibles à une application web sous forme de variables d'environnement (ou de champs d'entête HTTP). Dans certains cas, l'application cliente peut avoir besoin d'accéder à l'assertion SAML reçue de l'IdP. Le SP Shibboleth peut fournir cette assertion SAML, éventuellement signée et/ou chiffrée.

Ce mécanisme peut être utile pour des applications ayant besoin de transmettre une preuve d'authentification à un backend. L'exemple le plus courant : un webmail devant authentifier l'utilisateur courant auprès d'un serveur IMAP. La même problématique est traitée par la technique des proxy CAS, voir cette documentation.

Le SP Shibboleth pourrait rendre disponible l'assertion SAML sous forme d'une variable d'environnement ou d'un champ d'entête HTTP. Cependant la limite de taille des champs d'entête HTTP est posée.

Le SP Shibboleth propose une manière indirecte d'accéder à l'assertion SAML :

  1. une variable d'environnement (ou un champ d'entête HTTP) contient l'URL de la (ou les) assertion(s) SAML ;
  2. l'application cliente accède à cet URL pour accéder à l'assertion SAML ;
  3. par défaut l'accès à l'assertion SAML est limitée à l'adresse 127.0.0.1 (localhost).

Cette documentation correspond à la version 2.4.2 du SP Shibboleth.

Configuration du fichier shibboleth2.xml :

        <Sessions ...
            exportLocation="http://localhost/Shibboleth.sso/GetAssertion" exportACL="127.0.0.1"
            ...>

Ajoutez la directive ShibRequestSetting exportAssertion true au fichier de configuration du serveur Apache :

<Location /secure>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  ShibRequestSetting exportAssertion true
  require valid-user
</Location>

Les variables d'environnement Shib_Assertion_Count et Shib_Assertion_XX fournissent respectivement le nombre d'assertions SAML et l'URL d'accès à chaque assertion, exemple :

...
Shib_Assertion_Count : 01
Shib_Assertion_01 : http://localhost/Shibboleth.sso/GetAssertion?key=_6e81e39416ca2f3cfbdc77c26c694ed9&ID=_8e0fef2022c6fbd9e36da6d478529cad
...
  • Dernière modification : 2019/07/10 15:21