Foros del Web » Programación para mayores de 30 ;) » Java »

JAVA y LDAP Como? conectar, consultar, modificar

Estas en el tema de JAVA y LDAP Como? conectar, consultar, modificar en el foro de Java en Foros del Web. Buenos muchachos iniciemos un tema especial para LDAP, donde podamos ver como conectarnos desde java y realizar las cuatro operacione, modificar, consultar, eliminar, insertar. agrego ...
  #1 (permalink)  
Antiguo 22/08/2008, 03:52
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Sonrisa JAVA y LDAP Como? conectar, consultar, modificar

Buenos muchachos iniciemos un tema especial para LDAP, donde podamos ver como conectarnos desde java y realizar las cuatro operacione, modificar, consultar, eliminar, insertar. agrego mi codigo de como conectarme a LDAP y consultar a un usuario. lo unico que no logro ver es la contraseña, parece estar encriptada y no he logrado como obtenerla.

public RecordatorioBean getObtenerUsuario(String domain, String user, String pass,String inictx, String login, String security, String base){

Hashtable env = new Hashtable();
RecordatorioBean recordatorio = null;

if (pass.compareTo("") == 0 || user.compareTo("") == 0)
return null;

env.put(Context.INITIAL_CONTEXT_FACTORY, inictx);
env.put(Context.PROVIDER_URL, domain);
env.put(Context.SECURITY_AUTHENTICATION, security);
env.put(Context.SECURITY_PRINCIPAL, new String(user));
env.put(Context.SECURITY_CREDENTIALS, new String(pass));


try {

DirContext ctx = new InitialDirContext(env);
String filter = "(&(uid="+login+")(objectclass=Person))";
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_ SCOPE);
NamingEnumeration results = ctx.search(base,filter,constraints);

SearchResult sr=null;
Attributes att=null;
if (results.hasMore()){
sr=(SearchResult) results.next();
att = (Attributes) sr.getAttributes();
NamingEnumeration ne = null;
recordatorio = new RecordatorioBean();
recordatorio.setPregunta ((String)this.atributo("PIFPregunta", att, ne));

recordatorio.setRespuesta ((String)this.atributo("PIFRespuesta", att, ne));

recordatorio.setEmail ((String)this.atributo("mail", att, ne));

recordatorio.setContrasena(this.atributo("userPass word", att, ne).toString());

System.out.println("String givenname: " + this.atributo("givenname", att, ne));
System.out.println("String uid: " + this.atributo("uid", att, ne));
System.out.println("String ibm-primaryEmail: " + this.atributo("mail", att, ne));
System.out.println("String PIFPregunta: " + this.atributo("PIFPregunta", att, ne));
System.out.println("String PIFRespuesta: " + this.atributo("PIFRespuesta", att, ne));
System.out.println("String userPassword: " + this.atributo("userPassword", att, ne));
ctx.close();
}
} catch (NamingException e) {
e.printStackTrace();
return null;
}catch (Exception ex){
System.out.println("Error en la búsqueda: " + ex.getMessage());
}
return recordatorio;
}

public Object atributo(String campo, Attributes att, NamingEnumeration ne)throws NamingException {
if (att.get(campo) != null) {
ne = att.get(campo).getAll();
while (ne.hasMore()) {
return ne.next().;
}
}
return "";
}
  #2 (permalink)  
Antiguo 21/10/2008, 12:12
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

Hola,

He realizado con éxito la conexión a LDAP desde java, recuperando atributos o listado elementos según criterio de búsqueda.

Mi pregunta, para quien la sepa, es cómo es posible recuperar los grupos a los que pertenece un elemento(persona).

lo he intentado printando todos los atributos del elemento, pero no figura en ninguno de ellos.

Gracias por adelantado
  #3 (permalink)  
Antiguo 28/10/2008, 05:07
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

Con que servidopr de aplicaciones esta integrada LDAP. en cual estas desarrollando.
yo trabajo con websphere de imb y utilizo un api de Puma
  #4 (permalink)  
Antiguo 28/10/2008, 09:52
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

Alguien sabe como guardar o subir una foto en ldap desde j2ee?
  #5 (permalink)  
Antiguo 30/10/2008, 04:48
 
Fecha de Ingreso: octubre-2008
Mensajes: 13
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

Cita:
Iniciado por stack Ver Mensaje
Con que servidopr de aplicaciones esta integrada LDAP. en cual estas desarrollando.
yo trabajo con websphere de imb y utilizo un api de Puma

Estoy utilizando ADAM
  #6 (permalink)  
Antiguo 11/02/2011, 14:51
 
Fecha de Ingreso: junio-2007
Mensajes: 8
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

hola amigo me podrias ayudar ya logre autenticarme con un codigo java con estos ejemplos, pero a mas de eso necesito saber si me pueden ayudar con infromacion de como puedo agregar una opcion para cambiar el password, del usuario Ladp, o por emplo que me llame a la ventana de cambiar el password del usuario en windows
  #7 (permalink)  
Antiguo 15/02/2011, 11:50
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

/**
* Creado 22/09/2009
* Este método permite modificar un usuario del ldap.
* @param uid, es el identificador del usuario cuyos atributos serán modificados.
* @param atributos, HashMap que contiene los atributos que serán modificados.
* @return estatus, indica el estatus de la operación de modificación en el ldap. 1 éxito, 2 fracaso
*/
public int modificarUsuario(String uid,HashMap atributos) {

int estatus = 0;
InitialDirContext iniDirContext=null;

//Se calcula el entrydn del usuario
HashMap hashEntrydn = new HashMap();
hashEntrydn.put("entrydn","");
hashEntrydn = consultarUsuario(uid,hashEntrydn);
String entrydn = (String)hashEntrydn.get("entrydn");

try {
Vector vectorMods = new Vector();

String key;
Object value;
ArrayList lista;
for (Iterator i = atributos.keySet().iterator(); i.hasNext();) {
key = (String) i.next();
if (!key.equals("jpegPhoto")){
value = atributos.get(key);

if (value instanceof ArrayList) {
lista = (ArrayList)value;
vectorMods.add(new ModificationItem(DirContext.REMOVE_ATTRIBUTE,new BasicAttribute(key)));
for (int z=0;z<lista.size();z=z+1)
{
vectorMods.add(new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute(key, lista.get(z))));
}
}
else
{
vectorMods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(key, value)));
}

}else{
byte[] foto = (byte[])atributos.get(key);
vectorMods.add(new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute(key, foto)));
}

}
ctx = ContextFactory.getDirContext();
iniDirContext = (InitialDirContext) ctx;

ModificationItem[] mods = new ModificationItem[vectorMods.size()];
for (int d=0;d<vectorMods.size();d=d+1)
{
mods[d]=(ModificationItem)vectorMods.get(d);
System.out.println("vectorMods["+d+"]="+vectorMods.get(d));
}

iniDirContext.modifyAttributes(entrydn, mods);
estatus = 1;
} catch (NamingException e) {
System.out
.println("La modificación no se ha llevado a cabo con éxito. "
+ e.getMessage());
estatus = 2;
}finally{

try{
if (iniDirContext!=null){
iniDirContext.close();
}
}catch(NamingException e){
System.err.println("Error al cerrar el iniDirContext" + e.getMessage());
}
}

return estatus;
}
  #8 (permalink)  
Antiguo 15/02/2011, 12:03
 
Fecha de Ingreso: diciembre-2006
Mensajes: 14
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: JAVA y LDAP Como? conectar, consultar, modificar

/**
* Modificado 22/09/2009
* Este método permite obtener los datos de un usuario.
* @param uid, es el identificador del usuario.
* @param hmparametros, hashmap que contiene los atributos del usuario a consultar.
* @return HashMap con todos los valores de los atributos especificados por parámetro.
* @throws NamingException
*/
public HashMap consultarUsuario(String uid,HashMap hmparametros)
{
InitialDirContext iniDirContext=null;
try {
ctx = ContextFactory.getDirContext();
iniDirContext = (InitialDirContext) ctx;

//Create the search controls
SearchControls searchCtls = new SearchControls();

//Specify the search scope
searchCtls.setSearchScope(SearchControls.SUBTREE_S COPE);

//specify the LDAP search filter
String searchFilter = "(&(objectClass=usrportalfiscal)(uid="+uid+")) ";

//Specify the Base for the search
String searchBase = obtenerPropiedad(Constantes.BASEUSUARIOS)+","+obte nerPropiedad(Constantes.BASEDIRECTORIO);

//Specify the attributes to return

// recorriendo variables
String parametros="";

Iterator it = hmparametros.entrySet().iterator();
int i=0;
while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();

if(i==0)
parametros+=""+e.getKey();
else
parametros+=","+e.getKey();

i++;
}
String returnedAtts[]=parametros.split(",");

searchCtls.setReturningAttributes(returnedAtts);
//Search for objects using the filter
NamingEnumeration answer = iniDirContext.search(searchBase, searchFilter, searchCtls);

//Loop through the search results
while (answer.hasMoreElements()) {
SearchResult sr = (SearchResult)answer.next();

Attributes attrs = sr.getAttributes();
if (attrs != null) {
//establecimiento de valores

it = hmparametros.entrySet().iterator();
while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next();

if (e.getKey().equals("jpegPhoto")){
hmparametros.put(e.getKey(),obtenerObjeto((String) e.getKey(),attrs));
}else{
//Antes
//hmparametros.put(e.getKey(),obtenerValor((String)e .getKey(),attrs));
//Inicio Ahora
if (attrs.get((String)e.getKey()) != null) {
if (attrs.get((String)e.getKey()).size() > 1)
{
ArrayList attrArray = new ArrayList();
for (NamingEnumeration enumera = attrs.get((String)e.getKey()).getAll(); enumera.hasMore();) {
attrArray.add((String)enumera.next());
}
hmparametros.put(e.getKey(),attrArray);
}
else
{
hmparametros.put(e.getKey(),attrs.get((String)e.ge tKey()).get().toString());
}
}
//Fin Ahora

}
}

}
}

}

catch (NamingException e) {
System.err.println("Problem searching directory: " + e);
}finally{

try{
if (iniDirContext!=null){
iniDirContext.close();
}
}catch(NamingException e){
System.err.println("Error al cerrar el iniDirContext" + e.getMessage());
}
}

return hmparametros;
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:25.