我在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属性?或者这是错误的名字?
答案 0 :(得分:0)
uid的变量名称与定义的IdP的元数据文件中的名称不同(我使用了FriedlyName)。除了idP没有发送属性。在他们更正了ClaimRules后,我在SAMLResponse中看到了属性(在我的Broswer插件中)
答案 1 :(得分:-1)
你应该尝试:
MellonSetEnvNoPrefix REMOTE_USER NAME_ID
RequestHeader Myheader %{REMOTE_USER}e
请注意,它不能与&#34; NameID&#34;
一起使用