【发布时间】:2019-09-05 19:57:27
【问题描述】:
我想获得一些关于如何在nestJS 中进行LDAP 登录和身份验证的帮助。我正在互联网上搜索示例,但从未找到。因为我是 javascript 和 nestJS 的新手,所以我无法理解节点 js,所以我无法取得任何进展。如果有你知道的例子,可以请你分享给我吗?
感谢您的帮助!
【问题讨论】:
标签: node.js typescript ldap nestjs
我想获得一些关于如何在nestJS 中进行LDAP 登录和身份验证的帮助。我正在互联网上搜索示例,但从未找到。因为我是 javascript 和 nestJS 的新手,所以我无法理解节点 js,所以我无法取得任何进展。如果有你知道的例子,可以请你分享给我吗?
感谢您的帮助!
【问题讨论】:
标签: node.js typescript ldap nestjs
要使用 LDAP 进行身份验证,您必须拥有 LDAP 管理员用户“baseDN”的详细信息和密码。 请参考下面的代码,您可以使用它连接到 LDAP 并对用户进行身份验证。
var express = require('express');
var bodyParser = require('body-parser');
var cors = require('cors');
var passport = require('passport');
var ldapstrategy = require('passport-ldapauth');
// connect to LDAP server
var OPTS = {
server: {
url: "LDAP://ldap.forumsys.com:389", //LDAP URL
bindDN: "CN=adminAccount,DC=forumsys", //Admin BaseDN details
bindCredentials: AdminCredentials,
searchBase: "dc=forumsys", //search base
searchFilter: "(|(sAMAccountName={{username}})(employeeID={{username}}))",
timeLimit: 3000,
}
}
passport.use(new ldapstrategy(OPTS));
// instantiate the server
var app = express()
// parse the requested data automatically
app.use(bodyParser.json())
// allow cross-origin resource sharing
app.use(cors())
// inject LDAP connection to express server
app.use(passport.initialize())
// listen to port defined
const port = 8085 //process.env.PORT || 8085
app.listen(port, () => {
console.log(`Listening on port ${port}`)
})
app.post('/login', (req, res, next) => {
passport.authenticate('ldapauth', {session: false},(err, user, info) => {
console.log(user)
var error = err || info
if (error){
return res.send({
status: 500,
data: error
})
}
if (!user) {
return res.send({
status: 404,
data: "User Not Found"
})
}
else {
return res.send({
status: 200,
data: user
})
}
})(req, res, next)
})
【讨论】: