Passport-ldapauth-未经授权的消息

时间:2018-07-23 22:00:47

标签: node.js passport.js

几天来我一直在努力使它工作...

我创建了一个完全独立的节点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);

1 个答案:

答案 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!