我编写了一个程序,它读取 Web 服务,检索用户数据,然后应该将该数据推送到 ActiveDirectory,从而更新用户的标题、地址、电话号码等。
问题是当我使用 Unboundid Connection 类执行搜索时,不会返回请求的属性。下面是搜索代码:
SearchResult result = connection.search( properties.getProperty("ldap.search.baseDN"),
SearchScope.SUB, "(cn=" + userId + ")",
"personalTitle", "department", "company", "manager", "telephoneNumber",
"streetAddress", "I", "st", "postalCode", "c", "pager", "mobile",
"fax", "cn");
上面的代码定位到了想要的用户,按预期返回了cn属性,但是其他属性都没有返回。如果我使用 JXplorer 使用相同的连接凭据连接到 AD,我可以看到所有需要的属性都存在,但根本没有返回。
我尝试替换 SearchRequest.ALL_OPERATIONAL_ATTRIBUTES、SearchRequest.ALL_USER_ATTRIBUTES 和 SearchRequest.REQUEST_ATTRS_DEFAULT,而不是明确列出这些字段,但没有成功。
我还查看了从“connection.getSchema()”返回的“Schema”对象,可以看到personalTitle 应该存在:
connection.getSchema().getAttributeType("personalTitle")
上面的代码返回:
1.2.840.113556.1.2.615 名称 'personalTitle' 语法 '1.3.6.1.4.1.1466.115.121.1.15' 单值
所以也许这是一个用户权限问题?有没有人遇到过这种情况并知道如何解决?
谢谢,迈克