Java - Java y Active directory

 
Vista:

Java y Active directory

Publicado por salva (62 intervenciones) el 04/10/2006 21:56:07
Hola a todos,

Hace ya un tiempo que estoy desconectado de este foro, espero que eso cambie por que me ha ayudado mucho.

Estoy desarrollando una aplicacion para un entorno corporativo en el cual existe un servidor de dominio con active directory.

Mi idea es que mi aplicacion compruebe si el usuario con el que se ejecuta la aplicacion en el cliente pertenece a un grupo de seguridad concreto, hasta ahora tengo esta clase:

//INICIO DE LA CLASE

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

class FastBindConnectionControl implements Control {
public byte[] getEncodedValue() {
return null;
}
public String getID() {
return "1.2.840.113556.1.4.1781";
}
public boolean isCritical() {
return true;
}
}

public class ldapbind {
public Hashtable env = null;
public LdapContext ctx = null;
public Control[] connCtls = null;

public ldapbind(String ldapurl) {
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.PROVIDER_URL,ldapurl);

connCtls = new Control[] {new FastBindConnectionControl()};

try {
ctx = new InitialLdapContext(env,connCtls);

} catch (NamingException e) {
System.out.println("Naming exception " + e);
}
}
public boolean Authenticate(String username, String password) {
try {
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL,username);
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS,password);
ctx.reconnect(connCtls);

/*
while (answer.hasMore()) {
System.out.println(">>>" + ((SearchResult)answer.next()).getName());
}*/
System.out.println(username + " is authenticated");
return true;
}

catch (AuthenticationException e) {
e.printStackTrace();
System.out.println(username + " is not authenticated");
return false;
} catch (NamingException e) {
e.printStackTrace();
System.out.println(username + " is not authenticated");
return false;
}
}
public void finito() {
try {
ctx.close();
System.out.println("Context is closed");
} catch (NamingException e) {
System.out.println("Context close failure " + e);
}
}
}

// FIN DE LA CLASE

Con ella he conseguido comprobar si el usuario que le paso como parametro esta correctamente creado en el dominio, es decir, si es autenticable.
Mi intencion es consultar al servidor de dominio y obtener la lista de grupos de seguridad a los que pertenece el usuario para permitirle o no el acceso a mi aplicacion.

He estado buscando pero no he encontrado nada claro, agradeceria cualquier ayuda.

Tambien agradeceria cualquier documentacion de como actua Java con Active Directory

Gracias por la atencion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Java y Active directory

Publicado por manru (161 intervenciones) el 05/10/2006 02:15:06
Hola.

Si tu desarrollo implica trabajar con seguridad, creo que deberias utilizar JAAS.
http://java.sun.com/products/jaas/

Si bien es un poco complicado al principio, tiene todo lo que necesitas, inclusive integracion con Active Directory de Microsoft.

Espero te sirva.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar