2

如标题,有什么解决办法吗?

我用PHP函数ldap_bind($server, $username, $password)绑定了ldap服务器,

如果签名要求是“无”,它正在工作,

但如果更改为“需要签名”,则 ldap_bind 返回失败。

那么如何使用带有“需要签名”的 PHP 绑定到LDAP服务器?

4

2 回答 2

0

试试这个代码 我正在为我的本地 LDAP 服务器使用该代码

<?php

$ldapconfig['host'] = 'localhost';
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = 'dc=test,dc=example,dc=com';
$ldapconfig['authrealm'] = 'Nisarg';

function ldap_authenticate() {

      global $ldapconfig;
    global $PHP_AUTH_USER;
    global $PHP_AUTH_PW;
   //$PHP_AUTH_USER = "john";
    //$PHP_AUTH_PW = "esparkinfo";
   $PHP_AUTH_USER = $_SERVER['PHP_AUTH_USER'];
    $PHP_AUTH_PW = $_SERVER['PHP_AUTH_PW'];


    if ($PHP_AUTH_USER != "" && $PHP_AUTH_PW != "") {

        $ds=@ldap_connect($ldapconfig['host'],$ldapconfig['port']);

        $r = @ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $PHP_AUTH_USER);

        if ($r) {
            $result = @ldap_get_entries( $ds, $r);
            if ($result[0]) {
                if (@ldap_bind( $ds, $result[0]['dn'], $PHP_AUTH_PW) ) {
                    return $result[0];
                }
            }
        }
    }

    header('WWW-Authenticate: Basic realm="'.$ldapconfig['authrealm'].'"');
    header('HTTP/1.0 401 Unauthorized');
    return NULL;
}

if (($result = ldap_authenticate()) == NULL) {
    echo('Authorization Failed');
    exit(0);
}

echo('Authorization success');
echo "<pre>";
print_r($result);
echo"<pre>";
    print_r($_SERVER);
    die;


?>
于 2013-09-02T12:57:23.367 回答
0

您需要实现代码以使用 LDAPS(LDAP over TLS)。

于 2020-01-18T11:53:08.757 回答