【问题标题】:Retrieving a JNDI dn with its proper case检索具有正确大小写的 JNDI dn
【发布时间】:2015-12-14 20:24:22
【问题描述】:

我想检索存储在 LDAP 服务器中的用户 DN,保持原始字符大小写。例如,假设我的服务器中的 DN 是“cn=Bob, o=MyOrg”。我想使用“cn=bob, o=myorg”查询服务器并检索原始的“cn=Bob, o=MyOrg”,结果。

DirContext.getAttributes(dn) 方法可以返回一组属性,但这不包括 DN 本身。另一方面,DirContext.search() 使用 getNameInNamespace() 返回包含此信息的 SearchResult。不幸的是,搜索表达式似乎不允许在 DN 上进行搜索,这就是我所拥有的。

我知道我可以通过首先使用 getAttributes() 检索唯一属性,然后在 search() 中使用此属性值来实现此目的。但这会导致 2 个连接。另外,我需要确保我有一个可以 search() 的唯一属性,而不是 null。

【问题讨论】:

    标签: ldap jndi dn


    【解决方案1】:

    让我用我找到的解决方案来回答我的问题。

    涉及到search()函数,其中name参数(搜索上下文)应为DN,查询过滤器为空或like(objectClass=*)。然后它返回一行,对应于正在搜索的 DN。原始 DN 然后在 SearchResult 中可用。

    【讨论】:

      【解决方案2】:

      只需查找 DN。生成的DirContextgetNameInNamespace() 应该是正确的。

      搜索也可以,但效率较低且代码较多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-28
        • 1970-01-01
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多