TIBCO OpenLDAP Channel

Overview

This component provides a channel interface to the OpenLDAP API. It provides partial implementation of the LDAP operations.

Please see the enclosed javadoc.

LDAP support

  • Operations

    Search (read-only) is the only operation supported at the moment. Add, Delete, Modify are not planned at the moment, as they are not required for the project using it.

    • Sync LDAP synchronous search operation. LDAP operation invocation returns the search results. Application still gets it via MessageHandler.
    • Async LDAP asynchronous search operation. LDAP operation invocation returns a handle. Channel iterates using the handle and builds the search results. Application still gets it via MessageHandler.
  • Authentication

    Simple username password based authentication at the time of LDAP connection is the only one supported at the moment. Again, SSL - certificate or password based is not required by the project at the moment.

  • Connection timeout

    Supports specifying the amount of time to wait when connecting to the LDAP server.

  • Maximum Connection Attempts and Retry Delay

    At the time of initial connection and when the connection to LDAP server is lost has been detected, the client tries to connect to the LDAP server upto maximumConnectionAttempts times every retryDelay milliseconds.

  • Operation timeout

    Supports specifying the amount of time to wait for completion of an operation.

  • Version

    Supports only V3 of the LDAP Protocol at the moment. No plans to support others.

  • Alias Dereferencing

    Supports specifying only DEREF_ALWAYS as the alias dereferencing mechanism at the moment. Plan to support others on need basis.

  • Search Scope

    Supports specifying only SUBTREE as the search scope at the moment. Plan to support others on need basis.

Starting the openldap channel

The openldap channel provides an implementation of the AST channel framework. See AST Devzone for further details of the API.

An example of how to create an instance of the server endpoint is shown below :-

  import com.tibco.openldapchannel.LDAPClientEndpoint;
  import com.tibco.openldapchannel.LDAPClientService;

  ....

        String host = "localhost";
        int port = 389;
        String loginDN = "cn=admin,o=Acme";
        String password = "secret";
        int connections = 5; 
                
        clientService = new LDAPClientService(
                        "client service name", 
                        "client service description");          
        clientEndpoint = new LDAPClientEndpoint(
                        clientService, 
                        "client name", 
                        "client description", 
                        host, 
                        port, 
                        loginDN, 
                        password, 
                        connections);
        clientEndpoint.setMessageHandler(
                        new ClientApplicationHandler());
                
        clientService.start();
                                        

Applications would typically include KCS based configuration to configure the service and endpoints.

Sending a search request

Search requests are represented as first class java objects to simplify use in the application. Below is an example of creating and sending a search request

  
  import com.tibco.openldapchannel.operations.BaseMsg.OperationType;
  import com.tibco.openldapchannel.operations.SearchMsg;
  
  ....
  
        String searchBase = "ou=[organization],o=Acme";
        String[] searchParameters = {"sales"};
        String searchFilter = "(objectclass=*)";
        String[] filterParameters = null;
        String[] attributesOfInterest = new String[] {
                "lastName",
                "firstName"
        };
        SearchMsg searchMsg = new SearchMsg(OperationType.Sync, 
                searchBase, searchParameters, 
                searchFilter, filterParameters, 
                attributesOfInterest);
        Message message = new Message(searchMsg);
        clientEndpoint.send(message);
                                        

Receiving a search response

To receive a search response, an application handler is used. For example :-

  import com.tibco.openldapchannel.operations.SearchResults;

  ....

  public class ClientApplicationHandler extends 
                com.kabira.application.MessageHandler {
        
        @Override
        public void accept(Message message) 
                        throws ProcessingException {    
                
          Serializable payload = message.getPayload();
                
          System.out.println(
            "CLIENTAPPLICATION: Receieved message: ");
          if (payload instanceof SearchResults) {
            SearchResults searchResults = (SearchResults)payload;
            System.out.println(searchResults);
          } else {
            System.out.println(payload.toString());
          }
        }
        
  }
                

Search Sequence

Structure

Management

Since the openldap channel implements the channel framework, the openldap channel can be managed from the commandline using switchadmin, or the AST GUI ASTA.

References