Using DirContextSource

This user guide is comprised of two examples of the DirContextSource and also several notes on authentication.

Contents:

Basic Example

In few lines you have a usable DirContextSource:

import net.sf.michaelo.dirctxsrc.DirContextSource;
import javax.naming.directory.DirContext;
[…]
DirContextSource.Builder builder = new DirContextSource.Builder("ldap://hostname");
DirContextSource contextSource = builder.build();
// try and catch block omitted for the sake of brevity,
// handle NamingException appropriately
DirContext context = contextSource.getDirContext();
// Perform operations
context.close();
[…]

Advanced Example

A more complex example includes several configuration options as described in the builder's Javadoc:

import net.sf.michaelo.dirctxsrc.DirContextSource;
import javax.naming.directory.DirContext;
[…]
// Use several hostnames in the case if one fails
DirContextSource.Builder builder = new DirContextSource.Builder("ldap://hostname",
                                 "ldap://hostname2", "ldap://distant-hostname");
// I'd like to see all comm on System.err
builder.debug();
// Hosts are unreliable, so keep trying
builder.retries(5).retryWait(5000);

DirContextSource contextSource = builder.build();
// try and catch block omitted for the sake of brevity,
// handle NamingException appropriately
DirContext context = contextSource.getDirContext();
// Perform operations
context.close();
[…]

Authentication

The DirContextSource supports two types of authentication mechanisms, none/anonymous and GSS-API with Kerberos 5.

Note
Other mechanisms are not directly supported because I never needed them. If you need any, please file an issue.
  • Anonymous auth: works out of the box, the builder is configured for this mechanism by default.
  • GSS-API (Kerberos 5) auth: requires a bit more work. Make sure that JVM is properly configured for Kerberos and add the following to the basic example builder:
    […]
    builder.gssApiAuth();
    […]
    

    The above example presumes that you have configured your JAAS login file with the default login entry name DirContextSource. If you prefer an alternative name configure as follows:

    […]
    builder.gssApiAuth("MyAlternativeEntryName");
    […]
    

    There are a few more options for this authentication mechanism, like mutual auth or auth integrity and/or privacy protection. See the builder's Javadoc for more details.