Projet esup-ecm

Recherche

Sommaire

Pages enfant
  • Configuration de shibboleth

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Bloc de code
 <component name="ecm.ldap.config">
  <require>org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory</require>
  <require>org.nuxeo.ecm.directory.sql.storage</require>

  <extension target="org.nuxeo.ecm.directory.multi.MultiDirectoryFactory"
    point="directories">
    <directory name="userDirectory">
      <!-- definition des sources de données pour les utilisateurs -->
      <!-- schema utilise -->
      <schema>user</schema>
      <!-- attributs correspondant (dans le schema nuxeo) à l'identifiant et au mot de passe -->
      <idField>username</idField>
      <readOnly>false</readOnly>
      <passwordField>password</passwordField>
      <!-- déclaration de la source ldap, definie plus bas -->
      <source name="ldapUserDirectory">
        <subDirectory name="ldapUserDirectory"/>
      </source>
      <!-- declaration de la source locale que noux allons definir dans un auter point d'extension -->
      <source name="sqlUserDirectory" creation="true">
        <subDirectory name="sqlUserDirectory"/>
      </source>
    </directory>
  </extension>

  <extension target="org.nuxeo.ecm.directory.multi.MultiDirectoryFactory"
    point="directories">
    <directory name="groupDirectory">
      <!-- définition des sources de données pour les groupes -->

      <!-- schema utilise -->
      <schema>group</schema>
       <!-- attribut correspondant à l'identifiant du groupe (dans schema nuxeo) -->
      <idField>groupname</idField>
      <readOnly>false</readOnly>
      <!-- déclaration de la source ldap pour les groupes, definie plus bas -->
      <source name="ldapGroupDirectory">
        <subDirectory name="ldapGroupDirectory"/>
      </source>
      <!-- déclaration de la source locale défini dans un autre fichier -->
      <source name="sqlGroupDirectory" creation="true">
        <subDirectory name="sqlGroupDirectory"/>
      </source>
    </directory>
  </extension>

  <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
    point="servers">
     <!-- definition de la connexion ldap au serveur ldap-->
    <server name="default">
      <ldapUrl>ldap://ldap.univ-fr:389</ldapUrl>
      <bindDn>cn=applis,ou=admin,dc=my-univ,dc=fr</bindDn>
      <bindPassword>verySecret</bindPassword>
    </server>
  </extension>

  <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
    point="directories">
    <!--défintion de l'annuaire comme source de données utilisateur -->
    <directory name="ldapUserDirectory">
      <!-- utilise la connexion qu'on vient de définir juste avant -->
      <server>default</server>
      <schema>user</schema>
      <idField>username</idField>
      <passwordField>password</passwordField>
      <searchBaseDn>ou=people,dc=my-univ,dc=fr</searchBaseDn>
      <searchClass>person</searchClass>
       <searchFilter>(&amp;(!(eduPersonAffiliation=affiliate))(status=valide))</searchFilter>
      <searchScope>onelevel</searchScope>
      <readOnly>true</readOnly>
      <cacheTimeout>3600</cacheTimeout>
      <cacheMaxSize>1000</cacheMaxSize>
      <querySizeLimit>0</querySizeLimit>
      <creationBaseDn>ou=people,dc=u-bordeaux1,dc=fr</creationBaseDn>
      <creationClass>top</creationClass>
      <creationClass>person</creationClass>
      <creationClass>organizationalPerson</creationClass>
      <creationClass>inetOrgPerson</creationClass>
      <rdnAttribute>uid</rdnAttribute>

      <!-- mapping d'attributs, doit être en cohérence avec ce qui est stipulé dans le fichier esup-login-config.xml
           Dans notre exemple, on utilisait l'uid pour notre idp local, on fait donc un mapping avec l'uid) -->
      <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>
      <references>
        <inverseReference field="groups" directory="groupDirectory"
          dualReferenceField="members" />
      </references>
    </directory>
  </extension>

  <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
    point="directories">
     <!-- on définit maintenant l'annuaire comme source de données de-->
    <directory name="ldapGroupDirectory">
      <!-- connexion utilisee -->
      <server>default</server>
      <!-- schema utilise -->
      <schema>group</schema>
      <!--attribut correspondant à l'identifiant (dans schema nuxeo) -->
      <idField>groupname</idField>
      <searchBaseDn>ou=groups,dc=my-univ,dc=fr</searchBaseDn>
      <searchFilter>(&amp;(objectClass=groupOfNames)(cn=groupes:my-univ:Personnels:*))</searchFilter>
      <searchScope>subtree</searchScope>
      <cacheTimeout>3600</cacheTimeout>
      <cacheMaxSize>1000</cacheMaxSize>
      <querySizeLimit>10000</querySizeLimit>
      <creationBaseDn>ou=grouper,dc=u-bordeaux1,dc=fr</creationBaseDn>
      <creationClass>top</creationClass>
      <creationClass>groupOfUniqueNames</creationClass>
      <rdnAttribute>cn</rdnAttribute>
      <!-- Mapping entre attributs du schema nuxeo et attributs de l'annuaire -->
      <fieldMapping name="groupname">cn</fieldMapping>
      <references>
        <ldapReference field="members" directory="ldapUserDirectory"
          forceDnConsistencyCheck="false"
          staticAttributeId="member"
          dynamicAttributeId="memberURL" />
        <ldapReference field="subGroups" directory="ldapGroupDirectory"
          forceDnConsistencyCheck="false"
          staticAttributeId="uniqueMember"
          dynamicAttributeId="memberURL" />
        <inverseReference field="parentGroups"
          directory="groupDirectory" dualReferenceField="subGroups" />
      </references>
    </directory>
  </extension>

</component>

...

Bloc de code
 <?xml version="1.0"?>
<component name="org.nuxeo.ecm.directory.sql.storage">
  <implementation />
  <require>org.nuxeo.ecm.directory.sql.SQLDirectoryFactory</require>
  <extension target="org.nuxeo.ecm.directory.sql.SQLDirectoryFactory"
    point="directories">
   <!-- definition de la source de données locale pour les utilisateurs déclarée dans le fichier précédent -->
    <directory name="sqlUserDirectory">
       <!-- schema utilise -->
      <schema>user</schema>
       <!-- data source -->
      <dataSource>jdbc/nxsqldirectory</dataSource>

      <table>users</table>
      <idField>username</idField>
      <passwordField>password</passwordField>
      <passwordHashAlgorithm>SSHA</passwordHashAlgorithm>
      <autoincrementIdField>false</autoincrementIdField>
      <dataFile>users.csv</dataFile>
      <createTablePolicy>on_missing_columns</createTablePolicy>
      <querySizeLimit>15</querySizeLimit>

      <references>
        <inverseReference field="groups" directory="sqlGroupDirectory"
          dualReferenceField="members" />
      </references>

    </directory>

    <directory name="sqlGroupDirectory">
<!-- definition de la source de données locale pour les groupes déclarée dans le fichier précédent -->     > 
    <schema>group</schema>
      <dataSource>jdbc/nxsqldirectory</dataSource>
      <table>groups</table>
      <idField>groupname</idField>
      <dataFile>groups.csv</dataFile>
      <createTablePolicy>on_missing_columns</createTablePolicy>
      <autoincrementIdField>false</autoincrementIdField>

      <!-- Add 10 min cache to avoid refetching the groups during login -->
      <cacheTimeout>360</cacheTimeout>
      <cacheMaxSize>1000</cacheMaxSize>

      <references>
        <tableReference field="members" directory="userDirectory"
          table="user2group" sourceColumn="groupId" targetColumn="userId" schema="user2group"
          dataFile="user2group.csv" />
        <tableReference field="subGroups" directory="sqlGroupDirectory"
          table="group2group" sourceColumn="parentGroupId"
          targetColumn="childGroupId" schema="group2group" />
        <inverseReference field="parentGroups" directory="sqlGroupDirectory"
          dualReferenceField="subGroups" />
      </references>

    </directory>

  </extension>
</component>