Configurer un SP Shibboleth pour exporter une assertion SAML
- NativeSPAssertionExport, documentation Internet2
1. Principe et cas d'utilisation
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.
2. Mode de fonctionnement
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 :
- une variable d'environnement (ou un champ d'entête HTTP) contient l'URL de la (ou les) assertion(s) SAML ;
- l'application cliente accède à cet URL pour accéder à l'assertion SAML ;
- par défaut l'accès à l'assertion SAML est limitée à l'adresse 127.0.0.1 (localhost).
3. Configuration du SP Shibboleth
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 ...