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 方法,我都只会得到一个空返回。

为什么我无法从 Active Directory 服务器架构中获取属性语法?

谢谢

4

1 回答 1

3

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

类似地,没有一个属性类型定义包括一个 USAGE 元素,该元素用于指示属性类型是可操作的(例如,“USAGE directoryOperation”)。

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

于 2011-05-18T22:42:18.180 回答