ldap - 使用 ldap 进行身份验证,无需用户密码
问题描述
我正在尝试使用 ldap js 创建登录身份验证。我设置了所有凭据,一切正常,但问题是我可以只用他的 Uid(用户 id 又名用户名)绑定用户,它没有要求输入密码,我不知道如何解决这个问题必须要求提供 Uid 和 userPAssword 才能连接
我尝试使用包括 userPassword 在内的相同凭据进行连接,但它对我不起作用
ldapConfig.js 在这个文件中我设置了所有的 ldap 配置
'url': 'ldap://*************',
'port': '***',
'timeout': '',
'connectTimeout': '',
'secret': '**********',
'reconnect': true,
'filtre': '(&(ObjectClass=*******)',
'search_dn': 'ou=******,dc=****,dc=****',
'domain': 'cn=******,dc=****,dc=****'
这个文件中的 login.js 我试图连接到 ldap 服务器,它工作得很好,然后我想通过 uid 获取用户
const server = ldapConfig.url
const ldapDomain = ldapConfig.domain
const password = ldapConfig.secret
const searchDomain = ldapConfig.search_dn
const client = ldap.createClient({
url: server
})
client.bind(ldapDomain, password, err => {
assert.ifError(err)
})
const opts = {
scope: 'sub',
filter: ldapConfig.filtre + `(mail=${request.body.mail}))`
}
client.search(searchDomain, opts, (err, res) => {
assert.ifError(err)
res.on('searchEntry', entry => {
console.log(entry.object)
} )
我希望很清楚。谢谢
解决方案
未经身份验证的绑定(当您提供用户 ID 和空密码时看似成功的绑定)可能会在您的目录中启用。如果您使用 OpenLDAP,如问题标签所示,请检查 slapd.conf 是否允许 bind_anon_cred。
除非特别需要未经身份验证的绑定,否则我会在目录服务器上禁用它。在需要未经身份验证的绑定的极少数情况下,所有针对目录进行身份验证的应用程序都需要在尝试绑定之前验证用户输入——也就是说,验证输入的用户名和密码值是否不为空。
推荐阅读
- yii - Yii 日志显示 wp-login.php 异常,但是,我没有 WordPress
- dart - 如何格式化内插字符串
- azure-devops - 发布管理:如何保障?
- angular - Angular 6 路由
- jenkins - “/var/lib/jenkins/.ssh/id_rsa”不存在
- amazon-web-services - 如何在 EKS 上获取 k8s 主日志?
- php - Joomla 组件发布/取消发布选项在前端不起作用
- c - C、struct指针的赋值改变了赋值右边的内容
- e-commerce - NetSuite Webstore 相关项目
- gridview - Yii2:kartik GridView - 如果显示来自 1:n 关系的字段,则过滤器不起作用