【发布时间】:2019-03-04 04:45:32
【问题描述】:
我是 Nodejs 的初学者,我正在尝试在我的 Web 应用程序中包含 Active Directory 身份验证。另外,我正在尝试检查用户是否属于某个组,然后才允许他使用它。 我正在尝试关注this article,但它对我不起作用:
我使用了以下代码:
var passport = require('passport')
var ActiveDirectoryStrategy = require('passport-activedirectory')
var ActiveDirectory = require('activedirectory')
var ad = new ActiveDirectory({
url: 'ldap://my.domain.com',
baseDN: 'DC=my,DC=domain,DC=com',
username: 'readuser@my.domain.com',
password: 'readuserspassword'
})
passport.use(new ActiveDirectoryStrategy({
integrated: false,
ldap: ad
}, function (profile, ad, done) {
ad.isUserMemberOf(profile._json.dn, 'AccessGroup', function (err, isMember)
{
if (err) return done(err)
return done(null, profile)
})
}))
作为中间件,我使用了以下代码:
var opts = { failWithError: true }
app.post('/login', passport.authenticate('ActiveDirectory', opts),
function(req, res) {
res.json(req.user)
}, function (err) {
res.status(401).send('Not Authenticated')
})
但是当我尝试打开“登录”页面时收到此错误:
AuthenticationError: 未经授权 完全失败(D:\Java Script\NodeJs\Printer\node_modules\passport\lib\middleware\authenticate.js:172:21) 尝试(D:\Java Script\NodeJs\Printer\node_modules\passport\lib\middleware\authenticate.js:180:28) 在 Strategy.strategy.fail (D:\Java Script\NodeJs\Printer\node_modules\passport\lib\middleware\authenticate.js:297:9) 在 D:\Java Script\NodeJs\Printer\node_modules\passport-activedirectory\index.js:143:22 在 onFind (D:\Java Script\NodeJs\Printer\node_modules\activedirectory\lib\activedirectory.js:1334:21) 在 onSearchEnd (D:\Java Script\NodeJs\Printer\node_modules\activedirectory\lib\activedirectory.js:506:21) 在 EventEmitter。 (D:\Java Script\NodeJs\Printer\node_modules\activedirectory\lib\activedirectory.js:540:7) 在 emitOne (events.js:116:13) 在 EventEmitter.emit (events.js:211:7) 在 sendResult (D:\Java Script\NodeJs\Printer\node_modules\ldapjs\lib\client\client.js:1389:22) 在 messageCallback (D:\Java Script\NodeJs\Printer\node_modules\ldapjs\lib\client\client.js:1421:16) 在 Parser.onMessage (D:\Java Script\NodeJs\Printer\node_modules\ldapjs\lib\client\client.js:1089:14) 在 emitOne (events.js:116:13) 在 Parser.emit (events.js:211:7) 在 Parser.write (D:\Java Script\NodeJs\Printer\node_modules\ldapjs\lib\messages\parser.js:111:8) 最后(D:\Java Script\NodeJs\Printer\node_modules\ldapjs\lib\messages\parser.js:66:19)
非常感谢任何帮助。 谢谢
【问题讨论】:
标签: node.js active-directory-group