Использование Apache LDAP-аутентификации на index.php/admin
Я пытаюсь найти решение о настройке LDAP-аутентификации первого этапа для моей установки LimeSurvey 2.0. Теперь я сталкиваюсь с проблемой, что я могу просто указать каталог, который должен быть защищен, но LimeSurvey использует index.php/admin для интерфейса администратора. Есть ли возможность указать код ниже из моего vhost.conf для этого точного файла + "/admin"? Или вы знаете лучшее решение. Было бы здорово, если бы кто-то мог мне помочь.
Большое спасибо уже!
<Directory />
AuthLDAPUrl ldap://ldap.mydomain.com
/ou=users,[...]
AuthLDAPBindDN [...]
AuthLDAPBindPassword [...]
AuthBasicProvider ldap
AuthType Basic
AuthName [...]
Require valid-user
[...]
Satisfy any
</Directory>
2 ответа
Возможное решение состоит в том, чтобы LimeSurvey не содержал index.php в URL, отредактировав /application/config/config.php и установив
'showScriptName' => false,
Таким образом, URL будет выглядеть более
http://yourdomain/limesurvey/admin/authentication/sa/login
и LDAP может работать.
Почему бы не объединить базовую аутентификацию apache с системой PHP LDAP?
<?php
// Check username and password:
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])){
//store user
$Username = $_SERVER['PHP_AUTH_USER'];
//store password
$Password = $_SERVER['PHP_AUTH_PW'];
//Here the LDAP auth should be in place. $ldap is the ldap connection protocol object
if ($ldap->doAuth($Username,$Password)) {
//perform XML data output, based on $ldap->userinformation
} else {
// The text inside the realm section will be visible for the
// user in the login box
header('WWW-Authenticate: Basic realm="Mobile Feed"');
header('HTTP/1.0 401 Unauthorized');
echo '<?xml version="1.0" encoding="UTF-8"?>
<x protocolversion="1" lang="nl">
<x code="1">fail</fout>
</x>
';
}
}
?>
И объедините это со следующей библиотекой: http://code.google.com/p/ldap-auth-php/
В приведенной выше библиотеке есть include, называемый protectsinglepage.php. Вы можете включить это в свой основной проект. Для системы администратора просто оставьте это, чтобы он не был защищен LDAP