【问题标题】:LDAP Protocol and Connection in ReactJSReactJS 中的 LDAP 协议和连接
【发布时间】:2020-05-20 14:32:58
【问题描述】:

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

【问题讨论】:

    标签: reactjs active-directory ldap electron ldapjs


    【解决方案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 个字符,那么它很有可能会匹配到大量的组,并且将它们全部显示在屏幕上不会起到任何有用的作用。所以使用它来将结果限制在可管理的范围内。

    【讨论】:

    • 我尝试在我的项目中实现 activedirectory2,但有这个错误有什么想法吗? client.js:1039 Uncaught TypeError: net.connect is not a function at connectSocket (client.js:1039) at Backoff. (client.js:1203) at Backoff.emit (events.js:152) at Backoff .push../node_modules/backoff/lib/backoff.js.Backoff.onBackoff_ (backoff.js:53)
    • @AustinS 这取决于您的代码是什么。你最好为此创建一个新问题,显示你的代码。
    • 我在这里创建了一个新问题:stackoverflow.com/questions/61961896/…
    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多