使用apache进行身份验证:将组作为头传递给应用程序服务器

使用apache进行身份验证:将组作为头传递给应用程序服务器,apache,mod-rewrite,reverse-proxy,Apache,Mod Rewrite,Reverse Proxy,我想在应用服务器前面使用Apache web服务器作为反向代理来处理身份验证。 其想法是,在身份验证之后,Apache将在请求头中将用户和组传递给应用服务器 如何在环境变量中捕获经过身份验证的用户组,以便使用它设置请求头? 我已成功地将用户写入如下标题: RewriteCond %{LA-U:REMOTE_USER} (.+) RewriteRule . - [E=RU:%1,NS] RequestHeader set X-Forwarded-User %{RU}e 我假设组的情况类似,但我找

我想在应用服务器前面使用Apache web服务器作为反向代理来处理身份验证。
其想法是,在身份验证之后,Apache将在请求头中将用户和组传递给应用服务器

如何在环境变量中捕获经过身份验证的用户组,以便使用它设置请求头?

我已成功地将用户写入如下标题:

RewriteCond %{LA-U:REMOTE_USER} (.+)
RewriteRule . - [E=RU:%1,NS]
RequestHeader set X-Forwarded-User %{RU}e
我假设组的情况类似,但我找不到应该在
RewriteCond
中使用什么变量。(或者还有其他方法吗?)


RewriteCond%{???}(+)#我也遇到了同样的问题,经过广泛的搜索并查看mod_authz_groupfile.c源代码后,仅仅通过配置似乎是不可能的

该组没有作为变量公开,而且似乎没有办法在表达式中使用
requiregroup
语句。您可能会使用指令将组放入一个变量中,然后使用自定义的外部命令再次读取AuthGroupsFile(像这样的默认命令是不够的),但这非常复杂,而且可能很慢

请注意,使用读取
表达式中的AuthGroupsFile将不起作用,因为该表达式是在验证之前计算的,因此远程用户变量的值将不可用

RewriteCond %{???} (.+)  # <--- what variable should I use here
RewriteRule . - [E=RG:%1,NS]
RequestHeader set X-Forwarded-User-Groups %{RG}e
<VirtualHost *:80>
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    <Location />
        AuthType Basic
        AuthBasicProvider file
        AuthName "Restricted Content"

        AuthUserFile "/path/to/userfile"
        AuthGroupFile "/path/to/groupfile"
        Require group users
        Require group admins

        RewriteEngine On

        RewriteCond %{LA-U:REMOTE_USER} (.+)
        RewriteRule . - [E=RU:%1,NS]
        RequestHeader set X-Forwarded-User %{RU}e

        RewriteCond %{???} (.+)
        RewriteRule . - [E=RG:%1,NS]
        RequestHeader set X-Forwarded-User-Groups %{RG}e

        RequestHeader unset Authorization
    </Location>
</VirtualHost>