如何使用 nginx PAM 模块?

如何使用 nginx PAM 模块?

我想使用 nginxPAM 模块在 FreeBSD 系统上对现有用户进行网站身份验证。我尝试使用 pam_unix.so,但没有成功。它就是不让我使用我的 usr/psw 对登录。:(

nginx 配置:

location / {
        root html;
        auth_pam               "Secure Zone";
        auth_pam_service_name  "nginx";
        fastcgi_pass           127.0.0.1:9000;
        fastcgi_index          index.php;
        fastcgi_param          SCRIPT_FILENAME  /var/www/$fastcgi_script_name;
        include                fastcgi_params;
    }

目录中的 nginx 文件/usr/local/etc/pam.d

auth    required     pam_unix.so
account required     pam_unix.so

如果有人能告诉我一个可行的配置,我将不胜感激。:)

答案1

回答一个非常老的问题,但我能够确认这确实有效,所以这可能会有所帮助。这允许根据本地服务器帐户名对 nginx 位置进行身份验证。YMMV。

  • Ubuntu 18.04
  • nginx 1.14(包含 http_auth_pam 模块)
nginx -v
nginx version: nginx/1.14.0 (Ubuntu)

创建/etc/pam.d/nginx并添加行:

@include common-auth

在你的 nginx 配置中:

location /secure {
        auth_pam                "Secure zone";
        auth_pam_service_name   "nginx";
}

秘诀是:

sudo usermod -aG shadow www-data

检查 nginx.conf 中所使用的帐户user www-data。有时可以将其配置为nobody

重新启动 nginx 然后就好了!

感谢上述答案帮助我完成这个解决方案

答案2

不确定您是否已经尝试过,但我确实注意到了:

请注意,该模块以 Web 服务器用户身份运行,因此所使用的 PAM 模块必须能够在非 root 身份下对用户进行身份验证;这意味着如果您想使用 pam_unix.so 模块对用户进行身份验证,您需要让 Web 服务器用户读取 /etc/shadow 文件(如果这并不让您害怕的话)(在类似 Debian 的系统上,您可以将 www-data 用户添加到 shadow 组)。

Nginx HTTP Auth PAM 模块自述文件

恐怕我无法确认您的配置,因为我没有使用 pam_unix.so。

相关内容