首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查(使用openDS SDK)成员属于openDS LDAP中的哪个组

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

Stack Overflow用户
提问于 2012-06-03 09:06:54
回答 2查看 871关注 0票数 0

我刚在两天前就得到了这个需求,我第一次使用了LDAP(openDS)。事实上,我的研发时间非常有限,我已经尽可能多地阅读了开发者指南和openDS的SDK。

基本上,我有一个非常简单的要求。我将被提供一个' user -id‘,并且使用它我必须验证这个用户是否属于LDAP中的任何可用组(由我定义)。

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

代码语言:javascript
复制
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提供的是这样的方法还是其他的方法。

任何帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-03 16:02:54

LDAP客户端应该使用以下过滤器向服务器发送搜索请求:

代码语言:javascript
复制
'(isMemberOf=<the distinguished name of the entry>)'

以及适当的基本对象、筛选器和请求的属性。这假设服务器启用了isMemberOf虚拟属性。

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

另请参阅

票数 1
EN

Stack Overflow用户

发布于 2012-06-04 07:27:54

上面的搜索确实返回了集团的cn。如果您获得了一个userid,并且需要检查用户是否在一个众所周知的组中,那么过滤器"(isMemberOf= )

如果您搜索(&(uid=))(isMemberOf=,即该组的一部分)。

致以亲切的问候,

路多维奇。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10869094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档