Apache:如何判断我的用户通过哪个 LDAP 服务器进行了身份验证

Apache:如何判断我的用户通过哪个 LDAP 服务器进行了身份验证

我正在使用以下配置对我的用户进行身份验证(简化)

<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 服务器进行身份验证的?当身份验证成功时,我想设置一个 HTTP 标头(类似“SourceLDAPServer: server2”),以便能够判断用户在哪个服务器上有效。Apache 2.2.x 可以做到这一点吗?

答案1

Apache 应该可以mod_headers。不过,我不知道 mod_ldap 会使用什么环境变量。如果您安装了 PHP,只需创建一个包含以下行的 PHP 文件

<?php phpinfo(); ?>

然后浏览该文件。查看该页面中打印的环境变量,并尝试找出周围是否有任何 ldap 变量。

答案2

似乎唯一的方法是从 LDAP 服务器中选择更多属性,如下所示:

<AuthnProviderAlias ldap server1>
  AuthLDAPURL ldap://server1/whatever?uid,type1?one?
</AuthnProviderAlias>

<AuthnProviderAlias ldap server2>
  AuthLDAPURL ldap://server2/whatever?uid,type2?one?
</AuthnProviderAlias>

当身份验证成功时,您会发现AUTHENTICATE_type1AUTHENTICATE_type2作为环境变量,具体取决于执行身份验证的 LDAP 服务器。

使用 mod_headers,可以通过这种方式设置 header 值

Header set UserType type1 env=AUTHENTICATE_type1
Header set UserType type2 env=AUTHENTICATE_type2

相关内容