- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在从事一个项目,在该项目中,我试图根据学校的 LDAP 服务器对用户进行身份验证。为此,我尝试使用 NPM 包 passport-ldapauth
。
提前声明:我 100% 确定所提供的 username
和 password
已在 LDAP 服务器上注册并有效。
下面是我目前尝试使用的代码,用于在我的 NodeJS 应用程序中针对本地 LDAP 服务器进行身份验证:
var LDAPStrategy = require('passport-ldapauth').Strategy;
passport.serializeUser(function (user, done) {
done(null, user);
});
passport.deserializeUser(function (id, done) {
done(null, id);
});
passport.use('ldap', new LDAPStrategy({
usernameField: 'username',
passwordField: 'password',
server: {
url: 'ldap://server-ip-address:389',
bindDN: 'cn=read-only-user,dc=foo,dc=bar',
bindCredentials: 'read-only-user-pw',
searchBase: 'dc=foo,dc=bar',
searchFilter: '(sAMAccountName={{username}})'
}
}));
到目前为止,我为 bindDN
和 searchBase
尝试了很多不同的选项。我还有完整的 bindDN,看起来像这样:
bindDN: CN=read-only-user,OU=LDAP,OU=AdFoo,OU=Userfoo,OU=FOO,DC=foo,DC=bar
和一个像这样的searchBase
:
searchBase: 'ou=Foobar,ou=Anotherfoobar,ou=FOO,dc=foo,dc=bar'
不幸的是,虽然似乎没有任何效果。我已经检查了这些参数(username, password
)是否在请求正文中给出,它们是。
router.post('/', (req, res, next) => {
// Prints the values that the frontend passes in the request body
console.log(req.body.username);
console.log(req.body.password);
next();
});
router.post('/', bodyParseArray, passport.authenticate('ldap', (err, user, info) => {
console.log('Error: ', err); // prints: null
console.log('User: ', user); // prints: false
console.log('Info: ', info); // prints: { message: 'Invalid username/password' }
}));
我也尝试使用终端进行 ldapsearch
。这个 ldapsearch
对我来说如下所示:
MBP-Stoger:~ Stephan$ ldapsearch -H ldap://server-ip-address:389
-D cn=read-only-user,ou=LDAP,ou=AdFoo,ou=Userfoo,ou=FOO,dc=foo,dc=bar
-w read-only-user-pw -b ou=Foobar,ou=Anotherfoobar,ou=FOO,dc=foo,dc=bar
"sAMAccountName=example.user"
# extended LDIF
#
# LDAPv3
# base <ou=Foobar,ou=Anotherfoobar,ou=FOO,dc=foo,dc=bar> with scope subtree
# filter: sAMAccountName=example.user
# requesting: ALL
#
# search result
search: 2
result: 0 Success
# numResponses: 1
据我所知,ldapsearch
似乎返回了预期的结果,但 NodeJS 模块似乎对它接收的任何输入都有一些问题。最后我认为也许 username/password
值没有传递到模块中,尽管在模块的 .prototype 中为两者执行了
函数显示值已正确传递到模块本身,因此我想问题一定出在我的配置中,尽管我不太了解模块和包装本身,无法弄清楚问题自己。console.log()
.authenticate
有人可以帮助我弄清楚为什么我的 NodeJS 应用程序无法成功验证用户身份吗?
最后,一些规范信息,如果有必要的话:
OS: MacOSX HighSierra (10.13.3)
Node: v8.6.0
passport: v0.4.0
passport-ldapauth: v2.0.0
最佳答案
我遇到了同样的问题,问题出在组织单位 (OU) 上。您需要在 bindDN 中提及 ou,ou=Users 并且如果只读用户是另一个 ou 的一部分,我们也需要提及。所以这段代码需要为您工作。
server: {
url: 'ldap://server-ip-address:389',
bindDN: 'cn=read-only-user,ou=Users,ou=user-other-ou,dc=foo,dc=bar',
bindCredentials: 'read-only-user-pw',
searchBase: 'dc=foo,dc=bar',
searchFilter: '(sAMAccountName={{username}})'
}
关于node.js - NodeJS passport-ldapauth 总是返回 'Invalid Username/Password',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763538/
我在 Controller 中有此功能,但我无法重置密码,因为我想将字符长度更改为 5 位数字。 public function postReset(Request $request) { $th
我正在学习使用 maven password encryption能力,我想知道如何选择参数 .有两件事我不明白: 1) mvn --encrypt-master-password foobar总会给
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 这个问题似乎不是关于 a specific programming problem,
我想知道其他电子商务/行业网站上“忘记密码”流程的“标准”使用率是多少?目前,没有多少人会访问我网站上的“忘记密码”链接,但这主要是因为大多数人没有密码。我正在安装新的登录名(这将鼓励人们创建密码),
从存储库中提取源代码需要我的密码。 SourceTree 默认记住此密码。我不希望 SourceTree 记住我的密码。我每次都必须禁用此功能! 如何禁用此默认行为?谢谢! 最佳答案 我在 Mac 上
这个问题已经有答案了: When to use single quotes, double quotes, and backticks in MySQL (13 个回答) 已关闭 5 年前。 Erro
我正在为我的 iOS 应用程序使用 Firebase 身份验证服务。我想通过电子邮件或谷歌登录提供商登录应用程序。我申请了firebase instractions . 我可以使用电子邮件和密码登录。
我正在尝试了解角色密码在 Postgres 中的运作方式。 https://www.postgresql.org/docs/current/static/sql-createrole.html表示加密
为什么“确认密码和密码相同”部分不起作用?意思是,使用“getElementById”来处理密码和确认密码的部分。每个部分都有效,但特定部分除外。它不会在文本字段周围显示红色框。谁能帮我吗?
我遇到了 Flutter 的 TextInputType 没有密码类型的问题: /// All possible enum values. static const List values = con
我正在尝试使用 Azure 应用服务创建应用程序。 但是,它显示上述错误:无法识别的参数: 我使用的命令是 --> az ad app create --available-to-other-tena
我正在尝试使用 Azure 应用服务创建应用程序。 但是,它显示上述错误:无法识别的参数: 我使用的命令是 --> az ad app create --available-to-other-tena
我有(数千个)包含各种(数十亿)行的 csv 文件,例如: 组合.csv example0@domain.tld:passw0rd ex.a.m-pl_e1@domain.tld;p@££w0r46&
在我的 Spring 3 MVC 应用程序中,用户需要保存密码,如果他们也能够在保存时确认密码,那将是一个不错的功能。 在 bean 中,我使用基于注释的验证。是否有注释 validator 可用于执
我在 pgsql 中创建了一个没有密码的新用户。但是当我尝试为这个用户创建一个数据库时,它提示输入密码 >createuser -d -S -R -U postgres test1 Password:
我创建了 Form 这种形式的小部件有多个 TextFormFeild 我创建了自定义 BoxFeild .我面临与 相关的问题auto-validation 来自表单小部件。无法验证确认密码中的密码
在 SQL Server 2008 R2 标准版上,每当我尝试通过报表管理器更新数据源凭据时,我都无法保存更改,因为它会报告消息 "The password is not valid. Please
我有一个用 JAVA 编写并部署在 Wildfly 8.2 上的小型 REST 应用程序。当我尝试使用 javax 安全库登录时,出现错误 FailedLoginException: Password
验证错误:子“密码”失败,因为运行测试时显示[“密码”是必需的]错误 我使用 hapijs v17.2.3 和 mongodb 作为后端。我正在尝试使用 lab 和 code 执行单元测试。这是我的t
我使用 visual studio 2010 创建了一个登录表单,其中包含用户名的输入文本和 userpass 的密码类型输入。我有最新的 chrome 版本 59.0.3071.115(官方构建)(
我是一名优秀的程序员,十分优秀!