Intégration SAML dans TCS 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 :

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

  • eduPersonPrincipalName (eppn) (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) : Prénom et nom de la personne 
;
  • commonName (cn) (urn:oid:2.5.4.3) : Nom et prénom de la personne 
;
  • givenName (urn:oid:2.5.4.42) : Prénom de la personne ;
  • surName (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.

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.

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="commonName">
            <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>

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.”

La configuration de l'IdP et des attributs fournis au SP de Sectigo peuvent être testés partiellement sur https://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.

{
  "expiration": 475,
  "client_address": "W.X.Y.Z",
  "protocol": "urn:oasis:names:tc:SAML:2.0:protocol",
  "identity_provider": "https://EntityID_IDP",
  "authn_instant": "2023-05-31T09:05:11.445Z",
  "authncontext_class": "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport",
  "attributes": [ 
    { "name": "displayName", "values": [ "Prénom NOM" ] },
    { "name": "entitlement", "values": [ "urn:mace:terena.org:tcs:personal-user" ] },
    { "name": "eppn", "values": [ "XXXX@mondomaine.fr" ] },
    { "name": "givenName", "values": [ "Prénom" ] },
    { "name": "mail", "values": [ "email@mondomaine.fr" ] },
    { "name": "schacHomeOrganization", "values": [ "mondomaine.fr" ] },
    { "name": "sn", "values": [ "NOM" ] }
  ]
}

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é dans la fédération edugain et doit être configuré pour renvoyer les attributs mail, eduPersonPrincipalName (eppn) 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.

Un exemple de configuration de l'authentification dans le compte d'un administrateur est reporté ci-dessous (via le menu Settings » Admins et après avoir cliqué sur l'onglet Authentification de l'administrateur sélectionné):

La modification de la méthode d'authentification ne peut pas être réalisée par l'administrateur lui-même (pour éviter de bloquer son accès au portail SCM de Sectigo). Un autre administrateur RAO de la même organisation doit réaliser cette modification pour qu'elle soit prise en compte (règle de validation “four eyes principle”).

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 l'onglet Organizations en sélectionnant l'organisation concernée et en cliquant sur Edit) :

Si vous ne pouvez pas modifier le champ Academic code (SCHAC Home Organization), veuillez nous contacter sur le portail d'assistance en précisant le nom de votre organisation et la valeur que vous vous voulez ajouter dans le champ.

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.

Il est important que les domaines autorisés pour la demande de Certificat client aient une DCV en cours de validité (non expirée). Dans le cas contraire, une erreur sera affichée sur le portail après l'authentification sur votre IdP.
Les informations sur les DCV sont consultables sur dcv.

Si l'IdP de votre établissement est configuré correctement et qu'un utilisateur est bloqué lors de la demande d'un certificats de personne, veuillez consulter cette entrée de la FAQ.

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.
  • Allez dans les onglets Enrollment » Enrollment Forms et ajoutez un nouveau compte dédié aux demandes de certificats SSL dans le portail générique (General) SSL Web Form (ou bien crée un nouveau portail dédié uniquement à votre organisation ou un département) :
    1. Sélectionnez le portail (General) SSL Web Form puis cliquez sur Accounts et dans la nouvelle fenêtre, cliquez sur le bouton + ;
    2. Remplissez le nom de votre compte (pour l'identifier facilement), sélectonnez votre organisation, ajoutez les profils de certificats que vous souhaitez autoriser dans le portail en Self-enrollment (il est conseillé de ne laisser que les profils SSL OV) ; il est préférable de :
      • de laisser l'utilisateur fournir une CSR en sélectionnant Provided by User dans le champ CSR Generation method ;
      • ne pas sélectionner l'approbation automatique des demandes de certificats en décochant Automatically Approve Requests;
      • sélectionner une méthode d'autorisation dans Authorization method si vous souhaitez restreindre encore plus l'accès après l'authentification d'un utilisateur.
  • L'adresse de connexion de ce portail générique est https://cert-manager.com/customer/renater/ssl et les utilisateurs pourront se connecter par adresse mail ou avec SAML.

Un exemple de configuration est reporté ci-dessous :

Si vous souhaitez créer vous-même un nouveau portail Self-enrollment de demande d'un certificat de serveur SSL, il aura une adresse spécifique à votre organisation de la forme https://cert-manager.com/customer/renater/ssl/TOKENSECURISE

  • tcs/scm/saml-sso.txt
  • Dernière modification : 2023/06/02 19:13
  • de ludovic.auxepaules@renater.fr