我正在尝试找出特定属性名称的非绑定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服务器架构中获取属性语法吗?
由于
答案 0 :(得分:3)
我认为这不是特定于UnboundID LDAP SDK for Java的。我不确定Active Directory是否通过LDAP公开此信息。当我执行常规LDAP搜索以检索模式信息时,我可以看到attributeTypes和objectClasses属性,但是不返回ldapSyntaxes(实际上ldapSyntaxes没有出现在属性类型列表中)。
同样,没有任何属性类型定义包含USAGE元素,该元素用于表示属性类型是可操作的(例如,“USAGE directoryOperation”)。
很可能Active Directory根本不会报告此信息。可能是它提供了一些其他非标准方式来获取此信息(例如,控件或扩展操作,或其他一些可以检索的条目),但如果有,那么我不知道它。