如何获取 LDAP unboundid AttributeSyntax?

发布于 2024-11-08 18:49:38 字数 1178 浏览 0 评论 0原文

我试图找出特定属性名称的 unboundid AttributeSyntax 类型,但它根本不起作用。

这是我用来实现此目的的示例测试代码:

    @Test
    public void testLDAPSchema() {
    try {
        LDAPConnection connection = new LDAPConnection();
        connection.connect("hessmain", 389);
        connection.bind("CN=Administrator,CN=Users,DC=FISHBOWL,DC=NET", "password");

        Schema s = connection.getSchema();

        System.out.println(s.toString());

        AttributeTypeDefinition atd = s.getAttributeType("directReports");

        Set<AttributeTypeDefinition> oat = s.getOperationalAttributeTypes();
        Set<AttributeSyntaxDefinition> l = s.getAttributeSyntaxes();

        AttributeSyntaxDefinition asd1 = s.getAttributeSyntax(atd.getOID());
        AttributeSyntaxDefinition asd2 = s.getAttributeSyntax(atd.getSyntaxOID());
        AttributeSyntaxDefinition asd3 = s.getAttributeSyntax(atd.getBaseSyntaxOID());

        connection.close();
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    }
    }

从上面的代码中,所有集合都是空的。这也意味着无论我将哪个 OID 传递给模式 getAttributeSyntax 方法,我都只会得到 null 返回。

是否有任何原因导致我无法从 Active Directory 服务器架构获取属性语法?

谢谢

I'm trying to find out the unboundid AttributeSyntax type for a specific attribute name and it's simply not working.

Here's the example test code that I'm using to achieve this:

    @Test
    public void testLDAPSchema() {
    try {
        LDAPConnection connection = new LDAPConnection();
        connection.connect("hessmain", 389);
        connection.bind("CN=Administrator,CN=Users,DC=FISHBOWL,DC=NET", "password");

        Schema s = connection.getSchema();

        System.out.println(s.toString());

        AttributeTypeDefinition atd = s.getAttributeType("directReports");

        Set<AttributeTypeDefinition> oat = s.getOperationalAttributeTypes();
        Set<AttributeSyntaxDefinition> l = s.getAttributeSyntaxes();

        AttributeSyntaxDefinition asd1 = s.getAttributeSyntax(atd.getOID());
        AttributeSyntaxDefinition asd2 = s.getAttributeSyntax(atd.getSyntaxOID());
        AttributeSyntaxDefinition asd3 = s.getAttributeSyntax(atd.getBaseSyntaxOID());

        connection.close();
    } catch (Exception e) {
        Assert.fail(e.getMessage());
    }
    }

From the above code, all the sets are empty. This also means that no matter which OID I pass to the schema getAttributeSyntax method that I will simply get a null return.

Is there any reason why I can't get the attribute syntaxes from an Active Directory server schema?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撩动你心 2024-11-15 18:49:38

我不认为这特定于 UnboundID LDAP SDK for Java。我不确定 Active Directory 是否通过 LDAP 公开此信息。当我执行常规 LDAP 搜索来检索架构信息时,我可以看到 attributeTypes 和 objectClasses 属性,但未返回 ldapSyntaxes(事实上 ldapSyntaxes 没有出现在属性类型列表中)。

类似地,属性类型定义都不包含USAGE元素,该元素用于指示属性类型是可操作的(例如,“USAGE目录操作”)。

Active Directory 很可能根本不报告此信息。它可能提供了一些其他非标准方式来获取此信息(例如,控制或扩展操作,或可以检索的其他一些条目),但如果有的话我不知道。

I don't think that this is specific to the UnboundID LDAP SDK for Java. I'm not sure that Active Directory exposes this information over LDAP. When I perform a general LDAP search to retrieve schema information, I can see the attributeTypes and objectClasses attributes, but ldapSyntaxes isn't returned (and in fact ldapSyntaxes doesn't appear in the list of attribute types).

Similarly, none of the attribute type definitions includes a USAGE element, which is what is used to indicate that the attribute type is operational (e.g., "USAGE directoryOperation").

It may well be that Active Directory simply doesn't report this information at all. It could be that it provides some other non-standard way to get this information (e.g., a control or extended operation, or some other entry that can be retrieved), but if there is then I don't know about it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文