为傻瓜安全连接到 ldap

Connecting to ldap securely for Dummies

我已经苦苦挣扎了好几天没有任何进展,首先我对 LDAP 和 Active Directory 知之甚少。我需要使用 php 通过企业连接到 ldap 服务器,然后简单地 运行 绑定。

我在网上浏览了很多 material,但 none 似乎以明确的方式回答了我的问题。此外,据说我收到的错误消息有很多原因,因此更难定位。

这是我当前的代码

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";
    }
}

这输出 "failed",

但如果我改变

$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. 目前 运行正在 PHP XAMPP、
  4. 测试我
  5. 生产将使用带有 IIS
  6. 的 windows 服务器

以下是我想弄清楚的一些事情

  1. 如何确定是否需要在 "ldap" 或 "ldaps"
  2. 上连接 Active Directory
  3. "username" 一定要 "username" 吗?或 "domain/username"
  4. 我读了很多关于必须重新编译 php 与开放 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果不是,有哪些替代方案
  5. 在这种情况下如何使用 ldap_connect(),是否需要:
    • ldap_connect("localhost");
    • ldap_connect("ldap(s)://localhost");
    • ldap_connect("ad.orgsitedomain.com");
  6. 是否有任何我需要从 Active Directory 团队获取的信息,如果是,那是什么。

如果您需要更多信息,请告诉我。谢谢

我已经解决了这个问题,因为没有回复这是我如何处理的。

首先也是最重要的是,如果您是 Active Directory 的新手,请在阅读任何 material 下载 Active Directory Explorer 之前。在研究您的解决方案时,您将对 Active Directory 的各个方面有更多的了解。

如何确定是否需要在 "ldap" 或 "ldaps"

上连接 Active Directory

我真的不知道,刚试过 ldaps 和 ldap 似乎都可以工作

"username" 一定要 "username" 吗?或 "domain/username"

必须是"Domain/Username"

我读了很多关于必须重新编译 php 与开放的 ldaps 以及 ldaps 的 ssl,因为这是一个 xxamp 堆栈,是否有可能,如果是如何,如果没有, 有哪些选择

又一次我没有必要这样做,所以真的还是不知道

在这种情况下如何使用 ldap_connect()

在我的情况下至少必须是 ldap://DOMAIN

因此,我真正需要的唯一东西就是 Active Directory Explorer,其余的都是小菜一碟。有点想知道为什么我遇到的所有 tuts 都没有提到这一点