2015-03-13 76 views
0

我一直在努力奋斗几天而没有进步,首先我对LDAP和Active Directory知之甚少。我需要使用php通过企业连接ldap服务器,然后只需运行绑定即可。安全地连接到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. 为了测试即时访问当前正在运行的托管PHP的XAMPP,
  4. 生产将使用Windows服务器IIS

关注ING是一些事情,我想弄清楚

  1. 如何确定如果Active Directory需要在“LDAP”或“LDAPS”连接
  2. 是否“用户名”必须只是“用户名”?或“域名/用户名”
  3. 我读了很多关于必须重新编译php与开放ldaps以及ssl ldaps,因为这是一个xxamp堆栈,甚至有可能,如果是的话,如果没有,如何,如何选择
  4. 在这种情况下究竟如何使用ldap_connect(),它是否需要:
    • ldap_connect(“localhost”);
    • ldap_connect(“ldap(s):// localhost”);
    • ldap_connect(“ad.orgsitedomain.com”);
  5. 是否有任何信息需要从Active Directory团队中获取,如果是,那会是什么。

请让我知道是否有任何更多的信息,你需要。谢谢

回答

0

我已经解决了这个问题,因为这里没有答复我是如何去做的。

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

如何确定如果Active Directory需要在“LDAP”或“LDAPS”

我真的不知道还连接,只是试图LDAPS和LDAP都似乎工作

“用户名”是否只是“用户名”?或“域/用户名”

它必须是“域/用户名”

我读了很多关于重新编译PHP与SSL的LDAPS一起开LDAPS,因为这是一个xxamp栈,它甚至有可能,如果是如何,如果没有,有什么替代方案

我又没有做到这一点,所以真的还没有意识到

为什么说一个使用ldap_connect()在这个背景

它必须是LDAP:// DOMAIN ATLEAST在我的情况

所以再次,我真正需要的唯一的事情就是Active Directory的浏览器,其余完全是小菜一碟。有点想知道为什么这在我遇到的所有问题中都没有提到