[Resolvido] LDAP - Acitve Directory

Olá!

Estou com os seguintes problema:

  1. Estou desenvolvendo uma aplicação java com autenticação no Active Directory e tenho que validar o usuário e a senha…o usuário
    eu já consegui validar…agora a senha eu gostaria de saber se tem como eu comparar a senha que o usuário tá passando com
    a do AD…por que não posso informa-la direto primeiro eu faço uma busca pra verificar se o login é valido e me voltar o caminho
    da arvore desse usuário…Uma solução que encontrei foi fazer uma nova autenticação mas gostaria de saber se essa solução
    é a mais adequada…
  2. O login anonimo no AD é seguro ou é melhor usuar um usuário de serviço ?

Valeu!

Faça uma autenticação normal no AD…




import java.util.Hashtable;
import javax.naming.AuthenticationException;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;



public class Login {

    public static void main(String args []){

        String userName = "cn=xpto,ou=usuarios,ou=SP,ou=Teste,dc=teste,dc=com,dc=br";
        String newPassword = "password";

        Hashtable authEnv = new Hashtable(11);

        authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
        authEnv.put(Context.PROVIDER_URL, "ldap://AD.com.br:389");
        authEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
        authEnv.put(Context.SECURITY_PRINCIPAL, userName);
        authEnv.put(Context.SECURITY_CREDENTIALS, newPassword);

       try
        {
           DirContext authContext = new InitialDirContext(authEnv);
           System.out.println("Autenticado!");

        }
        catch (AuthenticationException authEx)
        {
        System.out.println("Erro na autenticação! ");
        authEx.printStackTrace();
        }
        catch (NamingException namEx)
        {
        System.out.println("Problemas na conexão! ");
        //namEx.getCause().printStackTrace();
        }
    }

}

Obrigado pela informação.