Это легко, но я боюсь, что это не то, что вы хотите. В application/config/config.php
вы меняете это:
$config['enableLdap'] = true;
Затем настройте каталог LDAP в application/config/ldap.php
. Большинство описаны здесь. Вам придется изменить пути и запросы LDAP, особенно если вы используете ActiveDirectory. Почему я упоминаю об этом, станет ясно позже.
Аутентификация LDAP может быть выполнена, но нет ничего готового. IIRCC (если я правильно прочитал код). Процедура входа заканчивается вызовом UserIdentity::authenticate. Следуя (в строке 70 в версии ad10c28354431e09c3e82800721427bee31c6598
), я придумал это
В config.php измените это
$config['auth_webserver'] = true;
Что делегирует аутентификацию веб-серверу. Используйте все, что установит переменную REMOTE_USER
. Это расплывчато, я знаю. Но Limesurvey дает вам только два варианта: внутренняя база данных или внешняя. Мы должны выбрать внешний, где мы настроим аутентификацию LDAP и HTML-формы, которые несколько соответствуют Limesurvey.
Положительным моментом является то, что вы можете использовать IIS для установки REMOTE_USER
, достигая однократной регистрации, если вы устанавливаете это во внутренней сети на базе Microsoft.
После этого вам придется написать код, реализующий hook_get_auth_webserver_profile
. Это означало бы найти пользователя в LDAP, возможно, используя параметры, найденные в ldap.conf
.
Это большая работа, но вы можете легко сделать доказательство концепции. Измените конфигурацию, как указано, жестко закодируйте hook_get_auth_webserver_profile
для данного пользователя и войдите в Limesurvey, подделав http-заголовок REMOTE_USER по вашему выбору.
person
ixe013
schedule
17.09.2013