在JavaScript中进行LDAP查询通常需要在服务器端进行,因为浏览器的同源策略和LDAP协议的特性使得直接在客户端JavaScript中进行LDAP查询变得困难。以下是一些常见的方法来进行LDAP查询:
ldapjs
库如果你有一个Node.js服务器,你可以使用ldapjs
库来进行LDAP查询。以下是一个简单的示例:
const ldap = require('ldapjs');
// 创建LDAP客户端
const client = ldap.createClient({
url: 'ldap://your-ldap-server:389'
});
// 绑定到LDAP服务器
client.bind('cn=admin,dc=example,dc=com', 'your-password', function(err) {
if (err) {
console.error('Bind error:', err);
return;
}
// 执行LDAP查询
const opts = {
filter: '(objectClass=person)',
scope: 'sub'
};
client.search('dc=example,dc=com', opts, function(err, res) {
if (err) {
console.error('Search error:', err);
return;
}
res.on('searchEntry', function(entry) {
console.log('Entry:', entry.object);
});
res.on('error', function(err) {
console.error('Error:', err.message);
});
res.on('end', function(result) {
console.log('Result:', result.status);
client.unbind();
});
});
});
如果你没有Node.js服务器,你可以使用PHP作为中间层来进行LDAP查询,然后通过AJAX请求从JavaScript中获取结果。
<?php
header('Content-Type: application/json');
$ldap_server = "ldap://your-ldap-server:389";
$ldap_user = "cn=admin,dc=example,dc=com";
$ldap_pass = "your-password";
$ldap_conn = ldap_connect($ldap_server) or die("Could not connect to LDAP server.");
if ($ldap_conn) {
ldap_bind($ldap_conn, $ldap_user, $ldap_pass) or die("Could not bind to LDAP server.");
$search_filter = "(objectClass=person)";
$base_dn = "dc=example,dc=com";
$result = ldap_search($ldap_conn, $base_dn, $search_filter);
$entries = ldap_get_entries($ldap_conn, $result);
echo json_encode($entries);
} else {
echo json_encode(array("error" => "Could not connect to LDAP server."));
}
?>
fetch('ldap_query.php')
.then(response => response.json())
.then(data => {
console.log('LDAP Entries:', data);
})
.catch(error => {
console.error('Error:', error);
});
某些LDAP服务器可能提供Web APIs,允许你通过HTTP请求进行LDAP查询。你可以使用JavaScript的fetch
或XMLHttpRequest
来进行这些请求。
fetch('https://your-ldap-server/api/search?filter=(objectClass=person)')
.then(response => response.json())
.then(data => {
console.log('LDAP Entries:', data);
})
.catch(error => {
console.error('Error:', error);
});
直接在浏览器JavaScript中进行LDAP查询是不推荐的,因为这会带来安全风险和实现复杂性。使用Node.js、PHP作为中间层或LDAP服务器提供的Web API是更常见和安全的做法。
领取专属 10元无门槛券
手把手带您无忧上云