gpt4 book ai didi

java - 检查(使用 openDS SDK)成员属于 openDS LDAP 中的哪个组

转载 作者:行者123 更新时间:2023-12-02 07:45:56 24 4
gpt4 key购买 nike

两天前我刚刚收到此要求,这是我第一次使用 LDAP(openDS)。事实上,我用于研发的时间非常有限。我已经尽可能详细地阅读了 openDS 的开发人员指南和 SDK Api。

基本上我有一个非常简单的要求。我将获得一个“用户 ID”,并使用它来验证该用户是否属于 LDAP 中的任何可用组(由我定义)。

我已经成功地完成了这个代码片段:

public void getGroup(String userId) {
Connection connection = new LDAPConnection().getConnection();
try {
// No explicit bind yet so we remain anonymous for now.
SearchResultEntry entry;
entry = connection.searchSingleEntry("ou=Groups,dc=example,dc=com",
SearchScope.WHOLE_SUBTREE,
"(uniqueMember=" + "uid="+userId+", ou=People, dc=example,dc=com" + ")",
"cn");
String cn = entry.getAttribute("cn").firstValueAsString();
System.out.println("Hello, " + cn + "!");
} catch (ErrorResultException e) {
e.getMessage();
} finally {
closeConnection(connection);
}
}

现在,如果我收到搜索结果,则该用户属于某个组,否则不属于该组。现在我不确定这是否是实现这一目标的方法。我也看了类似“isMemberOf”的东西,但我不确定 API 是否提供了这种方法或者是其他方法。

非常感谢任何帮助。谢谢。

最佳答案

LDAP 客户端应使用以下过滤器将搜索请求传输到服务器:

'(isMemberOf=<the distinguished name of the entry>)'

以及适当的基础对象、过滤器和请求的属性。这假设服务器具有 isMemberOf虚拟属性已启用。

如果只有相对专有名称组件可用,则 LDAP 客户端必须搜索专有名称 - 在本例中使用 (<attribute-type>=<userid>>) (例如 '(uid=user.1)' )和 1.1对于请求属性,这将导致不返回任何属性。始终为每个匹配的条目返回专有名称。然后使用 isMemberOf 构建过滤器然后再次搜索。

另请参阅

关于java - 检查(使用 openDS SDK)成员属于 openDS LDAP 中的哪个组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com