如标题,有什么解决办法吗?
我用PHP函数ldap_bind($server, $username, $password)
绑定了ldap服务器,
如果签名要求是“无”,它正在工作,
但如果更改为“需要签名”,则 ldap_bind 返回失败。
那么如何使用带有“需要签名”的 PHP 绑定到LDAP服务器?
试试这个代码 我正在为我的本地 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;
?>
您需要实现代码以使用 LDAPS(LDAP over TLS)。