Recherche

Sommaire

Pages enfant
  • Configuration de CAS LDAP

Vous regardez une version antérieure (v. /wiki/display/PROJESUPECM/Configuration+de+CAS+LDAP) 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. 6) afficher la version suivante »

Pré-requis

Avoir procédé à l'installation minimale de nuxeo 5.4.1.

Avoir un serveur CAS et un annuaire fonctionnels.

Paramétrage de CAS

Opérations préliminaires

Récupération du plugin CAS d'esup (il s'agit de la dernière version du plugin de Nuxeo corrigé pour pouvoir utiliser CAS en mode proxy) :

nuxeo-platform-login-cas2-5.4.1.jar

Copier le fichier dans templates/custom/bundles (se  référer à la documentation sur l'utilisation des templates au besoin)

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

Editer le fichier custom/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>
<require>org.nuxeo.opensocial.OAuthFilter</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>

Configuration d'un annuaire LDAP

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

Editer le fichier custom/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>

Paramétrage de l'annuaire pour les groupes

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

 <?xml version="1.0"?>
<component name="org.nuxeo.ecm.directory.ldap.storage.groups">
  <implementation />
  <implementation />
  <require>org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory</require>
  <require>org.nuxeo.ecm.directory.ldap.storage.users</require>
  <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory" point="directories">
    <directory name="groupDirectory">

      <!-- On utilise la connexion que l'on a définie dans default-ldap-users-bundle.xml -->
      <server>default</server>

       <!-- schema correspondant dans nuxeo, et identifiant des groupes (dans nuxeo pas dans l'annuaire !) -->
      <schema>group</schema>
      <idField>groupname</idField>

       <!-- branche dans laquelle sont les groupes -->
      <searchBaseDn>ou=groups,dc=my-univ,dc=fr</searchBaseDn>
       <!-- filtre de recherche -->
      <searchFilter>(objectClass=groupOfNames)</searchFilter>
      <!-- portee de la recherche -->
      <searchScope>subtree</searchScope>
      <!-- si readOnly a false et connexion a l'annuaire avec des droits d'écriture, possibilité de création de groupes dans l'annuaire depuis nuxeo -->
      <readOnly>true</readOnly>

      <!-- cache en seconde -->
      <cacheTimeout>3600</cacheTimeout>

      <!-- nombre maximal d'entrées à mettre  en cache -->
      <cacheMaxSize>1000</cacheMaxSize>

      <!-- utilisé si création de groupes dans l'annuaire depuis nuxeo -->
      <creationBaseDn>ou=grouper,dc=u-bordeaux1,dc=fr</creationBaseDn>
      <creationClass>top</creationClass>
      <creationClass>groupOfUniqueNames</creationClass>
      <rdnAttribute>cn</rdnAttribute>

      <!-- mapping entre les attributs du schema groupe dans nuxeo et les attributs ldap -->
      <fieldMapping name="groupname">cn</fieldMapping>
       <!-- <fieldMapping name="description">description</fieldMapping>-->
      <references>
        <!-- LDAP reference resolve DNs embedded in uniqueMember attributes
          If the target directory has no specific filtering policy, it is most
          of the time not necessary to enable the 'forceDnConsistencyCheck' policy.
          Enabling this option will fetch each reference entry to ensure its
          existence in the target directory.
        -->
        <ldapReference field="members" directory="userDirectory"
          forceDnConsistencyCheck="false"
          staticAttributeId="member"
          dynamicAttributeId="memberURL" />
        <ldapReference field="subGroups" directory="groupDirectory"
          forceDnConsistencyCheck="false"
          staticAttributeId="member"
          dynamicAttributeId="memberURL" />
        <inverseReference field="parentGroups"
          directory="groupDirectory" dualReferenceField="subGroups" />
      </references>
    </directory>
  </extension>
</component>

Paramétrage des utilisateurs / groupes virtuels (admins / members et guest)

Vous trouverezici une explication sur le fonctionnement des groupes virtuels (notamment le groupe members) de nuxeo

Editer le fichier custom/config/default-virtual-groups-bundle.xml comme suit avec vos propres paramètres :

 <?xml version="1.0"?>
<component name="org.nuxeo.ecm.platform.usermanager.VirtualGroups">
  <require>org.nuxeo.ecm.platform.usermanager.UserManagerImpl</require>
  <extension target="org.nuxeo.ecm.platform.usermanager.UserService" point="userManager">
    <userManager>
       <users>
      <!-- configure l'utilisateur anonyme -->
            <anonymousUser id="invite">
                <property name="firstName">Invite</property>
                <property name="lastName">Anonyme</property>
            </anonymousUser>
        </users>
      <!-- uid ldap de l'administrateur -->
      <defaultAdministratorId>jeo</defaultAdministratorId>
      <!-- cn du groupe d'administrateurs -->
      <administratorsGroup>adminGroups</administratorsGroup>
      <defaultGroup>members</defaultGroup>

    </userManager>

  </extension>

</component>
  • Aucune étiquette