【发布时间】:2021-03-19 18:27:43
【问题描述】:
我正在执行如下所示的 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,但现在不会发生。
【问题讨论】:
-
您是如何提交查询的?您正在使用哪些工具? Active Directory 支持发出查询诊断,但没有达到您期望的程度......
-
我正在使用 javax 命名库。将使用该信息更新问题
-
您只需要在要返回的属性列表中提及“uid”即可。你的代码在哪里?
-
嗨。将使用代码更新问题。
标签: java kotlin active-directory ldap ldap-query