我已经使用SAML2.0为外部身份验证设置了mod_auth_mellon。我使用外部IdP进行身份验证,但是mod_auth_mellon不填充环境变量,并且我无法获得用户名来继续对我想要保护的资源进行授权。
工作流程如下: 1)用户尝试访问/ IdP /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,但是我在任何地方都看不到我设置的环境变量的值。
我遗漏了什么配置?
发布于 2016-07-28 04:02:51
我在使用apache作为反向代理时遇到了这个问题,因为我想要一个受mod_auth_mellon保护的应用程序。apache似乎不会自动传递由内部模块生成的头文件。我必须启用mod_headers并添加以下内容:
RequestHeader set Mellon-NameID %{MELLON_NAME_ID}e这将获取MELLON_NAME_ID头并将其作为Mellon NameID传递给应用程序。您必须为希望传递的每个报头添加类似的行,例如MELLON_SESSION。
发布于 2019-03-07 22:02:08
感谢Crunge的回复
对我来说,它可以在httpd conf文件的<Location>部分中使用下面的行(标题而不是RequestHeader)
Header set Mellon-NameID: %{MELLON_NAME_ID}e
(需要重新加载apache服务)
https://stackoverflow.com/questions/32709589
复制相似问题