const ldapConfig = {
url: 'ldap://your-ldap-server',
bindDN: 'cn=admin,dc=example,dc=com',
bindCredentials: 'admin-password',
searchBase: 'dc=example,dc=com',
searchOptions: {
scope: 'sub',
attributes: ['*'] // Fetch all attributes
}
};
function searchLDAPByUserPrincipalName(userPrincipalName, callback) {
const client = ldap.createClient({
url: ldapConfig.url
});
console.info('Connecting to LDAP server...');
client.bind(ldapConfig.bindDN, ldapConfig.bindCredentials, (err) => {
if (err) {
console.error('Bind error:', err);
return callback(err);
}
console.info('Bind successful');
const opts = {
...ldapConfig.searchOptions,
filter: `(&(objectClass=person)(userPrincipalName=${userPrincipalName}))`
};
client.search(ldapConfig.searchBase, opts, (err, res) => {
if (err) {
console.error('Search error:', err);
client.unbind();
return callback(err);
}
let user = null;
res.on('searchEntry', (entry) => {
console.info('Entry found:', JSON.stringify(entry.object, null, 2));
user = entry.object;
});
res.on('searchReference', (referral) => {
console.info('Referral:', referral.uris.join());
});
res.on('error', (err) => {
console.error('Search entry error:', err);
client.unbind();
return callback(err);
});
res.on('end', (result) => {
console.info('Search end status:', result.status);
client.unbind();
if (result.status !== 0) {
return callback(new Error(`Non-zero status from LDAP search: ${result.status}`));
}
callback(null, user);
});
});
});
}
// Example usage
searchLDAPByUserPrincipalName('[email protected]', (err, user) => {
if (err) {
console.error('LDAP search failed:', err);
} else {
console.info('User found:', user);
}
});```
Когда я запускаю этот код, я ожидаю увидеть сведения о пользователе в журнале. Однако я получаю следующий вывод журнала:
my-form\src> node server.js
Connecting to LDAP server...
Bind successful
Entry found: undefined
Search end status: 0
User found: undefined
Я вижу, что соединение и привязка LDAP прошли успешно, а параметры поиска выглядят правильно. Однако в журналах «Найденная запись» и «Найденный пользователем» отображается неопределенное значение.
Что я пробовал до сих пор:
Дважды проверьте значения ldapConfig, чтобы убедиться в их правильности. Проверено, что искомый userPrincipalName существует в каталоге. Зарегистрировали параметры поиска, чтобы убедиться, что они включают правильный фильтр и атрибуты. Несмотря на эти шаги, информация о пользователе по-прежнему не извлекается. Может ли кто-нибудь помочь мне понять, почему пользователь возвращается как неопределенный и как это исправить?
🤔 А знаете ли вы, что...
JavaScript можно использовать для создания анимаций и игр на веб-страницах.