问题标签 [ldapjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - LdapJS exop 请求超时
我有一个 LdapJS 服务器,它实现标准操作和扩展操作来检查运行状况:
然后我写了一个简单的客户端脚本来 ping 健康检查服务:
问题是exop
服务器正确接收了 (我可以在其回调中看到日志),但客户端总是记录:ERROR: request timeout (client interrupt)
。
为什么请求没有正确终止?
编辑
我为 exop 写了一个 mocha 测试,它可以工作。似乎问题与运行状况检查脚本中的独立调用有关。
react-native - 使用 React Native 和 Firebase 自定义令牌在 LDAP 服务器上进行身份验证
我正在尝试通过 LDAP 服务器对我的用户(来自我的 RN 应用程序)进行身份验证(我已经在这里找到了一个尝试进行身份验证的用户,并且它有效!)。每次收到用户的凭据(用户名和密码)时,我都可以使用 Firebase 创建一个自定义令牌,并将其保存在 Firebase 实时数据库中。
主要问题是我不知道如何将我的应用程序与 LDAP 服务器连接,我调查并发现我必须安装openLDAP或ldapjs 之类的东西,但我不明白如何进行身份验证我的猜测是:
- 用户登录我的 RN 应用程序
- RN 应用程序将凭据发送到 Firebase
- Firebase 创建自定义令牌(使用 Firebase 函数生成自定义令牌)
- Firebase 将自定义令牌返回给 RN 应用程序
- RN 应用程序将令牌发送到 LDAP 服务器(服务器有预先确定的用户和密码用于测试)
- LDAP 服务器验证令牌,因此,身份验证
- LDAP 服务器向 RN 应用程序返回属性或“未找到”
- RN App 授予/拒绝对应用程序的访问权限
任何帮助或建议都会受到好评,谢谢 :) 抱歉我的英语不好。
javascript - 如何翻译 Powershell -> JavaScript for LDAP (dn -> canonicalName) 转换功能
我发现了一个很棒的函数,它采用有效的 Active Directory LDAP distinctName (DN) 字符串并将其转换为用 PowerShell 编写的格式正确的 canonicalName(不是 CN)字符串。
因为我在 Node.js 中使用 ldapjs 并且需要检索 AD 对象的 canonicalName 属性(使用任何 Node/AD/LDAP 库本机都无法使用该属性,因为所讨论的属性是“构造的”),所以最好我将此函数转换为纯 JavaScript。
我怎么能刺破它?可以在此处找到引用此代码(在下面插入)的原始帖子: https ://gallery.technet.microsoft.com/scriptcenter/Get-CanonicalName-Convert-a2aa82e5
示例输入值:
预期结果:
(提示:结果 JS 函数应该能够处理深度 OU 嵌套的对象!另外我猜测 RegEx 表达式可能有助于很好地处理其中的某些部分,但没有最微弱的线索如何实现它。)
提前向任何可以帮助解决我的问题的人表示最热烈的感谢!
node.js - Active Directory/Ldap 获取 NodeJS 中特定属性的 DataType 或 Syntax
我能够查询活动目录/ldap 以获取用户信息以及自定义属性。但是,我想知道返回的每个属性的基础 DataType/attributeSyntax。另一个问题是,如果它不包含任何值,查询将不会返回属性本身。因此,如果可以获取属性及其各自的 DataType,那么它为我提供了在准备最终输出对象时基于 DataType 设置默认值的灵活性。
例如: 1. 我查询 AD 以查找具有, , ,foo
属性的用户givenName
mail
myCustom1
myCustom2
但可能不包含myCustom2
,因为它不包含 AD 中的值。
- 获取属性的语法
givenName
,mail
,myCustom1
,myCustom2
- 使用上面我可以映射第一个结果并将最终对象准备为
active-directory - PassportJS 错误:当绑定间歇性未完成时,不能对连接执行其他操作
TLDR:passportjs或passport-ldapauth 是否存在竞争条件问题?
我在 nodejs 应用程序中使用该koa-passport
库和passport-ldapauth
策略,旨在针对 AD(Active Directory)对用户进行身份验证。哇,那是一口。
这是我passport.authenticate
从 LDAP 中返回的错误:
BusyError: 00002024: LdapErr: DSID-0C060810, comment: No other operations may be performed on the connection while a bind is outstanding.
这里的问题很明显,有一个未完成的绑定,必须先关闭它,然后我才能进行另一个绑定以验证下一个用户。 然而,解决方案不是,它可能与 LDAP 相关,也可能与 passportjs 相关。我在这里希望为后者找到解决方案。(在等待对此#multiprocessing的响应时,将探索 LDAP 的配置选项)
这是我的代码:
在我们开始之前,要知道ldapConfigs
在应用程序的整个生命周期中所有内容都保持不变,这意味着我在每次查找时都使用相同的 BINDDN 和 PASSWORD。
因此,如标题中所述,此错误间歇性地发生。因此,代码本身通常可以正常工作,并且我能够在大约 95% 的时间内对用户进行身份验证,并且如果它INVALID_AUTHENTICATION
在密码正确时抛出错误,那就是当我BusyError
在日志中获取 the 时。
当我输入虚假的用户名/密码时,这个问题更加突出并且更容易重现,理想情况下应该提示我INVALID_USERNAME_PASSWORD
错误,我大约有 75% 的时间。我得到的另外 25% INVALID_AUTHENTICATION
。
我什至尝试使用ldapsearch
与tmux
. 我使用相同的 binddn 同时在大约 20 个窗格中运行了一个调用,它们都恢复得很好(我应该尝试用更多来运行它吗?100 个?1000 个?)。这就是让我相信问题不在于 LDAP 或 AD 的原因,而更多的是 passportjs。
我得出的结论是,passportJS 可能存在种族条件问题,但我在互联网上找不到任何文献。有没有人遇到过这样的事情?我相信绑定可能没有关闭,因为有时passport.authenticate
可能会在调用回调之前返回?这甚至可能吗?它与我如何使用 async/await 进行编码有关吗?
我的后备方案可能是完全抛弃passportjs,只尝试使用ldapjs。任何想法,意见,建议,讨论将不胜感激
如果需要,这是完整的堆栈跟踪:
javascript - ldapjs-client V0.1.0绑定方法在正常工作几天后抛出UnwillingToPerformError
我在使用 fastify V1.1.1 的 ldapjs-client V0.10.0上遇到了一个奇怪的问题
下面的代码片段可以正常工作几天。突然抛出UnwillingToPerformError。如果我们再次重新启动服务器,它工作正常,几天后错误相同。
node.js - Nodejs ldapjs activedirectory - 在不知道当前密码的情况下重置密码
在Nodejs中如何在不知道当前密码的情况下重置活动目录密码?
我目前使用以下 2 个库。
https://www.npmjs.com/package/activedirectory
如果我知道当前密码,我有以下代码可以完美运行。但如果我不知道当前密码,我也想重置密码。
我试图通过传递一个虚拟的当前密码来使用上面的代码,但得到了以下错误。
javascript - NodeJS - LDAPJS 错误:events.js:160 throw er; // 未处理的“错误”事件
我是nodejs的新手,在执行我的节点文件时遇到了这个问题。我在 centos 7 上。当我尝试使用 LDAPJS 连接到 LDAP 时。当 LDAP 可用但它无法连接到服务器时它工作正常,它显示这个奇怪的错误:
events.js:160 抛出 er;// 未处理的“错误”事件 ^
错误:在 TCPConnectWrap.afterConnect [as oncomplete] (net.js: 1099:14)
我想捕捉这个错误并显示正确的错误消息。
我试过用这个:
但这并没有帮助。
我的 package.json 文件是:
这是 index.js 文件:
javascript - 在 Angular 客户端应用程序上渲染图像字节流
我有一个代理来自 Active Directory LDAP 服务器的请求的 NodeJS / Express RESTful API。我这样做是因为 LDAP 查询往往很慢。我使用 RESTful API 间歇性地缓存和刷新数据。我最近尝试添加缩略图。在研究中,我使用 ldapjs 的库似乎正在将本机 ldap 字节数组转换为字符串。
这看起来像的例子:
\ufffd\ufffd\ufffd\ufffd\u0000\u0010JFIF\u0000\u0001\u0000\u0001\u0000x\u0000x\u0000\u0000\ufffd\ufffd\u0000\u001fLEAD Technologies Inc. V1.01\u0000000ufffd\ufffd\u \ufffd\u0000\u0005\u0005\u0005\b\
由于这个事实,图像无法在 Angular 客户端应用程序上正确呈现。所以根据我的研究,这里有一些纠正这个问题的尝试:
使用不同的方法将字符串转换为字节数组(参见代码示例)
修改 ldapjs 库,将数据渲染为 RESTFUL 中的字节数组,如下所示,然后将字节流绑定到角度页面:
html绑定:
控制器:
和
控制器的替代版本:
另一个替代版本的控制器:
我希望在角度页面上有一个渲染图像,但我得到的只是未渲染的占位符。
这是我正在使用的库的版本
- 角 - 8.0.3
- NodeJS - 10.15.0
- ldapjs - 1.0.2
我确定我错过了一些东西,我只是不确定它是什么。任何援助将不胜感激。
active-directory - 使用 Javascript 将 objectGuid 转换为 UUID 字符串
我一直在寻找一种将 ObjectGuid 从 Active Directory 中转换出来的方法,它是一种特殊类型,可以转换为字符串,这看起来很奇怪,使用诸如 ldapjs 之类的库,或者使用 ping federate 将其添加为声明。这方面的一个例子如下:
下面是一个来自 ldapjs 的输出示例。当您将其添加为声明时,ping 联邦也会出现同样的情况。
但是,这等效于有效的 UUID。
我想要做的是将这个奇怪的值转换为正确的 UUID。我已经搜索并测试了一些不同的帖子和网站,但我还没有找到有效的解决方案。
以下是我研究的一些:
如果有人对此有解决方案,将不胜感激。