Назад | Перейти на главную страницу

Аутентификация в Apache через системную учетную запись

В настоящее время у меня есть сервер Apache для аутентификации через файл паролей, созданный из htpasswd. Настроен как таковой:

AuthType Basic
AuthName "Secured Site"
AuthUserFile "/etc/apache2/users.passwd"

Как я могу изменить это для аутентификации через локальные системные учетные записи и дополнительно ограничить только подмножеством локальных системных учетных записей в указанной группе?

Как предложил Дэвид Зи, вы можете использовать mod-authnz-external. Используйте это с pwauth например.

Если вы используете Debian или производную версию:

apt-get install libapache2-mod-authnz-external pwauth
a2enmod authnz_external

В вашей конфигурации добавьте

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

И в разделе Directory или в вашем файле .htaccess:

    AuthType Basic
    AuthName "Login"
    AuthBasicProvider external
    AuthExternal pwauth
    Require valid-user
    # or
    # Require user jules jim ...

Наконец, перезагрузите конфигурацию с помощью apache2ctl restart или service apache2 reload.

Смотрите также эта документация.

Вы, вероятно, захотите изучить что-то вроде mod_auth_pam. PAM - это система «подключаемого модуля аутентификации», а стандартный механизм входа в систему Linux (я предполагаю, что это Linux) полагается на PAM для аутентификации.

Другой вариант - mod_authnz_external, который будет смотреть прямо на /etc/shadow файл для аутентификации учетных записей.

РЕДАКТИРОВАТЬ: По-видимому mod_auth_pam больше не поддерживается (к сожалению), поэтому, возможно, mod_authnz_external было бы лучше ...

Модуль Apache mod_auth_pam сделает именно это за вас. Вы включаете модуль, и файл конфигурации должен выглядеть примерно так

AuthType Basic
AuthName "secure area"
require group staff
require user webmaster

И все готово.

Я столкнулся с той же проблемой. Вот мое решение, так как mod_auth_pam мертв, и никто не ответил на исходный вопрос,

"аутентифицироваться через учетные записи локальной системы ...в указанной группе"

Я использую Ubuntu 18.04, поэтому настройте установку пакета на свою собственную систему. В этом примере я размещаю каталог /var/www/data и хотят только пользователей в data группа, чтобы иметь доступ. Я предполагаю, что у вас запущена установка Apache и data группа уже создана.

Как упоминалось ранее, вам нужно схватить pwauth и authnz программное обеспечение. Дополнительно вам понадобится mod-authz-unixgroup для групповой аутентификации. Вы можете установить их, используя,

apt install libapache2-mod-authz-unixgroup libapache2-mod-authnz-external pwauth

Затем измените разрешения pwauth (это было исправлено 02.06.2020, но я оставлю это здесь для более старых выпусков), используя,

chmod u+s /usr/sbin/pwauth

Затем запишите конфигурацию виртуального хоста apache2. Вот очень простой пример,

<VirtualHost *:80>
    # Host Info
    ServerName cool.things
    ServerAdmin reallycooldude@cool.things
    DocumentRoot /var/www

    # Where the logs go
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # Setup external authentication
    <IfModule mod_authnz_external.c>
        AddExternalAuth pwauth /usr/sbin/pwauth
        SetExternalAuthMethod pwauth pipe
    </IfModule>

    # Load an _h5ai index
    <Directory "/var/www/data">
        Options Indexes FollowSymLinks MultiViews
        DirectoryIndex index.html index.php /data/_h5ai/public/index.php

        # Setup Basic Authentication
        AuthType Basic
        AuthName "data group members only"
        AuthBasicProvider external
        AuthExternal pwauth

        # Only allow members of the "data" group
        Require unix-group data

    </Directory>
</VirtualHost>

Наконец, вам нужно перезагрузить, перезапустить и проверить статус Apache на наличие ошибок.

service apache2 reload 
service apache2 restart 
service apache2 status