2017-09-13 5 views
1

UnboundID LDAP SDKを使用してアクティブディレクトリ(AD)からユーザーエンティティの変更を取得したいとします。Active Directory。永続検索またはエントリ変更通知

は、デフォルトではADのサポート持続検索またはエントリ変更通知をないか、私はすべての設定を行うために必要?あなたが変化したときに通知されるように登録することができますのActive Directoryで拡張検索操作を使用する必要があり、事前

答えて

0

感謝。

これは、そうするために、MicrosoftのADが提供するOIDです:UnboundID LDAP SDKの面では

https://msdn.microsoft.com/en-us/library/aa366983(v=vs.85).aspx

、このコントロールは、あなたがこのコントロール(なくする必要が何をすべきと思われますJavaの専門家):提案されたコメントに基づいて

https://docs.ldap.com/ldap-sdk/docs/javadoc/com/unboundid/ldap/sdk/experimental/ActiveDirectoryDirSyncControl.html

+1

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

+0

@jwillekeそれを指摘してくれてありがとう。私はJavaの専門家ではないので、さらに検索することなく、UnboundIDのドキュメントを好奇心でチェックしただけです。私は自分の答えを編集してあなたのポイントを含めるでしょう。 – Esteban

+0

回答ありがとうございます。能動的な曲調は必要ありませんか?エントリの属性を変更すると、リスナーのメソッドは(UnboundID LDAP SDKの観点から)呼び出されません。私はカスタムコントロール(コードはPersistentSearchRequestControlと同じですが)を試しましたが、他のoid(1.2.840.113556.1.4.528)と一緒でした。残念ながら、dirSyncをインストールすることはできません。 – nikelyn

0

、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内の変更をすべて印刷する必要があります。

関連する問題