几天来我一直在努力使它工作...
我创建了一个完全独立的节点JS应用,并使用express对其进行了测试,然后再将其应用到我的应用中。当我使用来自forumsys.com的托管测试广告时,它工作得很好。我不断收到“未经授权”的消息。
我找不到从该模块中获取调试详细信息的好方法...我使用的任何方法仅返回模糊的消息...未经授权的意思是什么?它搜索了广告,但找不到用户?还是无法绑定?我在想它不能绑定。
奇怪的是,我注意到广告中用户的完整DN带有反斜杠。
这是我的服务器详细信息:(您可以从forumsys.com上看到运行良好的注释代码)
server: {
url: 'ldap://ad-prod01.myco.net:389',
bindDN: 'CN=myapp\, adserver01 (SA),OU=Service Accounts,OU=Users and Groups,DC=myco,DC=net',
bindCredentials: 'password12345',
searchBase: 'DC=myco,DC=net',
searchFilter: '(samaccountname={{username}})'
}
这是我的整页:
var express = require('express'),
passport = require('passport'),
bodyParser = require('body-parser'),
LdapStrategy = require('passport-ldapauth');
path = require('path')
var OPTS = {
server: {
url: 'ldap://ad-prod01.myco.net:389',
bindDN: 'CN=myapp\, adserver01 (SA),OU=Service Accounts,OU=Users and Groups,DC=myco,DC=net',
bindCredentials: 'password12345',
searchBase: 'DC=myco,DC=net',
searchFilter: '(samaccountname={{username}})'
}
// server: {
// url: 'ldap://ldap.forumsys.com',
// bindDN: 'cn=read-only-admin,dc=example,dc=com',
// bindCredentials: 'password',
// searchBase: 'dc=example,dc=com',
// searchFilter: '(uid={{username}})'
// }
};
var app = express();
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
passport.use(new LdapStrategy(OPTS));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(passport.initialize());
app.post('/auth', passport.authenticate('ldapauth', {session: false}), function(req, res) {
res.send({status: 'ok'});
});
app.get('/login', function(req, res){
res.render('login', {
title: 'Portal - Login'
});
});
app.listen(8443);
答案 0 :(得分:0)
有时发布问题会使大脑点击...
更改:
bindDN: 'CN=myapp\, adserver01 (SA),OU=Service Accounts,OU=Users and Groups,DC=myco,DC=net',
至:
bindDN: 'CN=myapp\\, adserver01 (SA),OU=Service Accounts,OU=Users and Groups,DC=myco,DC=net',
您需要用另一个反斜杠注释反斜杠。...SMH!