ECP

ECP (Enhanced Client or Proxy) est un profil SAML destiné à d'autres clients HTTP que des navigateurs. Plutôt que des redirections vers un formulaire interactif, il s'agit d'un échange de messages SOAP couplé avec une authentification Basic.

Ce mécanisme nécessite néanmoins un support explicite de la part du client. Ajouter ce support n'est pas forcément complexe, surtout s'il peut s'appuyer sur une bibliothèque existante, mais il reste nécessaire. Un exemple d'une telle modification est donnée ici, pour l'outil Nagstamon.

Configuration IdP

Il faut d'abord s'assurer que le bean SAML2.ECP, correspondant au support de ce profil est bien chargé pour le groupe de SP par défaut, dans le fichier relying-party.xml:

<bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
    <property name="profileConfigurations">
        <list>
            <bean parent="Shibboleth.SSO"
                p:postAuthenticationFlows="attribute-release"
                p:includeAttributeStatement="true" />
            <bean parent="SAML2.SSO"
                p:postAuthenticationFlows="attribute-release"
                p:includeAttributeStatement="true" />
            <ref bean="SAML2.Logout" />
            <ref bean="SAML2.ECP" />
        </list>
    </property>
</bean>

Configuration SP

Il suffit d'ajouter l'attribut ECP à l'élément SSO:

<SSO entityID="https://idp.renater.fr/idp/shibboleth" ECP="true">SAML2</SSO>

Il faut également que le SP expose un point d'accès SAML correspondant au binding urn:oasis:names:tc:SAML:2.0:bindings:PAOS dans les métadonnées de la fédération.

Configuration Client

Il semble nécessaire d'indiquer explicitement coté client l'URL du point d'accès ECP à utiliser, la réponse du SP n'indiquant que l'identifiant SAML de l'IdP utilisable.