Criar logon utilizando Active Directory

Bom dia galera,estou querendo criar um logon que utiliza o active directory(AD) do windowns.Inicialmente não ha alteração de dados,o usuario informa a matricula e a senha e o verificamos se ele existe ou não no AD. Se alguem puder disponibilizar o codigo fico mto agradecido.Antecipadamente muito obrigado!!!

Eu acesso o AD via LDAP para autorização de usuários.
Veja abaixo codigo de exemplo:

package br.gov.tjrn.arq.auth.activeDirectory;
 
 import java.util.Hashtable;
 
 import javax.naming.Context;
 import javax.naming.NamingEnumeration;
 import javax.naming.NamingException;
 import javax.naming.directory.Attributes;
 import javax.naming.directory.SearchControls;
 import javax.naming.directory.SearchResult;
 import javax.naming.ldap.InitialLdapContext;
 import javax.naming.ldap.LdapContext;
 
 public class DadosLoginActiveDirectory{
 
 	public static void main(String[] args) throws NamingException {
 
 		String loginPesquisado = "teste";
 		String dominio = "@intranet.tjrn";
 		
 		// specify the LDAP search filter
 		String searchBase = "DC=intranet,DC=tjrn";
 
 		// prepara parametros de conexao ao AD
 		Hashtable<String, String> envDC = new Hashtable<String, String>();
 
 		envDC.put(Context.INITIAL_CONTEXT_FACTORY,
 				"com.sun.jndi.ldap.LdapCtxFactory");
 
 		// atribui as credenciais de segurança (note: using simple cleartext
 		// authentication)
 		envDC.put(Context.SECURITY_AUTHENTICATION, "simple");
 
 		// usuario para fazer o bind com o AD
 		envDC.put(Context.SECURITY_PRINCIPAL, <usuario+dominio>); 
 		envDC.put(Context.SECURITY_CREDENTIALS, <senha>);
 
 		// URL de conexao
 		envDC.put(Context.PROVIDER_URL, "ldap://<IP do servidor AD>");
 
 		// We need to chase referrals when retrieving attributes from the DC
 		// as the object may be in a different domain
 		envDC.put(Context.REFERRAL, "follow");
 
 		// configura os atributos que serão obtidos na forma binária
 		envDC.put("java.naming.ldap.attributes.binary",
 				"objectGUID objectSid msSFUPassword");
 
 		// libera o LdapContext desta instancia, caso ele já estive atribuído
 		LdapContext ldapContext = new InitialLdapContext(envDC, null);
 
 		// Now perform a search against the GC
 		// Create the search controls
 		SearchControls searchCtls = new SearchControls();
 
 		// Specify the attributes to return
 		String[] returnedAtts = { "givenName", "objectGUID", "displayName",
 				"distinguishedName", "userPrincipalName", "samAccountName",
 				"objectClass", "sn", "unicodePwd", "userPassword",
 				"msSFUPassword" };
 		searchCtls.setReturningAttributes(returnedAtts);
 
 		// Specify the search scope
 		searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 
 		String searchFilter = "(&(objectClass=user)(userPrincipalName="
 				+ (loginPesquisado + dominio) + "))";
 
 		// Search for objects in the GC using the filter
 		NamingEnumeration answer = ldapContext.search(searchBase, searchFilter,
 				searchCtls);
 
 		if (answer.hasMoreElements()) {
 
 			SearchResult sr = (SearchResult) answer.next();
 
 			// Print out some of the attributes, catch the exception if the
 			// attributes have no values
 			Attributes attrs = sr.getAttributes();
 
 			// exibe os valores dos atributos retornados junto com seus valores
 			NamingEnumeration enumeration = attrs.getIDs();
 			while (enumeration.hasMoreElements()) {
 				String attrId = (String) enumeration.nextElement();
 				System.out.println(attrs.get(attrId));
 			}
 			System.out.println();
 
 			// obtem o displayName e nocaso dele ser null, pega o givenName
 			String userName = "";
 			if (attrs.get("displayName") != null) {
 				userName = (String) attrs.get("displayName").get();
 			} else if (attrs.get("givenName") != null) {
 				userName = (String) attrs.get("givenName").get();
 			}
 			// obtem o distinguishedName e o userPrincipalName
 			String distinguishedName = (String) attrs.get("distinguishedName")
 					.get();
 			String userPrincipalName = (String) attrs.get("userPrincipalName")
 					.get();
 
 			System.out.println(userName);
 			System.out.println(distinguishedName);
 			System.out.println(userPrincipalName);
 
 		}
 	}
 }

no seu caso, vc passaria o login e senha informados pelo usuario como parametros de BIND com o AD (veja codigo abaixo).
Se ele conseguir fazer o bind então o login e senha estão corretos.

       //usuario para fazer o bind com o AD
       envDC.put(Context.SECURITY_PRINCIPAL, <usuario+dominio>);
       envDC.put(Context.SECURITY_CREDENTIALS, <senha>);

Você está utilizando JAAS?