如何防止mod_authz_ldap使用登录凭据绑定到LDAP

时间:2012-09-08 23:52:46

标签: apache authentication ldap

我正在尝试使用mod_authz_ldap进行用户身份验证。有一个奇怪的LDAP设置,我们必须绑定到LDAP目录

uid=user,o=organisation

然后查询

cn=xxx,o=organisation 

获取用户的凭据。以下配置实际上有效,之外,它尝试使用登录用户的凭据绑定到LDAP目录,不用说失败。

为了验证这一点,我尝试作为LDAP绑定用户对应用程序进行身份验证,并且身份验证成功。

<Location />

    AuthType Basic
    AuthName "My LDAP authenticated app"

    AuthzLDAPLogLevel debug

    AuthBasicProvider ldap
    AuthBasicAuthoritative off
    AuthzLDAPAuthoritative off

    AuthzLDAPBindPassword bindpass
    AuthzLDAPBindDN "uid=binduser,o=my.edu.au"

    AuthzLDAPMethod ldap
    AuthzLDAPServer ldapdevel.my.edu.au
    AuthzLDAPUserBase o=my.edu.au
    AuthzLDAPUserKey cn
    AuthzLDAPUserScope base
    AuthLDAPRemoteUserAttribute cn

    Require valid-user

</Location>

Apache错误日志,用于演示mod_authz_ldap尝试绑定,因为用户尝试再次对应用进行身份验证:

[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] [15628] bind as cn=devraj,l=X,ou=Students,o=my.edu.au failed: 49
[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] [15628] basic LDAP authentication of user 'devraj' failed
[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] access to / failed, reason: verification of user id 'devraj' not configured

此外,如果我提供了错误的绑定凭据,mod_authz_ldap会抱怨无法绑定为绑定用户。这表明它尝试绑定为绑定用户,但也绑定为身份验证用户。

我的问题,我做错了什么导致mod_auz_ldap使用用户凭据绑定到LDAP目录?

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

为什么AuthzLDAPBindDN“uid = binduser,o = my.edu.au”? 然后你会显示AuthzLDAPUserKey cn。

“uid = binduser,o = my.edu.au”通常应该是来自LDAP的有效用户,通常是服务帐户。

然后,AuthzLDAPUserKey cn将表示LDAP中用户的RDN(相对可分辨名称)属性。你有一个用户uid = binduser和其他用户是不典型的:cn = devraj。

uid = binduser,o = my.edu.au是否存在?

用户cn = devraj,l = X,ou =学生,o = my.edu.au是否存在? (或者是:uid = devraj,l = X,ou =学生,o = my.edu.au)

-Jim

答案 1 :(得分:0)

  

它尝试使用登录用户的凭据绑定到LDAP目录,不用说失败

为什么'不用说'?为什么它会失败呢?这正是应该做的。通常,您应该在目录中搜索用户,可能使用系统帐户执行此操作,然后使用其凭据绑定为找到的用户。如果成功,则验证完成。如果您的LDAP未设置为支持该设置,则会错误地设置它。