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
Bloc de code |
---|
$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 :
Bloc de code |
---|
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
Bloc de code |
---|
<?
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 :
Bloc de code |
---|
header("Location: doku.php?do=login");
|