LDAP получить полное имя и адрес электронной почты nodejs - PullRequest
0 голосов
/ 04 ноября 2019

Я пишу приложение в узле JS. Для входа в систему я хотел бы использовать активный каталог. Я нашел этот пакет . Аутентификация в порядке, но я не могу получить полное имя пользователя и адрес электронной почты. Вот мой код:

var ActiveDirectory = require('activedirectory2');
var ActiveDirectory = require('activedirectory2');
var _ = require('underscore');
var query = 'cn=*Exchange*';
var opts = {
    includeMembership : [ 'all' ],
    includeDeleted : false
};
    var config = {
        url: 'ldap://dc.in.domain.cz',
        baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
        bindDN: 'CN=searchuser,CN=users,DC=in,DC=domain,DC=cz'
    };
    var ad = new ActiveDirectory(config);
    var username = 'username @in.domain.cz';
    var password = 'my_password';

    ad.authenticate(username, password, function (err, auth) {
        if (auth) {
        console.log('Authenticated!');
        ad.find(query, function (err, results) {
                if ((err) || (!results)) {
                    console.log('ERROR: ' + JSON.stringify(err));
                    return;
                }

                console.log('Users');
                _.each(results.users, function (user) {
                    console.log('  ' + user.cn);
                });
            });
        } else {
            console.log('Authentication failed!');
        }
    });

Я получаю сообщение об ошибке:

ERROR: {"lde_message":"000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580\u0000","lde_dn":null}

Спасибо

1 Ответ

1 голос
/ 04 ноября 2019

Функция authenticate используется только для проверки правильности учетных данных. Вы можете использовать это, например, если у вас есть страница входа в систему и вы хотите проверить, верны ли введенные вами учетные данные. Эти учетные данные не используются для других операций.

В документации говорится под заголовком использования :

Имя пользователя и пароль, указанные в конфигурацииэто то, что используется для операций поиска пользователей и групп.

Поэтому, когда вы используете find(), он использует учетные данные, которые вы указали в config. У вас есть bindDN там, но у вас нет password, что, вероятно, является причиной неудачной привязки. Вам нужно будет добавить пароль для этой учетной записи «searchuser»:

var config = {
    url: 'ldap://dc.in.domain.cz',
    baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
    bindDN: 'CN=searchuser,CN=users,DC=in,DC=domain,DC=cz',
    password: 'something'
};

Обратите внимание, что в документах говорится, что вы также можете использовать свойство username вместо bindDN, но не думайте, что тамэто любая функциональная разница, за исключением возможности просто указать имя пользователя, а не весь DN:

var config = {
    url: 'ldap://dc.in.domain.cz',
    baseDN: 'CN=Users,DC=in,DC=domain,DC=cz',
    username: 'searchuser@in.domain.cz',
    password: 'something'
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...