Intégration de Claroline à l'ent EsupPortail



Documents pareils
Annuaire LDAP, SSO-CAS, ESUP Portail...

CRI-IUT 2004 Le Creusot. Introduction aux Espaces Numériques de Travail d après Alain Mayeur JRES 2003 de Lille

Configurer la supervision pour une base MS SQL Server Viadéis Services

SQL Server et Active Directory

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Sécurité des applications web. Daniel Boteanu

BOUCHARD Nicolas. GENTILE Pierre

OpenPaaS Le réseau social d'entreprise

PHP 4 PARTIE : BASE DE DONNEES

Cours Bases de données 2ème année IUT

Service d'authentification LDAP et SSO avec CAS

Outils Logiciels Libres

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Introduction. aux architectures web. de Single Sign-On

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Les Ressources Numériques à Dauphine

1. ORI-OAI version Description Pré requis et variables d'installation Introduction à Subversion

Qu'est ce qu'une Fédération d'identités? Définitions Fonctionnement de base Fonctionnement détaillé Les principaux composants

Guide d'installation rapide TFM-560X YO.13

Etude de l ENT de l Université de Paris 5. Recommandations des experts suite à la journée du 29 octobre 2009

Paginer les données côté serveur, mettre en cache côté client

L'intégration de Moodle à l'université Rennes 2 Haute Bretagne

LDAP : pour quels besoins?

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

PHP et les Bases de données - Généralités

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Authentification et contrôle d'accès dans les applications web

Attaques applicatives

Exercices sur SQL server 2000

Installation et configuration de Vulture Lundi 2 février 2009

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Samson BISARO Christian MAILLARD

Mysql avec EasyPhp. 1 er mars 2006

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

How to Login to Career Page

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

PDO : PHP Data Object 1/13

OpenLDAP, un outil d administration Réseau. Une implémentation d OpenLDAP

CAS, la théorie. R. Ferrere, S. Layrisse

Sécurité Informatique. Description. Prérequis. Un petit test avant de commencer s embourber

INSTALLATION ET CONFIGURATION DE OPENLDAP

Description de la maquette fonctionnelle. Nombre de pages :

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Connaître la version de SharePoint installée

TelSurvey Système CATI pour LimeSurvey 11 novembre Manuel administrateur

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

Travail collaboratif et à distance. DFGSM 2 Pr. F. Kohler 2012/2013

Shibboleth. David Verdin - JOSY "Authentification centralisée pour les applications web" - Paris - 4 février mai

Guide d'installation de. Esup-ECM. version G.E.D. Nuxeo

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

TD3 - Radius et IEEE 802.1x

M2-ESECURE Rezo TP3: LDAP - Mail

Installation d'un serveur FTP géré par une base de données MySQL

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Présentation Windows Azure Hadoop Big Data - BI

Imprimantes et partage réseau sous Samba avec authentification Active Directory

Single Sign-On open source avec CAS (Central Authentication Service) Vincent Mathieu Pascal Aubry Julien Marchal

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

La suite logicielle Lin ID. Paris Capitale du Libre 25 septembre 2008

Gestion des utilisateurs et de leurs droits

Once the installation is complete, you can delete the temporary Zip files..

Routeur client. PC accueil Postes IP

Sécurité des bases de données Nicolas Jombart Alain Thivillon

CREATION WEB DYNAMIQUE

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

TP JAVASCRIPT OMI4 TP5 SRC

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

FREEPBX GUIDE UTILISATEUR-AVANCE

Installation d'un Contrôleur Principal de Domaine SAMBA 4

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Client Debian Squeeze et serveur SambaEdu3

Intégration de Cisco CallManager IVR et Active Directory

Installation du package esup-portail Version uportal-2.5.x-esup

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Attaques de type. Brandon Petty

L évolution des services numériques à partir de dispositifs nomades Panorama des réflexions et études en cours dans l enseignement supérieur

Olivier Mondet

Documentation CAS à destination des éditeurs

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Configuration d'un annuaire LDAP

Aspects techniques : guide d interfaçage SSO

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

LemonLDAP::NG / SAML2. Xavier GUIMARD (Gendarmerie Nationale) Clément OUDOT (Groupe LINAGORA)

Fiche Produit TSSO Extension Mobility Single Sign-On

EoleSSO EOLE 2.3. Documentation sous licence Creative Commons by-nc-sa - EOLE (http ://eole.orion.education.fr) révisé : Septembre 2014

La double authentification dans SharePoint 2007

Comprendre et optimiser la base de données WordPress WP TECH 2014

Plan. Présentation du logiciel Sympa Architecture La gestion des hôtes virtuels Listes avec inclusion des abonnés Les modules d authentification

SAML et services hors web

Les fichiers de configuration d'openerp

REAUMUR-ACO-PRES. Wifi : Point et perspectives

Installer un domaine DNS

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Transcription:

Intégration de Claroline à l'ent EsupPortail L'Université de Lille2 est membre de l'université Numérique Régionale Nord Pas de Calais. Nous sommes par ailleurs gros utilisateur de la plate-forme de formation Claroline : http://campus2.univlille2.fr Un des objectifs de cette UNR, est la mise service d'un Espace Numérique de Travail (ENT), le solution technique que nous avons retue est EsupPortail http://www.esup-portail.org/ Nous allons à la prochaine rtrée universitaire passer notre ENT production pour les étudiants. Afin de permettre l'intégration de notre Campus Virtuel dans l'ent, nous avons été amés à adapter quelques élémts du code que nous vous détaillons ici. Pour cela, nous avons dû : 1. Mettre Claroline conformité avec Supann. Supann est une nomclature LDAP pour les universités Française dans laquelle une personne peut s'idtifier à partir de 3 trois attributs LDAP. Ainsi il a fallut modifier Claroline pour permettre la recherche LDAP sur plusieurs attributs. De plus, pour assurer des profils uniques à chaque utilisateur Claroline, nous avons modifié

la phase d'authtification pour, une fois l'idtité de l'utilisateur validée, registrer comme username dans la base Claroline toujours le même attributs LDAP (l'uid) qui idtifie l'utilisateur (Quelque soit l'attribue LDAP qu'il a utilisé pour s'authtifier) 2. Modifier le comportemt Cas/claroline récupérant de notre annuaire LDAP les attributs des usagers. En particulier, si un usager est dans la base Claroline, on vérifie sont statut (pour qu'il soit créateur de cours ou non), si il ne l'est pas on récupère son idtité et son rôle (étudiant ou seignant) à partir de l'annuaire. 3. Empêcher que des lis fasst ressortir Claroline de l'ent. Nous avons intégré claroline dans esup portail utilisant des iframes. Cepdant, sur certains lis de navigation, claroline «sortait» de l'iframe pour s'ouvrir sur toute la page. Pour résoudre ce problème, nous avons modifié les lis de façon à supprimer les «target=_top» Les modifications qui ont été effectuées ne sont pas nécessairemt «très propres». Peut être y avait-il moy de faire plus simple. A terme, nous souhaiterions pouvoir disposer de ces évolutions dans les prochaines versions pour ne pas avoir à retravailler le code à chaque évolution du logiciel. Pour cela nous vous fournissons toutes les modifications que nous avons effectuées. Nous vous transmettons ces informations via l'adresse info@claroline.net. Nous sommes tout disposés à vous expliquer de vive voix ce que nous avons été amés à faire. Pierre-Hri Baraffe pierre-hri.baraffe@univ-lille2.fr Jean-Luc Tessier jean-luc.tessier@univ-lille2.fr

Modification pour mise conformité avec Supann 1 modification /claroline/inc/lib/pear/auth/container/ldap.php ligne 403 // Modif Pierre-Hri du 28-04-07 $mon_filtre=" "; for($i=0;$i<sizeof($this->options['userattr']);$i++) $mon_filtre=$mon_filtre. "(". $this->options['userattr'][$i]."=".$username. ")"; //$filter = sprintf('(&(%s=%s)%s)', $filter = sprintf('(&(%s)%s)', // $this->options['userattr'], // $username, $mon_filtre, $this->options['userfilter']); 2 modification claroline/auth/extauth/drivers/ldap.inc.php ligne28 // 'userattr' => 'uid', 'userattr' => array('uid','username','supannaliaslogin','edupersonprincipalname'), 'useroc' => 'person', 'attributes' => array('uid','sn', 'givname', 'telephonenumber','mail'), Statut créateur de cours 'attributes' => array('uid','sn', 'givname', 'telephonenumber','mail','edupersonprimaryaffiliation'), $extauthattribnamelist = array ( 'lastname' => 'sn', 'firstname' => 'givname', 'email' => 'mail', 'phonenumber' => 'telephonenumber', 'authsource' => 'ldap', 'iscoursecreator' => 'edupersonprimaryaffiliation' ); $extauthattribtreatmtlist = array ( 'lastname' => 'ldap_to_claroline', 'firstname' => 'ldap_to_claroline', 'loginname' => 'ldap_to_claroline', 'email' => 'ldap_to_claroline', 'officialcode' => 'ldap_to_claroline', 'phonenumber' => 'ldap_to_claroline', 'iscoursecreator' => 'ldap_course_creator' ); function ldap_course_creator($attribute)

if ( $attribute!="alum" && $attribute!="studt" ) return 1; else return 0; /var/www/localhost/htdocs/claroline184/claroline/inc/lib/pear/auth.php ligne 292 $this->username = $this->getauthdata('uid'); 3 modification claroline184/claroline/auth/extauth/extauthprocess.php insérer ligne 24 // Patch Supann Pierre-Hri 26-04-07 $sql = 'SELECT user_id FROM `'. $tbl_user. '` WHERE '. ( get_conf('claro_authusernamecasessitive',true)? 'BINARY' : ''). ' username = "'. addslashes($extauth->auth->getusername()).'"' ; $result = claro_sql_query($sql); if ( mysql_num_rows($result) > 0) $row = mysql_fetch_row($result); $udata['user_id'] = $row[0]; // Fin Patch Supann

modification du code pour la récupération des profils usagers lors de l'authtification CAS Dupliquer le fichier ldap.inc.php /claroline/auth/extauth/drivers/ldap.inc.php /claroline/auth/extauth/drivers/ldap_cas.inc.php dans ce fichier modifier les lignes 20 et 21 par $authsourcename = 'CAS'; $authsourcetype = 'CASLDAP'; ligne 91 return require dirname( FILE ).'/../extauthprocess_cas.inc.php'; Dupliquer le fichier extauthprocess.inc.php /claroline/auth/extauth/extauthprocess.inc.php /claroline/auth/extauth/extauthprocess_cas.inc.php dans ce fichier ligne 17 remplacer par require_once(dirname( FILE ). '/../../inc/lib/extauth_cas.lib.php'); dans ce fichier ligne 19 remplacer par $extauth = new ExternalAuthtication($authSourceType, $extauthoptionlist, phpcas::getuser()); Dupliquer le fichier extauth.lib.php /claroline/inc/lib/extauth.lib.php /claroline/inc/lib/extauth_cas.lib.php remplacer ligne 39 et suivantes function ExternalAuthtication($extAuthType, $authoptionlist, $caslogin) // $formfieldlist = array('username' => 'login', // 'password' => 'password')) dans ce fichier ligne 51 remplacer par if ($extauthtype == 'CASLDAP') dans ce fichier ligne 61 remplacer par require_once('auth/auth_cas.php'); dans ce fichier ligne 64 remplacer par $this->auth = new Auth($extAuthType, $authoptionlist,'', false, $caslogin); Dupliquer le fichier auth.php /claroline/inc/lib/pear/auth.php /claroline/inc/lib/pear/auth_cas.php

dans ce fichier remplacer la fonction Auth() function Auth($storageDriver, $options = '', $loginfunction = '', $showlogin = true, $caslogin) if (!empty($options['sessionname'])) $this->_sessionname = $options['sessionname']; unset($options['sessionname']); if ($loginfunction!= '' && is_callable($loginfunction)) $this->loginfunction = $loginfunction; if (is_bool($showlogin)) $this->showlogin = $showlogin; if (is_object($storagedriver)) $this->storage =& $storagedriver; else $this->storage = $this->_factory($storagedriver, $options); // Pass a referce to auth to the container, ugly but works // this is used by the DB container to use method setauthdata not staticaly. $this->storage->_auth_obj =& $this; $this->username=$caslogin; et remplacer la fonction assigndata() function assigndata() /* $post = &$this->_importglobalvariable('post'); if (isset($post['username']) && $post['username']!= '') $this->username = (get_magic_quotes_gpc() == 1? stripslashes($post['username']) : $post['username']); if (isset($post['password']) && $post['password']!= '') $this->password = (get_magic_quotes_gpc() == 1? stripslashes($post['password']) : $post['password'] ); */ Dupliquer le fichier auth.php /claroline/inc/lib/pear/auth/auth.php /claroline/inc/lib/pear/auth/auth_cas.php dans ce fichier remplacer la ligne par include_once(pear_lib_path. '/Auth_cas.php'); Dupliquer le fichier LDAP.php /claroline/inc/lib/pear/auth/container/ldap.php

/claroline/inc/lib/pear/auth/container/casldap.php dans ce fichier remplacer la ligne 169 par class Auth_Container_CASLDAP extds Auth_Container dans ce fichier remplacer la ligne 189 par function Auth_Container_CASLDAP($params) dans ce fichier remplacer la ligne 192 par return PEAR::raiseError('Auth_Container_CASLDAP: LDAP Extsion not loaded', 41, PEAR_ERROR_DIE); dans ce fichier remplacer la ligne 245 par return PEAR::raiseError("Auth_Container_CASLDAP: Could not bind to LDAP server.", 41, PEAR_ERROR_DIE); dans ce fichier remplacer la ligne 293 par return PEAR::raiseError("Auth_Container_CASLDAP: LDAP search base not specified!", 41, PEAR_ERROR_DIE); ligne 498 et suivantes /* if ($password!= "") $this->_debug("bind as $user_dn", LINE ); // try binding as this user with the supplied password if (@ldap_bind($this->conn_id, $user_dn, $password)) $this->_debug('bind successful', LINE ); // check group if appropiate if (strl($this->options['group'])) // decide whether memberattr value is a dn or the username $this->_debug('checking group membership', LINE ); return $this->checkgroup(($this->options['memberisdn'])? $user_dn : $username); else $this->_debug('authticated', LINE ); $this->_disconnect(); return true; // user authticated // checkgroup // bind // non-empty password */ $this->_disconnect(); return true; /var/www/localhost/htdocs/claroline184/claroline/auth/extauth/casprocess.inc.php ligne 108 remplacer else $_uid = null; par $claro_loginrequested = true; $claro_loginsucceeded = false;

else $_uid = include_once("/var/www/localhost/htdocs/campus/claroline/auth/extauth/drivers/ldap_cas.in c.php"); if ( $_uid!= null) $claro_loginrequested = true; $claro_loginsucceeded = true; $uidreset = true; else $claro_loginrequested = true; $claro_loginsucceeded = false; $uidreset = false; Modification du code pour éviter l'ouverture dans une nouvelle fêtre lorsque Claroline se trouve dans une iframe Suupression des target=_top dans les fichiers suivants : /claroline/inc/lib/html.lib.php /claroline/inc/claro_init_banner.inc.php: