Недопустимое ключевое слово AuthExternal (pwauth)

Я пытаюсь установить стандартную аутентификацию на своем использовании сервера Apache2 AuthExternal и pwauth. Таким образом с помощью пользователей системы для выполнения аутентификации, а не другого пользовательского дб.

Я мог установить и включить все беспрепятственно. (2.4.12-2ubuntu2) Apache2, libapache2-mod-authnz-external (3.3.2-0.1) и pwauth (2.3.11-0.1). Это все работает на моем Настольном выпуске Ubuntu 15.10 и 4.2.0-30-универсальном Linux. Ничто не полагает действительно, весь стандарт willy repo установки.

Apache2 работает, и модуль AuthExternal загружается правильно, по крайней мере, насколько я могу сказать:

me@bla:~$ systemctl status apache2.service | grep Active
  Active: active (running) since Thu 2016-02-25 13:41:02 CET; 33s ago
me@bla:~$ apache2ctl -M | grep external
  authnz_external_module (shared)

Я определил модули, которые будут использоваться, а также Derictory, к которому можно применить аутентификацию в файле конфигурации VHost. Посмотрите мой/etc/apache2/sites-enabled/000-default.conf ниже:

<IfModule mod_authnz_external.c>
    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe
</IfModule>

<VirtualHost *:80>

    ServerAdmin webmaster@localhost 
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html/sec>
        AuthType Basic
        AuthName "Restricted Area"
        AuthBasicProvider external
        AuthExternal pwauth
        Require user pat 
    </Directory>
</VirtualHost>

Теперь, когда я пытаюсь открыть loclahost/sec в браузере, мне предлагают войти в систему. Я обеспечиваю кусочек как пользователь и его пароль и ожидаю волшебства произойти. К сожалению, я получаю внутреннюю ошибку сервера, а не ожидаемый index.html 'Привет Мир'....

Таким образом, я проверил apache2 журналы ошибок и нашел 'Недопустимое ключевое слово AuthExternal (pwauth)' там. После некоторого рытья, которого я пришел к пониманию, что эта ошибка повышена AuthExternal, потому что это не может найти указанный pwauth. Таким образом, я пошел и проверил что путем выполнения:

sudo -u www-data which pwauth

Это возвратило тот же путь, как указано в вышеупомянутом файле конфигурации, так, чтобы мог быть исключен....

Я затем пытался перенаправить AuthExternal к сценарию оболочки для тестирования модуля независимо от pwauth. Сценарий просто добавляет строку к файлы для меня, чтобы видеть, называет ли это AuthExternal или нет. Я работал 'chmod u+s a+x' на файле, чтобы позволить этому работать с полномочием пользователя root, как pwauth потребности, что к доступу passwd, и дал ему другую попытку. Я также попробовал то же без u+s, поскольку это не нужно здесь, но это не сделало пошел немного лучше. Этот контрольный вывод меня для размышления, что существует что-то не так с моим apache2 и не pwauth.

Я протестировал все это с Cromium и Firefox, не, что он имеет значение интервал его случай, но Вы знаете..., что никогда нельзя быть достаточно уверенным, правильно? Я также попробовал все изменения, о которых я мог думать относительно того, куда я помещал директивы. Все непосредственно в appache2.conf, каталоге в appache2.conf и включении модуля в./conf-enable/security.conf, модулях в безопасности и каталоге в vhost, и т.д... Ни одно из этих изменений не помогло, некоторые сделали это худшим хотя...

Я затем сделал большой поиск с помощью Google.... Но я мог только найти информацию относительно этой темы с httpd.conf эры, которая действительно больше не применяется. Даже если это все еще обеспечивает некоторые допустимые и полезные подсказки... Кроме того, большинство, если не все те потоки используют подход .htaccess. Которого я стараюсь избегать при помощи директив Каталога для предотвращения отсутствия производительности, вызванного .htaccess.

Во всяком случае я вне идей с того, где посмотреть или что попробовать. Я поворачиваюсь в кругах, чтобы быть честным и ценил бы любую подсказку, идеи или решения получить меня далее.

7
задан 25 February 2016 в 05:45

2 ответа

Оказывается, AddExternalAuth и SetExternalAuthMethod должны быть размещены в объявлении VirtualHost. Следовательно следующая конфигурация работает просто великолепно:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost 
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe

    <Directory /var/www/html/sec>
        AuthType Basic
        AuthName "Restricted Area"
        AuthBasicProvider external
        AuthExternal pwauth 
        Require user pat
    </Directory>
</VirtualHost>

я все еще не понимаю, почему сценарий, в котором объявление сделано глобально, следовательно непосредственно в apache2.conf, не работает. Тем не менее, начальная проблема решена....

5
ответ дан 23 November 2019 в 06:44

Вещи, кажется, отличаются между апачскими версиями. Для apache2.4 GitHub для mod-auth-external привел меня к правильному пути.

  1. В apache2.conf создайте метод аутентификации (здесь: checkEtcPasswd):

    <IfModule mod_authnz_external.c>
        DefineExternalAuth checkEtcPasswd pipe /usr/sbin/pwauth
        # AddExternalAuth pwauth /usr/sbin/pwauth
        # SetExternalAuthMethod pwauth pipe
    </IfModule>
    
  2. Отошлите этот аутентификатор в блоке:

    AuthType Basic
    AuthName "Your AuthName"
    AuthBasicProvider external
    AuthExternal checkEtcPasswd
    Require valid-user
    

Именно. Легкий, если Вы знаете это...

0
ответ дан 23 November 2019 в 06:44

Другие вопросы по тегам:

Похожие вопросы: