1

我目前正在尝试在电子/Reactjs 中构建 LDAP 连接器的概念证明。我构建此连接器的两个主要目标是能够检查用户是否输入了正确的凭据和 LDAP 地址,然后他们会收到连接成功的消息。我的第二个目标是能够对更改进行组过滤,例如,如果用户开始输入组名,它将尝试自动填充/显示具有该前缀/名称的组。我研究了两个 npm 包(LDAPjs 和 LDAPauth),但我不确定这些包是否能满足我的需求,因为我没有尝试进行任何用户身份验证。非常感谢任何关于从哪里开始的提示或指导!

4

1 回答 1

1

你可以试试activedirectory2包。它是 ldapjs 的包装器。AD 有一些其他 LDAP 目录没有的怪癖,因此它会为您处理其中的一些怪癖。您可以使用其findGroups()功能按部分名称查找组。例如:

var opts = {
    filter: "cn=*admin*",
    sizeLimit: 20
}
ad.findGroups(opts, function(err, groups) {
    //do stuff with groups
}

这将查找名称中带有“admin”的前 20 个组。请注意,像这样进行“包含”类型搜索会使 AD 无法使用任何索引,因此它必须查看域中的每个组以找到匹配项。如果可能,最好进行“开始于”类型的搜索,例如"cn=admin*",这样会更快完成。

如果这些组是分发列表,您可能希望使用displayName( "displayName=admin*") 进行搜索。大多数环境设置的displayName名称与对象的名称 ( cn) 相同,但您的环境可能并非如此。对于通讯组列表,这displayName是在 Outlook 等中向用户显示的内容。

您可以将 调整sizeLimit为您想要显示的任何内容。如果用户只输入 2 或 3 个字符,那么它很有可能会匹配到大量的组,并且将它们全部显示在屏幕上不会起到任何有用的作用。因此,使用它来将结果限制在可管理的范围内。

于 2020-05-20T21:41:19.300 回答