使用 NodeJS、Express 和 Passport-ldapauth 进行 LDAP 身份验证

2024-05-27

我在使用标题中提到的工具/应用程序对 Active Directory 服务器进行身份验证时遇到问题。

我正在使用测试AD环境发现here http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/以下是相关的代码片段,如果有人有任何建议,我将非常感激。

目前,我收到的错误是“无效的用户名/密码”。我不确定这是 bindDn 帐户/密码还是用户在表单中输入的帐户/密码。根据 Passport-ldapauth 项目,它是:

invalidCredentials flash message for InvalidCredentialsError
NoSuchObjectError, and 
/no such user/i LDAP errors (default: 'Invalid     username/password')

提前致谢。

客户端 - auth.service.js

...

login: function(user, callback) {
var cb = callback || angular.noop;
var deferred = $q.defer();

$http.post('/auth/ldap', {
  email: user.email,
  password: user.password
}).
success(function(data) {
  $cookieStore.put('token', data.token);
  currentUser = User.get();
  deferred.resolve(data);
  return cb();
}).
error(function(err) {
  this.logout();
  deferred.reject(err);
  return cb(err);
}.bind(this));

return deferred.promise;
},

...

服务器索引.js

'use strict';

var express = require('express');
var passport = require('passport');
var auth = require('../auth.service');

var router = express.Router();

router.post('/', function(req, res, next) {
  passport.authenticate('ldapauth', function (err, user, info) {
    var error = err || info;
    if (error) return res.json(401, error);
    if (!user) return res.json(404, {message: 'Something went wrong, please try again.'});

    var token = auth.signToken(user._id, user.role);
    res.json({token: token});
  })(req, res, next)
});

module.exports = router;

服务器 Passport.js

var passport = require('passport');
var LdapStrategy = require('passport-ldapauth').Strategy;

exports.setup = function (User, config) {
  passport.use(new LdapStrategy({
      usernameField: 'email',
      passwordField: 'password',
      server: {
        url: 'ldap://ldap.forumsys.com:389',
        bindDn: "cn=read-only-admin,dc=example,dc=com",
        bindCredentials: "password",
        searchBase: 'ou=mathematicians,dc=example,dc=com',
        searchFilter: 'uid={{username}}'
      }
    },
    function (user, done) {  
      return done(null, user);
    }
  ));
};

问题在于ou=mathematicians在搜索库中。该网页的评论中提到了以下内容:

您看到的问题是由于“uid=riemann”是“ou=mathematicians”的成员,但并不位于该 ou 下。他在 ou 中的成员身份是通过“ou=mathematicians”上的唯一成员属性建立的。

这应该有效(即使尝试过ldapauth-fork which passport-ldapauth uses):

var opts = {
  server: {
    "url": "ldap://ldap.forumsys.com:389",
    "adminDn": "cn=read-only-admin,dc=example,dc=com",
    "adminPassword": "password",
    "searchBase": "dc=example,dc=com",
    "searchFilter": "(uid={{username}})",
  }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 NodeJS、Express 和 Passport-ldapauth 进行 LDAP 身份验证 的相关文章

随机推荐

  • WCF 数据服务错误处理

    我创建了一个带有服务操作的WCF数据服务 我想生成一种业务异常 我尝试生成WebFaultException但我不知道当服务操作抛出此错误时如何在客户端捕获此错误 这是我模拟异常的服务操作 WebGet public void Genera
  • void_t 在 Visual Studio 2015 上失败

    我不明白为什么 Visual Studio 2015 的以下测试总是失败 static assert 触发器 include
  • 具有多个页面的 UITableViewController 和 ContentViewController 之间的交换日期

    我正在开发一个应用程序 在该应用程序中 我需要通过单击 tableviewcontroller 中的 tableview 单元格 它是初始视图控制器 将一组值传递到具有页面卷曲转换的 contentview 视图控制器 每个页面都有一个文本
  • 自定义 UITabBar 背景图像在 iOS 5 及更高版本中不起作用

    我有一段简单的代码 可以在 tabBar 上放置背景图像 UIImageView imageView UIImageView alloc initWithImage UIImage imageNamed tabBG png self tab
  • ckeditor 数据未通过 jQuery 验证进行验证

    我知道有很多关于此的问题 但我无法让它在我的一生中发挥作用 我尝试了几种解决方案 包括this http devlog waltercruz com usando ckeditor e jquery validate juntos 第二个答
  • JavaScript CRC32

    我正在寻找一个modernCRC32 的 JavaScript 实现 本次实施 https stackoverflow com questions 8353134 javascript crc32 function and php crc3
  • Eclipse 优化导入以包含静态成员和方法

    长期使用 eclipse 和 Java 我在 Eclipse 中发现的一个问题是 似乎没有一种简单的方法来导入静态成员和方法 即 jUnitfail 方法来自org junit Assert 我每天创建几个类 然后手动添加 import s
  • Lombok @Builder 和 JPA 默认构造函数

    我将 Lombok 项目与 Spring Data JPA 一起使用 有什么办法可以连接龙目岛 Builder使用 JPA 默认构造函数 Code Entity Builder class Person Id GeneratedValue
  • 如何求真实数据的概率分布和参数? (Python 3)

    我有一个数据集来自sklearn我绘制了分布load diabetes target数据 即回归值load diabetes data用于预测 我使用它是因为它的回归变量 属性数量最少sklearn datasets 使用Python 3
  • 检测iOS设备类型

    在我的应用程序 用 Objective C 编写 中 如何检测设备是 iPhone iPad 还是 iPhone5 if UIDevice currentDevice userInterfaceIdiom UIUserInterfaceId
  • 如何通过Java swing执行cmd命令

    我有一个文件要打印 我想通过 java swing 向他发送自定义水印 我有 2 个文件 NewJFrame java 和 Test java package test import java io IOException import j
  • C++ 实现堆中值函数

    根据此处找到的答案 https stackoverflow com a 10931091 1311773 https stackoverflow com a 10931091 1311773 我正在尝试实现两个堆 以便我可以计算运行中位数
  • 如何制作.Net或JVM语言?

    我看到了 NET 和 JVM 的所有这些新语言 一个人如何开始制作一个 我找不到关于 JVM 或 MSIL 规范的任何好的文档 Edit 我已经知道如何解析 我更感兴趣的是如何有这么多人基于这些平台创建新语言 你有点幸运 为 NET 开发的
  • 电话呼叫的 URL 方案

    就像 mailto URL 前缀启动用户的默认邮件程序并使用指定地址启动新电子邮件一样 是否有类似的 URL 方案可以发起电话呼叫 也许是 电话 呼叫 或 啜饮 顺便说一句 我的目标是使用 Cisco CUPS 的平台 因此可能有一种特定于
  • 字符串在哪些地方比 StringBuilder 更有用?

    关于字符串和字符串生成器之间的差异已经提出了很多问题 大多数人认为字符串生成器比字符串更快 我很想知道字符串生成器是否太好了 那么为什么字符串会存在呢 此外 有人可以给我一个例子 其中字符串比字符串生成器更有用吗 StringBuilder
  • 如何使用 linq to sql 一次更新多行?

    Table id userid friendid name status 1 1 2 venkat false 2 1 3 sai true 3 1 4 arun false 4 1 5 arjun false 如果用户发送userid 1
  • 从matrix4()获取翻译

    对于大多数 Three js 开发人员来说 这可能看起来像是一个虚拟问题 但是如何从转换矩阵中提取翻译呢 实际上 我手动提取它指向 矩阵数组位置 12 13 14 提前致谢 如果要从矩阵中提取平移分量 请使用以下模式 var vec new
  • WildFly 8.2.0、使用反向代理的 JBossWS 生成不正确的 httpssoap:address

    我的设置是 https 上的 apache 服务器 充当在端口 8080 上响应的 WildFly 8 2 0 的反向代理 Web 服务是通过注释使用自下而上的方法创建的 生成的soap address 没有正确的协议或端口 我已修改sta
  • 添加到 HashMap 中的列表的快捷方式

    我经常需要获取一个对象列表 并根据对象中包含的值将它们分组到一个 Map 中 例如 按国家 地区获取用户和组列表 我的代码通常如下所示 Map
  • 使用 NodeJS、Express 和 Passport-ldapauth 进行 LDAP 身份验证

    我在使用标题中提到的工具 应用程序对 Active Directory 服务器进行身份验证时遇到问题 我正在使用测试AD环境发现here http www forumsys com tutorials integration how to