Как получить несвязанный LDAP AttributeSyntax? - PullRequest
0 голосов
/ 19 мая 2011

Я пытаюсь найти несвязанный тип 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?

Спасибо

1 Ответ

3 голосов
/ 19 мая 2011

Я не думаю, что это относится к UnboundID LDAP SDK для Java. Я не уверен, что Active Directory предоставляет эту информацию через LDAP. Когда я выполняю общий поиск LDAP для получения информации о схеме, я вижу атрибуты attributeTypes и objectClasses, но ldapSyntaxes не возвращается (и фактически ldapSyntaxes не отображается в списке типов атрибутов).

Аналогичным образом, ни одно из определений типа атрибута не включает элемент USAGE, который используется для указания того, что тип атрибута работает (например, «USAGE directoryOperation»).

Вполне возможно, что Active Directory просто не сообщает эту информацию вообще. Возможно, он предоставляет какой-то другой нестандартный способ получения этой информации (например, элемент управления или расширенную операцию или какую-либо другую запись, которую можно извлечь), но если есть, то я не знаю об этом.

...