通过系统帐户在 Apache 中进行身份验证

通过系统帐户在 Apache 中进行身份验证

我目前有我的 apache 服务器通过 htpasswd 创建的密码文件进行身份验证。配置如下:

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

我如何才能将其更改为通过本地系统帐户进行​​身份验证,并将其限制为仅指定组中的本地系统帐户子集?

答案1

根据 David Z 的建议,您可以使用 mod-authnz-external。将其与验证码例如。

如果您正在运行 Debian 或衍生版本:

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

在您的配置中,添加

<IfModule mod_authnz_external.c>
  DefineExternalAuth pwauth pipe /usr/sbin/pwauth
</IfModule>

在目录部分或 .htaccess 文件中:

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

apache2ctl restart最后使用或重新加载配置service apache2 reload

也可以看看本文档

答案2

你可能想研究一下mod_auth_pam。PAM 是“可插入式身份验证模块”系统,标准 Linux(我假设这是 Linux)系统登录机制依赖 PAM 进行身份验证。

另一个选择是mod_authnz_external,它将直接查看/etc/shadow文件来验证帐户。

编辑:显然mod_auth_pam不再维护(不幸的是),所以也许mod_authnz_external是更好的选择......

答案3

Apache 模块mod_auth_pam会为你完成这个。你启用模块,配置文件应该类似于

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

一切就绪。

答案4

我刚刚遇到了同样的问题。这是我的解决方案,因为mod_auth_pam已经失效了,没有人解决原始问题,

“通过本地系统帐户进行​​身份验证...在指定的组中

我使用的是 Ubuntu 18.04,因此请根据自己的系统对软件包安装进行调整。在此示例中,我托管了一个目录/var/www/data,并且只希望组中的用户data有权访问。我假设您已运行 Apache 安装并且data已创建了组。

如前所述,您需要获取pwauthauthnz软件。此外,您还需要mod-authz-unixgroup组身份验证。您可以使用以下方式安装它们:

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

接下来,使用以下命令更改 pwauth 的权限(此操作已于 2020-06-02 修复,但我将保留此权限以用于旧版本),

chmod u+s /usr/sbin/pwauth

然后,编写你的 apache2 VirtualHost 配置。这是一个非常简单的例子,

<VirtualHost *:80>
    # Host Info
    ServerName cool.things
    ServerAdmin [email protected]
    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

相关内容