【发布时间】:2018-01-22 01:35:26
【问题描述】:
我正在我的 Node.js 应用程序中处理 LDAP 身份验证/授权流程,并且需要检索给定用户所属的 OU。
以下代码让我获得了用户,但是当我检查它时,我看不到 OU:
var express = require('express'),
passport = require('passport'),
bodyParser = require('body-parser'),
LdapStrategy = require('passport-ldapauth');
var opts = {
server: {
url: 'ldap://ldap.forumsys.com:389', // Host + port
bindDn: 'cn=read-only-admin,dc=example,dc=com', // user DN
bindCredentials: 'password', // Password
searchBase: 'dc=example,dc=com', // Base DN
searchFilter: '(uid={{username}})'
}
};
var app = express();
passport.use(new LdapStrategy(opts, function(user, done){
done(null, user);
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(passport.initialize());
app.post('/login', passport.authenticate('ldapauth', {session: false}), function(req, res) {
var ou = req.user.distinguishedName;
res.send({status: 'Hello ' + req.user.uid});
});
app.listen(8998);
鉴于此代码,检索 OU 的正确方法是什么?
【问题讨论】:
-
您可以尝试将
includeRaw: true添加到 opts.server。这应该获取接收到的原始数据。希望也有OU。我没有 LDAP 服务器来测试和验证 -
谢谢塔伦。我试过了,但 OU/组也不是原始的。
-
您可以尝试另一个属性
groupSearchAttributes: ["all"]。看看有没有帮助 -
还是差不多。得到了 cn、dn,但没有 OU
-
尝试全部更改为ou。实际上需要调试源,但我无权访问 AD 服务器
标签: node.js passport.js ldap-query