【问题标题】:LDAP authentication in nestJSnestJS 中的 LDAP 身份验证
【发布时间】:2019-09-05 19:57:27
【问题描述】:

我想获得一些关于如何在nestJS 中进行LDAP 登录和身份验证的帮助。我正在互联网上搜索示例,但从未找到。因为我是 javascript 和 nestJS 的新手,所以我无法理解节点 js,所以我无法取得任何进展。如果有你知道的例子,可以请你分享给我吗?

感谢您的帮助!

【问题讨论】:

    标签: node.js typescript ldap nestjs


    【解决方案1】:

    要使用 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)
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-12
      • 2021-01-13
      • 2016-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 2011-09-23
      相关资源
      最近更新 更多