PHP ldap#u bind无法在azure上运行,消息为can';不要联系Ldap服务器

PHP ldap#u bind无法在azure上运行,消息为can';不要联系Ldap服务器,php,laravel,azure,active-directory,Php,Laravel,Azure,Active Directory,我有一个laravel 5应用程序。使用下面的代码,当我在本地主机上并将公司网络连接到我的计算机时,我能够成功地通过active directory进行身份验证 public static function connect_ldap($username, $password) { $ldapServer = DirectorySetting::where('config_key', 'LdapServerAddress')->value('config_value');

我有一个laravel 5应用程序。使用下面的代码,当我在本地主机上并将公司网络连接到我的计算机时,我能够成功地通过active directory进行身份验证

public static function connect_ldap($username, $password)
{

    $ldapServer = DirectorySetting::where('config_key', 'LdapServerAddress')->value('config_value');
    $conn = ldap_connect($ldapServer, 389);

    if(!$conn) return false;

    ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, 3);
    $bindServerLDAP = @ldap_bind($conn, $username, $password);

    if(!$bindServerLDAP) return false;

    return $conn;
}
然而,我们的测试和生产服务器位于Microsoft Azure上。当我尝试验证时。我得到以下错误:

Warning:  ldap_bind(): Unable to bind to server: Can't contact LDAP server in /var/www/html/test_ldap.php on line 70
Error Binding to LDAP: No additional information is available
观察

  • ldap\u连接成功
  • 我可以成功ping ldap服务器地址
  • ldap_绑定不成功。在这里启用verbose也没有帮助。它只是告诉我,没有其他信息可用
  • 系统团队表示,他们已经在内部部署和azure active dir之间建立了链接
  • 我的服务器是CentOS 7,我启用了变量httpd_can_network_connect和httpd_can_connect_ldap,如下所示:

    sudo setsebool-p httpd\u can\u network\u connect on

    sudo setsebool-p httpd\u can\u connect\u ldap on

我同样在/etc/openldap/ldap.conf中添加了以下变量:

TLS\u REQCERT never

即使这样,它也不起作用


可能有什么问题?

错误信息广泛且不具体。但是您可以尝试使用LADP客户端工具,如或,来检查您是否拥有正确的帐户信息和LDAP目录信息。389是单个AD域上的LDAP。3268用于广告全球目录。端口636和3269是SSL等效端口。