Apache 2.4 не вызывает Perl FastCGI Authenticator скрипт

Моя компания в настоящее время пытается реализовать новый скрипт входа на основе Perl FastCGI для работы с Apache 2.4 mod_fcgid модуль. Наш старый полагался на mod_perl сделать мост между базовой аутентификацией Apache и Perl, но mod_perl больше не доступен в RHEL 8.

После множества исследований за последние 2 недели я не смог заставить его работать. Признаюсь, мои знания Apache весьма ограничены, я программист, и я в основном учил себя тому, что знаю, поэтому заранее извиняюсь, если это что-то тривиальное.

Ниже приведена конфигурация моего виртуального сервера, основанная на документации mod_fcgid:

<VirtualHost *:80>

        ServerAdmin suporte@ourserver.com
        DocumentRoot "/var/www/"
        ScriptAlias /cgi-bin/ "/var/www/cgi-bin/teste_fcgi_autenticador/"

        ServerName teste_autenticacao.ourserver.com

        <Directory /var/www/cgi-bin/teste_fcgi_autenticador>
                Options +ExecCGI +FollowSymLinks
                AllowOverride AuthConfig
                AddHandler fcgid-script .cgi .pl
                AuthType Basic
                AuthName "Simple_login"

                #AuthUserFile /var/www/cgi-bin/teste_fcgi_autenticador/.htpasswd
                FcgidAuthenticator /usr/lib64/perl5/Autenticador/autenticador.pl

                Require valid-user
        </Directory>

        ErrorLog /var/log/httpd/error_log
        CustomLog /var/log/httpd/access_log combined

</VirtualHost>

Запуск выше без AuthType а также AuthName действительно работает, как показывает журнал ошибок:

mod_fcgid: authenticator requires basic HTTP auth credentials
No authentication done but request not allowed without authentication for /cgi-bin/teste.pl. Authentication not configured?

Когда я добавляю эти теги, журнал жалуется, что AuthUserFile отсутствует, подразумевая, что ожидает .htpasswrd файл вместо моего сценария.

Когда я пытаюсь запустить эту конфигурацию сервера с AuthUserFile, это работает как шарм, но проверка пользователя / пароля от .htpasswrd файл вместо моего сценария.

Я также попытался добавить эту конфигурацию в fcgid.confследующим образом, используя как старое, так и новое обозначение, но безуспешно:

# This is the Apache server configuration file for providing FastCGI support
# through mod_fcgid
#
# Documentation is available at
# http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html

# Use FastCGI to process .fcg .fcgi & .fpl scripts
AddHandler fcgid-script fcg fcgi fpl

# Sane place to put sockets and shared memory file
FcgidIPCDir /run/mod_fcgid
FcgidProcessTableFile /run/mod_fcgid/fcgid_shm

# Function that handles authentication
#FastCgiAuthenticator /usr/lib64/perl5/Autenticador/autenticador.pl
FcgidAuthenticator /usr/lib64/perl5/Autenticador/autenticador.pl

Вот скрипт Perl autenticador.pl мы пытаемся запустить - пример взят из документации mod_authnz_fcgi (и файл, и папка, в которой он находится, имеют полные разрешения):

#!/usr/bin/perl
use FCGI;
my $request = FCGI::Request();
while ($request->Accept() >= 0) {
    die if $ENV{'FCGI_APACHE_ROLE'} ne "AUTHENTICATOR";
    die if $ENV{'FCGI_ROLE'}        ne "AUTHORIZER";
    die if !$ENV{'REMOTE_PASSWD'};
    die if !$ENV{'REMOTE_USER'};

    print STDERR "This text is written to the web server error log.\n";

    if ( ($ENV{'REMOTE_USER' } eq "foo" || $ENV{'REMOTE_USER'} eq "foo1") &&
        $ENV{'REMOTE_PASSWD'} eq "bar" ) {
        print "Status: 200\n";
        print "Variable-AUTHN_1: authn_01\n";
        print "Variable-AUTHN_2: authn_02\n";
        print "\n";
    }
    else {
        print "Status: 401\n\n";
    }
}

Примечание: мы не используем mod_authnz_fcgi, поскольку он недоступен в сборке Apache 2.4 в RHEL 8. В настоящее время мы используем только сценарий, который работает так, как задумано, когда вызывается из оболочки. Если вы знаете, как установить и запустить этот модуль, пожалуйста, дайте мне знать.

Конфигурация системы для справки:
Сервер Amazon AWS под управлением RHEL 8
Apache 2.4.37
Perl 5.26.3

Заранее спасибо за любые мысли.

0 ответов

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