我使用以下configuration来validation我的用户(简化)
<AuthnProviderAlias ldap server1> AuthLDAPURL ldap://server1/whatever?uid?one? </AuthnProviderAlias> <AuthnProviderAlias ldap server2> AuthLDAPURL ldap://server2/whatever?uid?one? </AuthnProviderAlias> <Location /> AuthName "Realm" AuthType Basic AuthBasicProvider server1 server2 AuthzLDAPAuthoritative off require valid-user </Location>
有什么办法可以知道我的用户是从哪个LDAP服务器进行身份validation的? 当身份validation成功时,我想设置一个HTTP头(类似于“SourceLDAPServer:server2”),以便能够告诉用户哪个服务器有效。Apache 2.2.x可以这样做吗?
Apache mod_headers应该是可能的。 不过,我不知道mod_ldap使用的环境variables。 如果您安装了PHP,只需创build一个包含行的PHP文件
<?php phpinfo(); ?>
并冲浪到该文件。 查看该页面中打印的环境variables,并尝试查看是否有任何ldapvariables。
似乎唯一的方法是从LDAP服务器中select更多属性,如下所示:
<AuthnProviderAlias ldap server1> AuthLDAPURL ldap://server1/whatever?uid,type1?one? </AuthnProviderAlias> <AuthnProviderAlias ldap server2> AuthLDAPURL ldap://server2/whatever?uid,type2?one? </AuthnProviderAlias>
身份validation成功后,根据哪个LDAP服务器进行身份validation,findAUTHENTICATE_type1或AUTHENTICATE_type2作为环境variables。
使用mod_headers,就可以通过这种方式设置标题值
Header set UserType type1 env=AUTHENTICATE_type1 Header set UserType type2 env=AUTHENTICATE_type2