Chez moi, le DN de l'annuaire est "dc=home,dc=com" et celui de mon utilisateur est "uid=cquaquin,ou=people,dc=home,dc=com"
En java, on va utiliser l'API JNDI pour se connecter et manipuler les objets de la base de donnée de l'annuaire. Voici un exemple simple de test de validité de login et de mot de passe :

package fr.quaquin.clement.ldap;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.*;

public class AuthenticateUser {

    public static void main(String args[]){
        String host="ldap://localhost:389/dc=home,dc=com";
        String login=args[0];
        String password=args[1];
    
        Hashtable env new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY"com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URLhost);
    
        env.put(Context.SECURITY_AUTHENTICATION"simple");
        env.put(Context.SECURITY_PRINCIPAL"uid="+login+",ou=people,dc=home,dc=com");
        env.put(Context.SECURITY_CREDENTIALSpassword);
        
        // Create the initial context
        try {
            DirContext ctx new InitialDirContext(env);
            System.out.println("Connected !");
            System.exit(0);
        catch (NamingException e) {
            System.out.println("Failed !");
            System.exit(1);
        }
    }
}


J'exporte cette classe dans une archive ldap-authentify.jar, puis je vais l'utiliser dans un shell unix.

#!/bin/sh
if $# -ne # si le nombre de parametres n'est pas 2
then            # affiche l'usage
    echo Usage$0 login password
    exit 1
fi

java -jar ldap-authentify.jar $1 $2
code_retour=$?
if "$code_retour" ]; then
  echo "OK"
else
  echo "Echec"
fi



./connexion_ldap.sh cquaquin mypassword
Connected !
OK

Références : JNDI : Tips for LDAP users