Articles of ldap

在Node.js上使用passport-ldapauth进行LDAPauthentication

我一直在与护照ldapauth挣扎了几天,我没有更多的想法,我做错了什么。 简而言之,我有一个使用两种护照策略的项目:本地和LDAP。 本地策略对我来说是完美的,但LDAP是有问题的。 我有一个AD的只读用户(我们称之为“ldap-read-only-admin”),我可以通过外部LDAP客户端连接到这个用户并查看相关的OU。 我也三重检查了SearchBase,这似乎是正确的。 但是,当将相同的configuration传递给passport-ldapauth时,它似乎无法绑定用户凭据(我猜)。 任何想法如何debugging这将非常感激。 这是app.js: var express = require("express"); var app = express(); var path = require("path"); var session = require("express-session"); var mongoose = require("mongoose"); var passport = require("passport"); var flash = require("connect-flash"); var cookieParser = require("cookie-parser"); var bodyParser = require("body-parser"); var morgan = require("morgan"); var configDB = require('./config/database.js'); require('./config/passport.js')(passport); // pass […]

在nodejs上的ldap auth – 不断得到32没有这样的对象

我是一个LDAP新手。 我正在使用nodejs的ldapauth ,我一直得到32 – No Such Object 。 这是我的代码: var LdapAuth = require('ldapauth'); var ldapOptions = { "url":"ldap://my-host:389", "adminDn" : "cn=manager,dc=guycrc,dc=com", "adminPassword":"secret", "searchBase":"ou=Engineering", "searchFilter":"(uid={{username}})" }; var ldapAuthClient = new LdapAuth( ldapOptions ); ldapAuthClient.authenticate('Dana', 'Dana', function(err, result) { if (err) { console.log(['Error',err.code, err.dn, err.message ]); } else { console.log('Credentials valid = ' + result); // true […]

通过HTTP访问LDAP目录?

我试图从本身不支持协议的设备访问LDAP目录。 我希望能够通过HTTP操作发送请求,运行LDAP查询,并以JSONforms返回结果。 我试图通过一个类似于LDAP客户端的Node.js服务器来做到这一点。 你可以在这里查看Gist。 几个问题: 这甚至有可能吗? 什么是authentication的最佳做法? 谢谢!

使用passport-ldapauth npm进行LDAPauthentication

我正在尝试使用passport-ldapauth npm来validationopenLDAP用户名和密码。 在执行下面的代码时,我总是得到错误{ message: 'Missing credentials' } 。 请帮助我,我的代码有什么问题。 var connect = require('connect'), app = connect(), passport = require('passport'), LdapStrategy = require('passport-ldapauth'); // Credentials from the free LDAP test server by forumsys // More info at: http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/ var OPTS = { server: { url: 'ldap://<ip>', bindDn: '<admin username>', bindCredentials: '<admin password>', usernameField: "<passing actual username>", […]

无法在节点12.7中安装LDAP

我已经将我的节点版本从10升级到12.7,之后我的LDAP模块不工作。当我试图安装最新的LDAP版本时,我得到了下面的错误 npm安装LDAP > node-gyp rebuild gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.12.7" gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/ubuntu/node_modules/LDAP/.node-gyp" make: Entering directory `/home/ubuntu/node_modules/LDAP/build' CXX(target) Release/obj.target/LDAP/src/LDAP.o ../src/LDAP.cc:10:18: fatal error: ldap.h: No such file or directory compilation terminated. make: *** [Release/obj.target/LDAP/src/LDAP.o] Error 1 make: Leaving […]

使用LDAP的Node.js身份validation机制

我希望实现一个login机制到我的应用程序,因为用户正在坐在LDAP服务器,而不是在本地数据库。 我一直在考虑实施passport.js,但我想弄清楚解决scheme的其他部分 – 我可以selectpassport-ldap ,或者我可以尝试…以“本地”策略实施解决scheme: passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } if (!user.verifyPassword(password)) { return done(null, false); } return done(null, user); }); } )); 作为function(user, password, done)可能被植入ldapjs 。 我不确定哪个选项会更好。 我认为第二个可能会给我更多的login过程控制,但使用LDAP策略可能会更有意义。 有什么build议么?

在Ldap.js中search

我正在尝试在我的node.js代码中使用Ldap.js的search方法。 但它不起作用。 这里是我的代码: searchFunc : function (){ console.log('inside search'); client.bind('cn=Manager,dc=foo,dc=com', kredito231, function(err) { if (err) { console.log(err); client.unbind(); return; } var opts = { filter: (('Email=*@foo.com')) } ; //This search works correct: //client.search( 'cn=x,ou=users' + ',' + 'dc=foo,dc=com', function(err,res){ //This one doesn't work. But everything is done according api client.search('dc=foo,dc=com', opts, function(err, res) { res.on('searchEntry', […]

ldapjs连接在一段时间后超时

我有一些关于使用LDAPjs的LDAP存储库中的searchEntry的问题。 我不熟悉LDAP,因此我可能会在客户端实现中丢失一些东西。 问题是,在一段时间后LDAP没有来自LDAP服务器的响应,没有任何callback被调用。 const ldapClient = ldap.createClient({ url: 'ldap://some.ldap.server', timeout: 3000, connectTimeout: 6000 }); ldapClient.search('c=XX', opts, (err, res) => { if (err) { ldapClient.unbind(function(err) { if (err) { console.log(err) } }); return next(null); } res.once('searchEntry', (entry) => { ldapClient.unbind(function(err) { if (err) { console.log(err) } }); return next(entry); }); res.on('error', (error) => { ldapClient.unbind(function(err) { […]

Active Directoryauthentication与ldap.js

我一直在尝试使用ldap.js对Active Directory Windows 2008服务器进行身份validation。 唯一的目标是对服务器进行身份validation,而我正在使用客户端的东西(不是创build新的服务器,这就是所有文档的内容)。 我完全不熟悉LDAP,因此,使用用户名“MYDOMAIN \ myuser”进行身份validation在ldap.js中不起作用,但在ldapsearch中执行: ldapsearch -H ldap://192.168.1.212:389 -x -D 'MYDOMAIN\myuser' -w pa33w0rd -LLL -b "dc=mydomain" '(sAMAccountName=myuser)' ,它authentication成功但是吐出了Referral (10) 。 在client.bind client.bind("MYDOMAIN\myuser", 'pa33w0rd', function(err) { … } ); 失败, 49 InvalidCredentialsError 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, … 尝试将MYDOMAIN \ myuser重写为Distingushed Name dn:cn = myuser,dc = mydomain也会在ldapsearch中失败并发生身份validation错误。 将DOMAIN \ USER(域反斜杠用户格式)转换为DN的正确方法是什么?

LDAP – 仅按名称查找用户

我对LDAP不太熟悉,但是我正在使用Node.js应用程序进行身份validation,并且Web应用程序的用户凭据将从组织的Windows域中获取。 我有LDAP查找工作(使用Passport.js节点模块),但是为了使其工作,我必须把用户的完整的DN到节点。 例如,让我们说: 我的FQDN是mydomain.private.net 。 我的用户存储在一个组织单位,比方说staff 。 现在,如果我想查找用户joe ,我必须把这个string放入Node: var username = 'CN=joe,OU=staff,DC=mydomain,DC=private,DC=net'; 我真的必须跟踪所有这一切吗? 如果我的用户在两个不同的组织单位呢? 客户端浏览器不知道! 它只知道: username = 'joe'; password = 'xxxxx'; 如果您尝试以pipe理员身份login,该怎么办? pipe理员默认情况下总是处于完全不同的OU。 有没有一种方法来引用一个LDAP对象的名字,而不是别的?