Hi,
In upgrading from 2006-03-09d to 2006-11-06 I find authentication
via htaccess is not working.
I am using apache to do LDAP authentication, and then
htaccess class (
http://wiki.splitbrain.org/wiki:tips:htaccessauth#the_htaccess_class)
to get authenticated users from apache.
It worked just fine for 2006-03-09d!
The dokuwiki 2006-11-06 symptom is...
Permission Denied
Sorry, you don’t have enough rights to continue. Perhaps you forgot to login?
In apache's ssl_error_log I get lots of the following...
[client 15.144.122.122] PHP Warning: Illegal offset type in /home/wwwrnd/public_html/dokuwiki-2006-11-06/inc/auth.php on line 384
[client 15.144.122.122] PHP Warning: Illegal offset type in /home/wwwrnd/public_html/dokuwiki-2006-11-06/inc/auth.php on line 389
[client 15.144.122.122] PHP Warning: Illegal offset type in /home/wwwrnd/public_html/dokuwiki-2006-11-06/inc/auth.php on line 394
Looking in auth.php I see ...
auth.php (2006-11-06)
---------------------
(lines 384, 389, 394 **)
function auth_nameencode($name,$skip_group=false){
global $cache_authname;
$cache =& $cache_authname;
** if (!isset($cache[$name][$skip_group])) {
if($skip_group && $name{0} =='@'){
$cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
"'%'.dechex(ord('\\1'))",substr($name,1));
}else{
** $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
"'%'.dechex(ord('\\1'))",$name);
}
}
** return $cache[$name][$skip_group];
}
auth.php (2006-03-09d)
----------------------
function auth_nameencode($name,$skip_group=false){
if($skip_group && $name{0} =='@'){
return '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
"'%'.dechex(ord('\\1'))",substr($name,1));
}else{
return preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e',
"'%'.dechex(ord('\\1'))",$name);
}
}
Assuming the fault lies in the parameter $name,
Looking back in the code, it appears that auth_nameencode() is called with $name set
to $_SERVER['REMOTE_USER'].
From the debug output, REMOTE_USER is set to "jon.buckingham_hp.com" (seems reasonable)
for both 2006-03-09d and 2006-11-06 dokuwiki's.
Relevant local.php configs are...
$conf['authtype'] = 'htaccess'; //which authentication backend should be used
$conf['useacl'] = 1; //Use Access Control Lists to restrict access?
$conf['openregister'] = 0; // Since you are using Basic HTTP Registration, i think openregister will not work .
$conf['htaccess_defaultgrp'] = "guest";
if (isset($_SERVER['PHP_AUTH_USER']) and !isset($_SESSION[$conf['title']]['auth']['info'])) $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER'];
Any ideas?
Thanks,
Jon B