mod_auth_mellon不填充环境variables

我已经设置mod_auth_mellon使用SAML 2.0进行外部authentication。 我使用外部IdP进行身份validation,但mod_auth_mellon不会填充环境variables,我无法获取用户名以继续对要保护的资源进行授权。

工作stream程如下:1)用户尝试访问/test/info.php 2)用户被redirect到外部IdP 3)用户对外部IdP进行authentication并被redirect到/auth/info.php

我的梅隆configuration如下:

<Location /> MellonSPPrivateKeyFile /etc/apache2/mellon-config/http_ec2_54_86_69_246.compute_1.amazonaws.com.key MellonSPCertFile /etc/apache2/mellon-config/http_ec2_54_86_69_246.compute_1.amazonaws.com.cert MellonSPMetadataFile /etc/apache2/mellon-config/http_ec2_54_86_69_246.compute_1.amazonaws.com.xml </Location> <Location /auth/info.php> MellonEnable "info" MellonSetEnv "email" "email" MellonSetEnv "username" "username" MellonUser "email" MellonSamlResponseDump On MellonSessionDump On MellonVariable "cookie" </Location> <Location /test/info.php> # This location will trigger an authentication request to the IdP. MellonEnable "auth" AuthType "Mellon" MellonVariable "cookie" MellonSetEnv "email" "email" MellonSetEnv "username" "username" MellonUser "email" MellonSamlResponseDump On MellonSessionDump On MellonEndpointPath /mellon Require valid-user </Location> 

在auth / info.php中,我尝试打印$ SERVERvariables:

 <?php var_dump($_SERVER); ?> 

我得到一个蜜蜂cookies,但无处可见,我设置的环境variables的值。

我错过了什么configuration?

我有这个问题,使用Apache作为我想受mod_auth_mellon保护的应用程序的反向代理。 看来apache不会自动传递由内部模块生成的头文件。 我必须启用mod_headers并添加这个:

 RequestHeader set Mellon-NameID %{MELLON_NAME_ID}e 

这需要MELLON_NAME_ID头,并将其作为Mellon-NameID传递给应用程序。 你必须为每个你想要传递的头文件添加类似的行,比如MELLON_SESSION。