Intégration SAML dans TCS 2020 avec Sectigo

L'intégration SAML nécessite que l'IdP de l'établissement soit enregistré dans la fédération edugain.

Trois cas d'utilisation du SAML sont possibles avec Sectigo :

  • Authentification des administrateurs RAO/DRAO dans le portail SCM de Sectigo ;
  • Self-enrollment pour autoriser des demandes de certificats SSL à des utilisateurs qui ne sont pas des administrateurs RAO/DRAO ;
  • Self-enrollment pour autoriser des demandes de certificats de personne aux utilisateurs finaux.

La première étape préalable consiste à configurer l'IdP de votre établissement spécifiquement pour le SP de Sectigo :

Configuration de l'IdP

Attributs requis

Le fournisseur d'Identité (IdP) doit fournir les attributs suivants au SP de Sectigo :

  • eduPersonPrincipalName (urn:oid:1.3.6.1.4.1.5923.1.1.1.6) : identifiant unique au niveau national 
;
  • mail (urn:oid:0.9.2342.19200300.100.1.3) = adresse email canonique de la personne fournie par l'établissement ;
  • displayName (urn:oid:2.16.840.1.113730.3.1.241) : Nom et prénom de la personne 
;
  • givenName (urn:oid:2.5.4.42) : Prénom de la personne ;
  • sn (urn:oid:2.5.4.4) : Nom de de la personne ;
  • eduPersonEntitlement (urn:oid:1.3.6.1.4.1.5923.1.1.1.7): attribut généré dynamiquement à la connexion qui définit le rôle de chaque utilisateur (dont la valeur doit être urn:mace:terena.org:tcs:personal-user pour l'obtention de certificats de personnes).
  • schacHomeOrganization (urn:oid:1.3.6.1.4.1.25178.1.2.9): attribut faisant partie du jeu d'attributs utilisateur minimal reconnu dans le cadre de la fédération eduGAIN.

Exemple de fichier attribute-resolver.xml

L'exemple ci-dessous expose comment configurer la résolution des attributs eduPersonEntitlement et schacHomeOrganization pour TCS avec Sectigo.

Les administrateurs des IdP peuvent être amenés à adapter cet exemple et ils doivent notamment s'assurer que :

  • la valeur urn:mace:terena.org:tcs:personal-user ajoutée dans l'attribut eduPersonEntitlement est attribuée aux seuls membres autorisés à demander un certificat de personne pour leur établissement ;
  • la valeur de l'attribut schacHomeOrganization correspond de préférence à un domaine de l'établissement (celui du Scope).

Cliquez pour afficher les recommandations Schac

Cliquez pour afficher les recommandations Schac

Specifies a person´s home organization using the domain name of the organization. Issuers of schacHomeOrganization attribute values via SAML are strongly encouraged to publish matching shibmd:Scope elements as part of their IDP's SAML metadata. Relaying Parties receiving schacHomeOrganization values via SAML are strongly encouraged to check attribute values against the Issuer's published shibmd:Scope elements in SAML metadata, and may discard any non-matching values.

    <AttributeDefinition id="eduPersonEntitlement" xsi:type="ScriptedAttribute" >
        <InputAttributeDefinition ref="eduPersonAffiliation" />
        <DisplayName xml:lang="fr">Entitlement</DisplayName>
        <DisplayDescription xml:lang="fr"> (eduPersonEntitlement) -> Privilèges spécifiques pour accéder au service.  </DisplayDescription>
        <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
        <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
            <Script><![CDATA[
             if ( resolutionContext.getAttributeRecipientID() === "https://cert-manager.com/shibboleth" ) {
 
                 if (eduPersonAffiliation.getValues().get(0) === "member") {
                     eduPersonEntitlement.addValue("urn:mace:terena.org:tcs:personal-user");
                 }
             }
             ]]></Script>
    </AttributeDefinition>
 
    <!-- Static attributes -->
    <DataConnector id="staticAttributes" xsi:type="Static">
        <Attribute id="schacHomeOrganization">
            <Value>domaineEtab.fr</Value>
        </Attribute>
    </DataConnector>
 
    <AttributeDefinition id="schacHomeOrganization" xsi:type="Simple">
        <InputDataConnector ref="staticAttributes" attributeNames="schacHomeOrganization" />
        <DisplayName xml:lang="fr">Organisation (international)</DisplayName>
        <DisplayName xml:lang="en">Home organization (international)</DisplayName>
        <DisplayDescription xml:lang="fr"> (schacHomeOrganization) -> Nom de domaine de l'organisation d'origine d'une personne. </DisplayDescription>
        <DisplayDescription xml:lang="en"> (schacHomeOrganization) -> Domain name of a Home Organization. </DisplayDescription>
        <AttributeEncoder xsi:type="SAML1String" name="urn:mace:terena.org:schac:schacHomeOrganization" encodeType="false" />
        <AttributeEncoder xsi:type="SAML2String" name="urn:oid:1.3.6.1.4.1.25178.1.2.9" friendlyName="schacHomeOrganization" encodeType="false" />
    </AttributeDefinition>
Les valeurs des attributs eduPersonEntitlement et schacHomeOrganization peuvent être stockées directement dans l'annuaire de l'établissement.

Exemple de fichier attribute-filter.xml

L'exemple suivant de filtre d'attributs permet d'envoyer la liste complète de tous les attributs nécessaires au bon fonctionnement des différentes intégration SAML avec Sectigo.
Cette configuration force l'IdP à envoyer au SP dont l'entityid est https://cert-manager.com/shibboleth une liste d'attributs fixes, qu'ils soient obligatoires, optionnels ou non demandés explicitement dans les métadonnées :

    <!-- Edugain Sectigo SP with mandatory 'optional' attributes -->
    <AttributeFilterPolicy id="releaseTCS">
 
        <PolicyRequirementRule xsi:type="OR">
            <Rule xsi:type="Requester" value="https://cert-manager.com/shibboleth" />
        </PolicyRequirementRule>
 
        <!-- REQUIRED for SCM admin login with SAML -->
        <AttributeRule attributeID="eduPersonPrincipalName">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <!-- REQUIRED for SCM admin login with SAML -->
        <AttributeRule attributeID="mail">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <AttributeRule attributeID="displayName">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <AttributeRule attributeID="givenName">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <AttributeRule attributeID="surName">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <!-- REQUIRED for Client Certificates Self-Service with SAML -->
        <!-- with urn:mace:terena.org:tcs:personal-user walue -->
        <AttributeRule attributeID="eduPersonEntitlement">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
        <!-- REQUIRED for Client Certificates Self-Service with SAML -->
        <AttributeRule attributeID="schacHomeOrganization">
            <PermitValueRule xsi:type="ANY"/>
        </AttributeRule>
 
    </AttributeFilterPolicy>

Erreur de configuration de l'IdP

Il est nécessaire de déclarer une configuration spécifique des filtres d'attribut pour le SP de Sectigo car tous les attributs ne sont pas déclarés dans ses métadonnées SAML et certains sont notés optionnels alors qu'ils sont nécessaires pour certains cas d'usage (l'attribut mail notamment).

De plus, l'attribut mail doit contenir une seule valeur.

Si cette configuration n'est pas réalisée correctement dans votre IdP, vous obtiendrez après l'authentification une erreur :
“An application issue has occurred. Our Operations team has already been notified and will address soon. If you have an urgent certificate need, please contact support at … or submit a ticket: https://sectigo.com/support-ticket (select SCM Support or SCM Validation). We regret the inconvenience caused and will work to resolve this quickly.”

Test de la configuration de l'IdP

La configuration de l'IdP et des attributs fournis au SP de Sectigo peuvent être testés partiellement sur http://cert-manager.com/customer/renater/ssocheck/. Une fois la connexion réalisée avec votre IdP, vous pouvez voir la totalité des attributs reçus par le SP de Sectigo sur la page https://cert-manager.com/Shibboleth.sso/Session.

Authentification avec SAML des administrateurs RAO/DRAO sur le portail SCM de Sectigo

Plusieurs prérequis sont nécessaires pour que les administrateurs RAO/DRAO puissent se connecter au portail SCM de Sectigo directement avec l'IdP de son établissement :

  • L'IdP de votre établissement doit être enregistré dansla fédération edugain et doit être configuré pour renvoyer les attributs mail, eduPersonPrincipalName et displayName / givenName + sn au SP de Sectigo.
  • Dans le portail SCM, veuillez entrer l'ePPN de l'administrateur dans le champ IdP Person ID de son compte.

Portail Self-enrollment avec SAML pour les demandes de certificats de personne

Plusieurs prérequis sont nécessaires pour que les utilisateurs (non RAO/DRAO) puissent demander des certificats de personne :

  • L'IdP de votre établissement doit être enregistré dans la fédération edugain et doit être configuré pour renvoyer les attributs mail, eduPersonPrincipalName, eduPersonEntitlement et schacHomeOrganisation au SP de Sectigo.
    1. la valeur urn:mace:terena.org:tcs:personal-user doit être présente dans l'attribut eduPersonEntitlement pour les utilisateurs autorisés à demander un certificat de personne;
    2. la valeur de l'attribut schacHomeOrganization correspond de préférence à un domaine de l'établissement (celui du Scope).
  • Le champ Academic code (SCHAC Home Organization) doit être renseigné dans l'organisation concernée avec la valeur renvoyée par votre IdP dans l'attribut schacHomeOrganization. La configuration est réalisée dans les Onglets Settings » Organizations puis en sélectionnant l'organisation concernée et en cliquant sur Edit) :

L'adresse du portail Self-enrollment avec SAML de demande d'un certificat de personne est commun à toutes de les organisations dépendant de Renater : https://cert-manager.com/customer/renater/idp/clientgeant

Portail Self-enrollment avec SAML pour les demandes de certificats de serveur SSL

Plusieurs prérequis sont nécessaires pour que les utilisateurs (non RAO/DRAO) puissent demander des certificats de serveur SSL:

  • L'IdP de votre établissement doit être enregistré dans la fédération edugain et doit être configuré pour renvoyer les attributs mail, eduPersonPrincipalName au SP de Sectigo.
  • Les cases à cocher self enrollment et self enrollment using SAML doivent être cochées dans l'organisation concernée.
  • Vous devrez définir deux codes/tokens uniques et sécurisés afin que l'accès aux 2 portails de demandes de certificats SSL soient actifs et sécurisés :
    1. Un premier premier portail sans SAML : avec un code d'accès sécurisé et l'adresse mail de l'utilisateur remplie dans le formulaire d'autorisation ;
    2. Un second portail de demande avec SAML : où le token sécurisé est fourni en paramètre de l'URL du portail.

Un exemple de configuration est reporté ci-dessous :

L'adresse du portail Self-enrollment avec SAML de demande d'un certificat de serveur SSL est spécifique à chaque organisation et est de la forme https://cert-manager.com/customer/renater/ssl/TOKENSECURISE