Cet espace présente les expériences de CASification de Docuwiki.
CASification par phpCAS
Inspiration : http://www.middleware.vt.edu/doku.php?id=middleware:dokuwiki
Alternative : http://gb01.no-ip.com/cas/
Fichiers à modifier
Fichier conf/dokuwiki.php
$conf['authtype'] = 'cas'; /* Ldap Options */ $conf['auth']['ldap']['server'] = 'ldap://ldap.univ.fr'; $conf['auth']['ldap']['usertree'] = 'ou=people,dc=univ,dc=fr'; $conf['auth']['ldap']['userfilter'] = '(uid=%{user})';
Fichier doku.php :
if ($ACT == 'login') { phpCAS::setFixedServiceURL( 'http://www.univ.fr/wiki/doku.php?'.$_SERVER["QUERY_STRING"]); phpCAS::forceAuthentication(); } if($ACT == 'logout') { phpCAS::logout(); }
Fichier inc/auth/cas.class.php
<? require_once(DOKU_INC.'inc/auth/ldap.class.php'); include_once('CAS/CAS.php'); phpCAS::client(CAS_VERSION_2_0, 'cas.univ.fr', 443, 'cas'); class auth_cas extends auth_ldap { function auth_cas() { global $conf; $this->cando['external'] = true; $this->auth_ldap(); } function trustExternal($user,$pass,$sticky=false){ global $USERINFO; global $conf; $sticky ? $sticky = true : $sticky = false; //sanity check $session = $_SESSION[$conf['title']]['auth']; if(phpCAS::isAuthenticated()) { $user = phpCAS::getUser(); if(isset($session)) { $_SERVER['REMOTE_USER'] = $user; $USERINFO = $session['info']; $_SESSION[$conf['title']]['auth']['user'] = $user; $_SESSION[$conf['title']]['auth']['pass'] = $session['pass']; $_SESSION[$conf['title']]['auth']['info'] = $USERINFO; $_SESSION[$conf['title']]['auth']['buid'] = $session['buid']; } else { $USERINFO = $this->getUserData($user); $_SERVER['REMOTE_USER'] = $user; $_SESSION[$conf['title']]['auth']['user'] = $user; $_SESSION[$conf['title']]['auth']['pass'] = $pass; $_SESSION[$conf['title']]['auth']['info'] = $USERINFO; $_SESSION[$conf['title']]['auth']['buid'] = auth_browseruid(); } return true; } return false; } } ?>
Pour forcer le login à l'appel de l'url de base du wiki : Fichier index.php :
header("Location: doku.php?do=login");