...
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");
|
...
- Présentation du service de wikis de listes : http://www.cru.fr/services/wiki/index
- Article de l'écho du CRU sur le service de wikis de listes : http://www.cru.fr/echo/13#le_wiki_un_nouveau_service_associe_aux_listes_de_diffusion
- Couplage Sympa / Dokuwiki / Shibboleth : http://www.sympa.org/faq/sympa_and_wiki_farm
- Module Dokuwiki : http://sourcesup.cru.fr/projects/dwshibb
- Utilisation du module Dokuwiki : http://www.sympa.org/contribs/shibbolethauth
- Poster présenté à TNC 2008 : http://www.sympa.org/_media/doc/poster-tnc2008_a4.pdf
- Article présenté à EUNIS 2008 : http://www.sympa.org/_media/faq/eunis2008.pdf
ACL Dokuwiki basé sur attribut ldap
En plus d'une authentification CAS, il est possible d'utiliser le backend ldap (http://www.dokuwiki.org/auth:ldap) afin de recuperer le groupe (ldap) de l'utilisateur connecté. Ainsi nous pouvons definir un acces granulaire (ACL) a differents namespaces/pages dokuwiki en fonction du groupe de l'utilisateur.
dans conf/local.php
Pas de format |
---|
$conf['auth']['ldap']['server'] = 'ldap://ldap.domain.tld:389';$conf['auth']['ldap']['port'] = '389';$conf['auth']['ldap']['usertree'] = 'ou=People, dc=domain,dc=tld';$conf['auth']['ldap']['grouptree'] = 'ou=Group, ou=system,dc=domain,dc=tld';$conf['auth']['ldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))';$conf['auth']['ldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUid=%{user})))';$conf['auth']['ldap']['binddn'] = 'cn=binder, ou=system,dc=domain,dc=tld';$conf['auth']['ldap']['bindpw'] = 'secret';$conf['auth']['ldap']['version'] = '3';
|