来自php的Apache Directory studio ldap bind

时间:2013-06-30 04:34:54

标签: apache ldap

我是Apache Directory Studio和ldap的新手。我正在从Apache Directory studio运行ldap服务器。我在ldap中有一个用户,我试图从php脚本绑定到uid。不确定我哪里出错了。

我使用的用户名为"uid=admin,ou=user" 密码为"secret"

我也尝试过"uid=arone_a,ou=users,dc=example,dc=com"用户名 密码为"password"

密码属性是手动设置的,arone_a是用户uid。

我正在尝试编写一个可以拉动ldap服务器中所有用户的php脚本。

提前致谢。

我的PHP脚本是:

$ldaphost = "localhost"; 

$ldapport = 10389;                

$ldaprdn='uid=admin,ou=system';

$ldappass='secret';

$ldapconn = ldap_connect($ldaphost, $ldapport)
          or die("Could not connect to $ldaphost");

if($ldapconn)
{

       $ldapbind=ldap_bind($ldapconn,$ldaprdn,$ldappass);


       if($ldapbind)
       {

                echo "success";
       }
       else
       {

                echo "not success";
       }
}

连接通过,但绑定没有通过。

3 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,问题是我在userPassword属性中添加了另一个指定语言的参数,导致userPassword;lang-ca-ES(向导显示一个表单来添加它)。< / p>

这引起了使用Apache Directory Studio的“验证”工作正常,但在“绑定”检查中失败了(您可以在密码编辑器中同时执行这两项操作,双击userPassword属性。

我最终离开了userPassword而没有其他属性,并且它完全绑定了:)

答案 1 :(得分:1)

只需添加ldap set选项,它对我有用

<?php 

$ldaphost = "localhost"; 

$ldapport = 10389;                

$ldaprdn='uid=admin,ou=system';

$ldappass='secret';

$ldapconn = ldap_connect($ldaphost, $ldapport)
          or die("Could not connect to $ldaphost");

if($ldapconn) {
    ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

       $ldapbind=ldap_bind($ldapconn,$ldaprdn,$ldappass);

       if($ldapbind) {
                echo "success";
                
       } else {
                echo "not success";

       }
}

?>

答案 2 :(得分:0)

简单的BIND请求需要DN,而不是RDN。您的BIND DN应该是uid=admin,ou=system,dc=example,dc=com吗?

另见