mod_auth_mellon环境变量为null

时间:2017-02-24 12:15:19

标签: apache authentication

我在Apache上使用mod_auth_mellon进行外部身份验证,使用SAML和ADFS作为IDP。我获得了一个会话Cookie,而Authentification正在运行,但我没有得到IDP发送的属性。

我在另一个主题(mod_auth_mellon not populating environment variables)的答案中读到,必须在RequestHeader中写入属性,这就是我正在做的事情。

我的mellon配置如下:

<Location / >
    MellonEnable info
    MellonSessionDump On
    MellonSamlResponseDump On

    MellonEndpointPath /mellon             
    MellonSPMetadataFile /etc/apache2/saml2/metadata.xml
    MellonSPPrivateKeyFile /etc/apache2/saml2/metadata.key
    MellonSPCertFile /etc/apache2/saml2/metadata.cert
    MellonIdPMetadataFile /etc/apache2/saml2/FederationMetadata.xml


    MellonSetEnv "MELLON_SESSION" "MELLON_SESSION"
    MellonSetEnv "MELLON_SAML_RESPONSE" "MELLON_SAML_RESPONSE"

    RequestHeader set Mellon-Session "%{MELLON_SESSION}e"
    RequestHeader set Mellon-SAML-Response %{MELLON_SAML_RESPONSE}e

   MellonSetEnvNoPrefix "MELLON_uid" "uid"
   MellonSetEnvNoPrefix "MELLON_NameID" "NameID"

    RequestHeader set Mellon-UID %{MELLON_uid}e
    RequestHeader set Mellon-NameID "%{MELLON_NAME_ID}e"
</Location>

# This is a location that will trigger authentication when requested.
<Location /adfshandler >
    AuthType Mellon
    MellonEnable auth
    Require valid-user
</Location>

我可以在Header中看到set Atributes,除了uid之外,我有所有值的值,uid为null。我是否必须在某处指定requestet属性?或者这是错误的名字?

2 个答案:

答案 0 :(得分:0)

uid的变量名称与定义的IdP的元数据文件中的名称不同(我使用了FriedlyName)。除了idP没有发送属性。在他们更正了ClaimRules后,我在SAMLResponse中看到了属性(在我的Broswer插件中)

答案 1 :(得分:-1)

你应该尝试:

MellonSetEnvNoPrefix REMOTE_USER NAME_ID

RequestHeader Myheader %{REMOTE_USER}e

请注意,它不能与&#34; NameID&#34;

一起使用