style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Ayuda con Autenticacion LDAP en ActiveDirectory

La vdd no es un tema que haya tratado desde hace mucho tiempo y hay muy poca info en intershit, asi que no se si me puedan ayudar.

Estoy teniendo problemas, 1 por que no conozco muy bien como funciona LDAP y otra por que estoy intentando validar usuarios en el y me saca hartos errores.

Ya me baje unos ejemplos pero al AD que estoy intentando acceder me comentan que necesito un nombre de dominio, y la vdd en los ejemplos que encontre solo entran y validan si existen los usuarios. Digamos que me parece que este usuario de dominio que necesita mi aplicacion es como un "te doy permiso de que consultes mis usuarios" y luego de loggearme con el ya puedo consultar... asi que supongo que ira en la parte en la que se hace la conexion. Ya descargue algunos [LDAP Search y LDAP Browser] exploradores de LDAP basados en Java y he intentado probar, mediante estos no jala con mi usuario de dominio, y por la aplicacion [una clase java] consulto si existe mi usuario de dominio y si me permite conectarme pero no se como validar otros usuarios teniendo ya la conección con mi usuario de dominio.. :S no se si alguien tenga experiencia en esto... [aunque no tengo muchas esperanzas].

De cualquier forma muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

deberia poderse enviar una

deberia poderse enviar una notificacion a mi mail o celular cuando respondan no? estaria shido...

Tienes que poner una cadena

Tienes que poner una cadena de conexión tipo:

CN=javamexico,CD=org,OU=foros,U=white_king

Claro no exactamente así, pero tiene mucho que ver con el dominio que tiene tu AD.

Por ejemplo en windows, cuando te logeas a la maquina viene un dominio ej: EMPRESA\tu_nombre

Es muy similar.

Luego que le pasas esas credenciales ya puedes consultar el active directory usando el lenguaje de consultas. Ejemplo:

http://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx

Pero ya eso es lo siguiente. Primero a conectarte.

Para lo de las alertas, es claro que a algunos les sería util. Lo que puedes hacer es poner esto en tu barra favoritos:

http://www.javamexico.org/foros/java_standard_edition/ayuda_con_autentic...

Y darle F5 cada hora y ver si cambio.

XD jeje, si fue lo que

XD jeje, si fue lo que hice,

ps te comento que aunque no era tanto el problema por el dominio, no supe como le hice pero ya me conecte con mi usuario de dominio y ya puedo hacer consultas. PEEERO tengo otro problema la aplicacion va a validar los usuarios asi que ya logueada la aplicacion debe de preguntar si un usuario existe y jalar un atributo que necesita, y de echo ya lo hace, solo que ignora completamente el pass del usuario :S, es decir siempre me dice que el usuario existe y me regresa correctamente su atributo, pero quiero que también valide si el pass es el correcto, creo que es por que en los filtros no le estoy diciendo que lo valide:

String searchFilter = "(&(objectClass=user)(sAMAccountName=" + user+ "))";

contextoLDAP.search(searchBase, searchFilter, searchCtls);

alli deberia pasarle el pass como filtro pero no c como :S.

Imagen de francisco.santiagoj

@White_King

Que tal White_King, yo también me estuve peleando un buen rato con esto, hasta que encontré unos ejemplos y arme la siguiente clase:

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

public class ValidacionLDAP {
        private String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
        private String MY_HOST = "ldap://servidor_de_Dominio";

        public ValidacionLDAP() {}
        public String Authenticate(String domain, String user, String pass) {          
                Hashtable<String, String> env = new Hashtable<String, String>();
                if (pass.compareTo("") == 0 || user.compareTo("") == 0)
                        return null;
                env.put(Context.INITIAL_CONTEXT_FACTORY,INITCTX);
                env.put(Context.PROVIDER_URL, MY_HOST);
                env.put(Context.SECURITY_AUTHENTICATION, "simple");
                env.put(Context.SECURITY_PRINCIPAL,new String(domain+"\\"+user));
                env.put(Context.SECURITY_CREDENTIALS,new String(pass));
                try {
                        DirContext ctx = new InitialDirContext(env);
                }
                catch (NamingException e) {
                        e.printStackTrace();
                        return null;
                }

                return user;  
        }
}

Ejecutando la clase y el método Autenticate(dominio, nombre_de_usuario, password) te va a devolver el usuario que buscar en el servidor, si te regresa algo diferente de NULL es que te creo bien la conexión.

Yo la utilizo para después crear un objeto en un servlet.

Cualquier cosa te aseguro que aquí encuentras ayuda!:

Quiza sea porque lo que estas

Quiza sea porque lo que estas haciendo es consultar cuando ya estas adentro, intenta conectarte usando el login y password de tu usuario.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">