Intégration SAML/SSO

L'intégration SAML/SSO dans la fédération ne permet d'obtenir que des certificats personnels. Il faut créer un compte “Utilisateur” pour demander un certificat Serveur, Code Signing, Document Signing

Attributs requis

  • Le fournisseur d'Identité (IDP) doit fournir les attributs
    1. schacHomeOrganization et schacHomeOrganizationType = jeu d'attributs utilisateurs minimal reconnu dans le cadre de eduGAIN
    2. eduPersonPrincipalName = identifiant unique au niveau national 

    3. displayName = Nom et prénom de la personne 

    4. mail = adresse email canonique de la personne fournie par l'établissement
    5. eduPersonEntitlement = 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)

Organization Mapping (portail DigiCert)

Pour configurer le Mapping SAML, le profil “SAML Admin” est nécessaire et configuré sur le portail DigiCert. Ce profil doit être activé dans Account » Manage Users

  • Sélectionnez votre IDP
  • Sélectionnez l'organisation concernée par l'IDP
  • Entrez la valeur de l'attribut schacHomeOrganization fournie par l'IDP

Configuration de l'IDP

Fichier attribute-resolver.xml

  
      <!-- eduPersonEntitlement-->
      <resolver:AttributeDefinition id="eduPersonEntitlement" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="eduPersonEntitlement">
          <resolver:Dependency ref="email" />
          <resolver:Dependency ref="eduPersonAffiliation" />
          <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonEntitlement" />
          <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" />
          <Script>
              <![CDATA[
              importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
              eduPersonEntitlement = new BasicAttribute("eduPersonEntitlement");
              if (email != null && requestContext.getPeerEntityId() != null) {
                  if (requestContext.getPeerEntityId() == "https://www.digicert.com/sso" && eduPersonAffiliation.getValues().get(0).match("member")) {eduPersonEntitlement.getValues().add("urn:mace:terena.org:tcs:personal-user");
                  }//if TCS personal PORTAL user
                  if (requestContext.getPeerEntityId() =="https://www.digicert.com/sso" && eduPersonAffiliation.getValues().get(0).match("member")) {eduPersonEntitlement.getValues().add("urn:mace:terena.org:tcs:escience-user");                                                           
                  }//if TCS escience PORTAL user
              }//IF
                  else eduPersonEntitlement.getValues().add("");
              ]]>
          </Script>
      </resolver:AttributeDefinition>
      <!-- Static Connector -->
        <resolver:DataConnector id="staticSchacHomeOrganization" xsi:type="Static" xmlns="urn:mace:shibboleth:2.0:resolver:dc">
        <Attribute id="schacHomeOrganization">
          <Value>my-value.fr</Value>
        </Attribute>
      </resolver:DataConnector>  

Fichier edugain-attribute-filters-all.xml

  <!-- Règles pour la ressource GÉANT Trusted Certificate Service (TCS)  -->
  <AttributeFilterPolicy id="https://www.digicert.com/sso">
    <PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://www.digicert.com/sso" ignoreCase="true"/>
          <AttributeRule attributeID="eduPersonPrincipalName">
      <PermitValueRule xsi:type="basic:ANY"/>
    </AttributeRule>
          <AttributeRule attributeID="displayName">
      <PermitValueRule xsi:type="basic:ANY"/>
    </AttributeRule>
          <AttributeRule attributeID="email">
      <PermitValueRule xsi:type="basic:ANY"/>
    </AttributeRule>
          <AttributeRule attributeID="schacHomeOrganization">
      <PermitValueRule xsi:type="basic:ANY"/>
    </AttributeRule>
          <AttributeRule attributeID="eduPersonEntitlement">
      <PermitValueRule xsi:type="basic:ANY"/>
    </AttributeRule>
  </AttributeFilterPolicy>