Projet esup-ecm

Recherche

Sommaire

Pages enfant
  • Configuration de CAS LDAP dans Nuxeo 5.4.2

Vous regardez une version antérieure (v. /wiki/spaces/PROJESUPECM/pages/127205414/Configuration+de+CAS+LDAP+dans+Nuxeo+5.4.2) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 19) afficher la version suivante »

Cette version est en cours de validation. Nous vous recommandons l'Installation de Nuxeo 5.4.1

Pré-requis

Avoir effectué les opération définies dans Le template custom dans nuxeo 5.4.2

Avoir un serveur CAS et un annuaire fonctionnels.

Paramétrage de CAS

Opérations préliminaires

Nous allons créer un nouveau template pour l'utilisation de CAS avec Nuxeo. L'insertion de cas dans un template qui lui est propre  à l'avantage de vous permettre de modifier rapidement la méthode d'authentification utilisée par Nuxeo.

Créez un dossier esup-login-cas dans le dossier nuxeo-dm-5.4.2-tomcat/templates. Puis déplacez-vous dans ce dossier

cd nuxeo-dm-5.4.2-tomcat/templates
mkdir esup-login-cas
cd esup-login-cas

Créez-y un fichier nuxeo.defaults et insérez y les valeurs ci-dessous :

esup-login-cas.target=nxserver

Créez-y également les dossiers suivants :

  • config : Créez y le fichier esup-login-cas-config.xml

Configuration du fichier esup-login-cas-config.xml

Éditez le fichier config/esup-login-cas-config.xml comme suit avec vos propres paramètres :

<?xml version="1.0"?>
<component name="org.esup.ecm.login">
<!-- certains composants doivent être chargés avant que ce fichier soit
       lu car ils contiennent des points d'extension sur l'authentification -->
<require>org.nuxeo.ecm.platform.ui.web.auth.defaultConfig</require>
<require>org.nuxeo.ecm.platform.ui.web.auth.WebEngineConfig</require>
<require>org.nuxeo.ecm.platform.login.Cas2SSO</require>

<extension
    target="org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService"
    point="authenticators">
    <authenticationPlugin name="CAS2_AUTH">
        <loginModulePlugin>Trusting_LM</loginModulePlugin>
        <needStartingURLSaving>true</needStartingURLSaving>
        <parameters>
            <!-- variable contenant le ticket dans l'url -->
            <parameter name="ticketKey">ticket</parameter>
            <!-- si utilisation du mode proxy -->
            <parameter name="proxyKey">ticket</parameter>

            <parameter name="appURL">https://nuxeo.my-univ.fr/nuxeo/nxstartup.faces</parameter>
            <!-- URL de login du serveur CAS -->
            <parameter name="serviceLoginURL">https://sso.my-univ.fr/login</parameter>
            <!-- URL de validation du ticket du serveur CAS -->
            <parameter name="serviceValidateURL">https://sso.my-univ.fr/serviceValidate</parameter>
            <!-- Si utilisation de CAS en mode proxy -->
            <parameter name="proxyValidateURL">https://sso.my-univ.fr/proxyValidate</parameter>
            <!-- variable contenant le nom du service dans l'URL -->
            <parameter name="serviceKey">service</parameter>
            <!-- URL de logout de CAS -->
            <parameter name="logoutURL">https://sso.my-univ.fr/logout?service=http://nuxeo.my-univ.fr/nuxeo/</parameter>
        </parameters>
    </authenticationPlugin>

    <authenticationPlugin name="ANONYMOUS_AUTH_FOR_CAS2"
        enabled="true"
        class="org.nuxeo.ecm.platform.ui.web.auth.cas2.AnonymousAuthenticatorForCAS2">
        <loginModulePlugin>Trusting_LM</loginModulePlugin>
    </authenticationPlugin>
</extension>

<!-- chainage de l'authentification : on garde une authentification de type
     BASIC pour les accès particuliers (RSS/cmis/contentAutomation) -->
<extension
    target="org.nuxeo.ecm.platform.ui.web.auth.service.PluggableAuthenticationService"
    point="chain">
    <authenticationChain>
        <plugins>
            <plugin>BASIC_AUTH</plugin>
            <plugin>CAS2_AUTH</plugin>
            <plugin>ANONYMOUS_AUTH_FOR_CAS2</plugin>
        </plugins>
    </authenticationChain>
</extension>
</component>

Chargement de la configuration CAS au lancement de Nuxeo

Votre configuration CAS est maintenant complète. Toutefois il faut indiquer à Nuxeo qu'il doit également charger ce template. Éditez le fichier  nuxeo-dm-5.4.2-tomcat/templates/custom/nuxeo.defaults et rajoutez le template esup-login-cas dans les dépendances du template default comme ci dessous :

nuxeo.template.includes=default,postgresql,esup-login-cas

Configuration d'un annuaire LDAP

Opérations préliminaires

Tout comme pour l'utilisation de CAS nous allons créer un nouveau template pour l'utilisation de LDAP avec Nuxeo.

Créez un dossier esup-ldap dans le dossier nuxeo-dm-5.4.2-tomcat/templates. Puis déplacez-vous dans ce dossier :

cd nuxeo-dm-5.4.2-tomcat/templates
mkdir esup-ldap
cd esup-ldap

Créez y un fichier nuxeo.defaults et insérez y la valeur suivante :

esup-ldap.target=nxserver

Créez y également le dossier suivant :

  • config

Définition de l'annuaire et paramétrage des recherche pour les utilisateurs

Éditez le fichier config/default-ldap-users-directory-bundle.xml comme suit avec vos propres paramètres :

<?xml version="1.0"?>
<component name="org.nuxeo.ecm.directory.ldap.storage.users">
  <implementation />
  <implementation />
  <require>org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory</require>
  <require>org.nuxeo.ecm.directory.sql.storage</require>
   <!-- configuration de la connexion -->
  <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory" point="servers">
    <server name="default">
      <ldapUrl>ldap://ldap.my-univ.fr:389</ldapUrl>
      <!-- Optional servers from the same cluster for failover and load balancing -->
      <!-- <ldapUrl>ldap://server2:389</ldapUrl> -->
      <!--User to bind with-->
      <bindDn>cn=binduser,ou=admin,dc=my-univ,dc=fr</bindDn>
      <bindPassword>verySecret</bindPassword>
    </server>
</extension>

<extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory" point="directories">
    <!-- configuration du repertoire utilisateur -->
    <directory name="userDirectory">
     <!-- on s'appuie sur la connexion qu'on vient de définir -->
     <server>default</server>
     <!-- schema nuxeo utilisé : user -->
     <schema>user</schema>
      <!-- identifiant/mdp des personnes (dans nuxeo) -->
      <idField>username</idField>
      <passwordField>password</passwordField>
      <!-- branche dans laquelle sont situés les utilisateurs -->
      <searchBaseDn>ou=people,dc=my-univ,dc=fr</searchBaseDn>
      <!-- ObjectClass à rechercher => ajouté au filtre de recherche -->
      <searchClass>person</searchClass>
      <!-- filtre de recherche personnalisé (ajouté au filter par défaut) -->
      <searchFilter>(&amp;(!(eduPersonAffiliation=affiliate))(status=valide))</searchFilter>
      <!-- POrtée de la recherche -->
      <searchScope>onelevel</searchScope>
     <!-- Si False avec un binddn ayant des accès en ecriture sur l'annuaire, proposera d'ajouter des utilisateurs dans l'annuaire-->
      <readOnly>true</readOnly>
    <!-- cache timeout en secondes -->
     <cacheTimeout>3600</cacheTimeout>
      <!-- nombre maximal d'entrée en cache -->
      <cacheMaxSize>1000</cacheMaxSize>
    <!-- utilisé pour éventuellement créer des utilisateurs depuis nuxeo ... -->
      <creationBaseDn>ou=people,dc=my-univ,dc=fr</creationBaseDn>
      <creationClass>top</creationClass>
      <creationClass>person</creationClass>
      <creationClass>organizationalPerson</creationClass>
      <creationClass>inetOrgPerson</creationClass>
      <rdnAttribute>uid</rdnAttribute>

    <!--Mapping entre le nom des champs dans le schema user de nuxeo et les attributs de l'annuaire -->
      <fieldMapping name="username">uid</fieldMapping>
      <fieldMapping name="firstName">givenName</fieldMapping>
      <fieldMapping name="lastName">sn</fieldMapping>
      <fieldMapping name="company">supannetablissement</fieldMapping>
      <fieldMapping name="email">mail</fieldMapping>

  <!-- reference aux groupes, cf. default-ldap-groups-directory-bundle.xml -->
      <references>
       <inverseReference field="groups" directory="groupDirectory"  dualReferenceField="members" />
      </references>
    </directory>
  </extension>
</component>
  • Aucune étiquette