我想要使用UnboundID LDAP SDK从活动目录(AD)中获取用户实体的更改。Active Directory。持久搜索或条目更改通知
默认完成AD支持持续检索或登记事项变更的通知或我必须做任何设置?
在此先感谢
我想要使用UnboundID LDAP SDK从活动目录(AD)中获取用户实体的更改。Active Directory。持久搜索或条目更改通知
默认完成AD支持持续检索或登记事项变更的通知或我必须做任何设置?
在此先感谢
你必须使用Active Directory上的扩展搜索操作,它允许您注册当发生变化的通知。
这是微软AD这样做提供的OID:
https://msdn.microsoft.com/en-us/library/aa366983(v=vs.85).aspx
在UnboundID LDAP SDK而言,似乎这种控制应该做的事情,你需要成为这个控制(但不一个Java专家):
基础上提出的意见,LDAP_SERVER_NOTIFICATION_OID控制执行应当AD工作。看到这个非常基本的测试例子:
// LDAP_SERVER_NOTIFICATION_OID (1.2.840.113556.1.4.528)
@Test
public void test_LDAP_SERVER_NOTIFICATION_OID() throws LDAPException, InterruptedException
{
AsyncSearchResultListener myAsyncSearchResultListener = new MyLdapChangeAsyncListener();
SearchRequest searchRequest = new SearchRequest(
myAsyncSearchResultListener,
"DC=test,DC=lab,DC=com", // baseDN
SearchScope.SUB,
Filter.createPresenceFilter("objectClass"), null);
Control myControl = new Control("1.2.840.113556.1.4.528");
searchRequest.addControl(myControl);
AsyncRequestID asyncSearchId = connection.asyncSearch(searchRequest);
// Wait 15 seconds for changes to be returned
Thread.sleep(15000);
connection.abandon(asyncSearchId);
connection.close();
}
private class MyLdapChangeAsyncListener implements AsyncSearchResultListener
{
@Override
public void searchEntryReturned(SearchResultEntry searchEntry)
{
System.out.println(" >>> ldap searchEntryReturned: " + searchEntry);
}
@Override
public void searchReferenceReturned(SearchResultReference searchReference)
{
System.out.println(" >>> ldap searchReferenceReturned: " + searchReference);
}
@Override
public void searchResultReceived(AsyncRequestID requestID, SearchResult searchResult)
{
System.out.println(" >>> ldap searchResultReceived: " + requestID + "/" + searchResult);
}
}
该测试没有太大的作用。同时等待15秒钟,同时打印出baseDN内的任何更改。
DirSync控件是一个LDAP控件(OID 1.2.840.113556.1.4.841),因此它不同于第一个链接中引用的控件;但是对于期望的结果可能是一个不错的选择。 AFIK,UnboundID LDAP SDK不直接支持LDAP_SERVER_NOTIFICATION_OID(1.2.840.113556.1.4.528),但应该是相当直接的实现。 – jwilleke
@jwilleke感谢您指出。我不是Java专家,因此只是通过好奇心检查UnboundID文档而无需进一步搜索。我会编辑我的答案以包含您的观点。 – Esteban
感谢您的回答。不需要主动直接调节?当我更改条目的任何属性时,不会调用侦听器的方法(根据UnboundID LDAP SDK)。我尝试使用自定义控件(代码与PersistentSearchRequestControl相同),但使用其他oid(1.2.840.113556.1.4.528)。不幸的是,不能安装dirSync。 – nikelyn