LDAP 查询 - 在结果中包含查询过滤器

LDAP query - Include query filter on result

我正在执行如下所示的 LDAP 查询:

(&(|(objectClass=ExternalAccount)(objectClass=Person))(|(uid=SOMETHING)))

结果是这样的

cn=something,ou=something,o=something,dc=something,dc=something

我希望在与结果关联的查询中设置 uid 的值。 像这样的东西是理想的:

  uid=SOMETHING,cn=something,ou=something,o=something,dc=something,dc=something

我之所以需要这个是因为在这种情况下我需要做类似

的事情
(&(|(objectClass=ExternalAccount)(objectClass=Person))(|(uid=SOMETHING1)(uid=SOMETHING2)))

我希望将结果与其匹配的参数相关联,如下所示:

uid=SOMETHING1,cn=value1,ou=value1,o=value1,dc=value1,dc=value1
uid=SOMETHING2,cn=value2,ou=value2,o=value2,dc=value2,dc=value2

这可能吗?如果是这样,我该如何实现?

我在实际代码中使用 javax.naming.directory 库。 要使用 gui 测试查询,我正在使用 LDAPAdmin.

这是一个代码示例,用于单个 uid:

        fun getFromLDAP(uid: String): String? {
        return InitialDirContext(connectionsProperties).let { context ->
        val searchControls =
            SearchControls().also { controls -> controls.searchScope = SearchControls.SUBTREE_SCOPE }
        val searchString = "(&(|(objectClass=ExternAccount)(objectClass=Person))(uid=$uid))"

        context.search(config.searchBase, searchString, searchControls)
            .toList()
            .first()
            .also { context.close() }
    }
}

期望的结果是 attributes.all 调用此函数的结果也包含 de uid,这现在没有发生。

用于连接到 LDAP 的用户权限存在问题。