3

私はldapが初めてです。ldapauth.js を使用して資格情報を認証しています。

認証にldapauth npmを使用しました。

/*--------------LDAP_AUTH--------------*/

var ldap = require('ldapjs');
var LdapAuth = require('ldapauth');
var server = ldap.createServer();

server.search('o=example', function(req, res, next) {
  var obj = {
    dn: req.dn.toString(),
    attributes: {
      objectclass: ['organization', 'top'],
      o: 'example'
    }
  };

  if (req.filter.matches(obj.attributes))
    res.send(obj);

  res.end();
});

server.listen(1389, function() {
  console.log('LDAP server listening at %s', server.url);
});



var options = {
    url: "ldap://0.0.0.0:1389",
    adminDn: "uid=myadminusername,ou=users,o=example",
    adminPassword: "mypassword",
    searchBase: "ou=users,o=example",
    searchFilter: "(uid={{username}})"
};
var auth = new LdapAuth(options);

auth.authenticate('myadminusername', 'mypassword', function(err, user) { console.log('err'); 
    console.log(err);
console.log(err.message);
console.log('user');
console.log(user);
});

auth.close(function(err) { console.log('errorr'); })

コンソールでエラーメッセージが表示されます。

LDAP server listening at ldap://0.0.0.0:1389
err
{ dn: [Getter],
  code: [Getter],
  name: [Getter],
  message: [Getter] }
No tree found for: uid=myadminusername, ou=users, o=example
user
undefined

何が間違っているのかを理解するのを手伝ってください。

御時間ありがとうございます

4

2 に答える 2

1

ポート番号を間違って入力したようです。デフォルトのLDAPポートはです389が、ここではを使用していますurl: "ldap://0.0.0.0:1389"。コードで実際のIPを使用していると仮定します。

于 2013-02-11T08:24:44.777 に答える
1

LDAP クライアントと LDAP サーバーを同じプロセスで実行しています。どういうわけか、これがあなたのやりたいことだとは思えません。通常、認証サービスを提供するサーバー プロセスを作成するか、中央の LDAP ディレクトリに対してユーザーを認証しようとするクライアントになります。

エラーメッセージは、サーバーにデータがないことも示しています-当然、サーバーを開始してデータを提供しなかったためです。

中央の(すでにどこかで実行されている)LDAPサーバーに、サーバー/ API / Webサイトを使用したいユーザーを認証するように依頼したいだけだと思います。その後、あなたがしていることの2番目の部分は正しいです。ここにある説明のみを使用してください

ここでパフォーマンスに関する私の並行した質問でエクスプレスアプリの構成を参照してください

于 2013-12-11T16:58:38.207 に答える