mod_auth_mellon没有填充环境变量

时间:2015-09-22 06:11:54

标签: apache authentication

我已使用SAML 2.0设置mod_auth_mellon进行外部身份验证。我使用外部IdP进行身份验证,但是mod_auth_mellon没有填充环境变量,我无法获得用户名来继续授权我想要保护的资源。

工作流程如下: 1)用户尝试访问/test/info.php 2)用户被重定向到外部IdP 3)用户对外部IdP进行身份验证,并重定向到/auth/info.php

我的mellon配置如下:

<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中,我尝试打印$ SERVER变量:

<?php
  var_dump($_SERVER);
?>

我正在获取一个mellon-cookie,但我无处可以看到我设置的环境变量的值。

我缺少什么配置?

2 个答案:

答案 0 :(得分:1)

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

RequestHeader set Mellon-NameID %{MELLON_NAME_ID}e

这将获取MELLON_NAME_ID标头并将其作为Mellon-NameID传递给应用程序。您必须为要传递的每个标题添加类似的行,例如MELLON_SESSION。

答案 1 :(得分:0)

感谢Crunge的回复

对我来说,它适用于以下行(标头而不是RequestHeader)以及httpd conf文件的<Location>部分中

Header set Mellon-NameID: %{MELLON_NAME_ID}e

(需要重新加载apache服务)