如何获取LDAP unboundid AttributeSyntax?

时间:2011-05-18 21:18:45

标签: active-directory ldap unboundid-ldap-sdk

我正在尝试找出特定属性名称的非绑定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服务器架构中获取属性语法吗?

由于

1 个答案:

答案 0 :(得分:3)

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

同样,没有任何属性类型定义包含USAGE元素,该元素用于表示属性类型是可操作的(例如,“USAGE directoryOperation”)。

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