Apache2:如何在外部身份验证脚本中设置环境变量

Apache2: How to set Environment Variable inside External Auth Script

提问人:JoJ 提问时间:8/8/2023 更新时间:8/8/2023 访问量:46

问:

我正在使用此插件来验证用户的个人访问令牌:https://github.com/phokz/mod-auth-external

用户名无关紧要,我正在针对外部服务验证 PAT。 此外部服务将返回 UserId 和 Role。

现在,我希望能够将userId和Role设置为外部身份验证器中的环境变量,然后再在Apache2将调用专用路由的CGI脚本中使用这两个。

我尝试了以下方法,但环境变量始终为空。是否可以从外部身份验证设置一个值?否则,我该如何与 apache2 通信?- 请记住,下面是一个最小的示例,可以展示和关注问题本身 -

两个简单的外部身份验证器脚本(均未设置环境)

#!/usr/bin/perl
use Env;

$ENV{USER}="TESTUSER1";
$ENV{USERID}="TESTUSER2";
$ENV{ROLE}="ADMIN";
$ENV{REMOTE_USER}="TESTUSER3";

exit 0;
#! /bin/sh

export USER="USER1"
export USERID="USER2"
export ROLE="USER3"
export REMOTE_USER="USER4"

exit 0

script.pm

#!/usr/bin/perl
die "The user '$ENV{USER}', '$ENV{USERID}', '$ENV{ROLE}', '$ENV{REMOTE_USER}' has no access!";

路由的 apache2 配置 /

<VirtualHost *:80>
    SetEnv USERID

    AddExternalAuth pwauth "/usr/local/scripts/authenticator.sh"
    SetExternalAuthMethod pwauth pipe

    ScriptAlias / /usr/local/scripts/script.pm/

    <Location />
        Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
        AllowOverride None
        order allow,deny
        Allow from all
        AuthType Basic
        AuthName "Restricted Content"
        AuthBasicProvider external
        AuthExternal pwauth
        Require valid-user
    </Location>

    AddHandler cgi-script .pm
</VirtualHost>
Apache 身份验证 UNIX 环境变量 apache2

评论


答: 暂无答案