安全地连接到ldap以获取傻瓜

时间:2015-03-13 12:48:15

标签: php ssl active-directory ldap xampp

我一直在努力奋斗几天没有进步,首先我对LDAP和Active Directory知之甚少。我需要使用php通过企业连接ldap服务器,然后只需运行绑定。

我在网上浏览了很多相关材料,但似乎没有人以明确的方式回答我的问题。此外,我收到的错误消息据说有很多原因,因此使目标更难。

这是我当前的代码

putenv('LDAPTLS_REQCERT=allow');

$ldaprdn  = 'user'; // ldap rdn or dn
$ldappass = 'password';

$ldapconn = ldap_connect("ldaps:\\localhost")
    or die("failed"); 

if (ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)) {
     echo "Using LDAPv3\n";
} else {
    echo "Failed to set protocol version to 3"; }

if ($ldapconn) {
    //ldap_bind() will fail without ldap_start_tls()
    if (ldap_start_tls($ldapconn)) {
        echo "LDAP TLS Started";
    }

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

    if ($ldapbind) {
        echo "LDAP bind OK";
    } else {
        echo "LDAP bind FAIL";
    }
}

这输出"失败",

但如果我改变

$ldapconn = ldap_connect("ldaps:\\localhost")
//to
$ldapconn = ldap_connect("localhost")

这是输出

Using LDAPv3 
Warning: ldap_start_tls(): Unable to start TLS: Can't contact LDAP server 
in C:\xampp\htdocs\OOP_curater\index.php on line 18

Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP 
server in C:\xampp\htdocs\OOP_curater\index.php on line 22
LDAP bind FAIL

有关项目的一些信息

  1. 它将托管在企业级别的内部网络上
  2. 所有用户只能从此内部网络访问
  3. 用于测试我目前在XAMPP上运行PHP,
  4. 生产将使用带IIS的Windows服务器
  5. 以下是我试图弄清楚的一些事情

    1. 如何确定Active Directory是否需要连接到" ldap"或" ldaps"
    2. "用户名"必须是"用户名"?或"域名/用户名"
    3. 我阅读了很多关于必须使用open ldaps和ssl重新编译php for ldaps,因为这是一个xxamp堆栈,它是否可能,如果是的话,如果没有,有什么替代方案
    4. 在此上下文中如何使用ldap_connect(),是否需要:
      • ldap_connect("本地主机&#34);
      • ldap_connect(" LDAP(S)://本地主机&#34);
      • ldap_connect(" ad.orgsitedomain.com&#34);
    5. 我是否需要从Active Directory小组获取任何信息,如果有,那将是什么。
    6. 请告诉我是否还有您需要的信息。感谢

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,因为这里没有回复我是怎么回事。

首先,最重要的是,如果您是Active Directory的新用户,请先阅读任何材料下载Active Directory Explorer。在研究解决方案时,您将获得有关Active Directory各个方面的更多上下文。

如何确定Active Directory是否需要连接到" ldap"或" ldaps"

我真的不知道,只是尝试了ldaps和ldap似乎都工作

"用户名"必须是"用户名"?或"域/用户名"

必须是"域/用户名"

我读了很多关于必须使用open ldaps和ssl重新编译php for ldaps,因为这是一个xxamp堆栈,它是否可能,如果是的话,如果没有,有什么替代方案

我再也不必这样做,所以真的还不知道

在此上下文中如何使用ldap_connect()

在我的情况下,它必须是ldap:// DOMAIN

所以再一次,我真正需要的唯一东西是Active Directory Explorer,其余的都是小菜一碟。有点想知道为什么在我遇到的所有内容中都没有提到这个