Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: java e LDAP

  1. #1

    java e LDAP

    Salve a tutti.

    Allora, vado subito al sodo.
    Devo realizzare un'applicazione web che mi consenta di :

    -creazione di nuovi accounts,
    - modfica dei dati di un account
    - L'inseriemnto di un account in gruppi. (secondario)
    - rimozione di un account da un gruppo (secondario)
    - la ricerca di un account

    con un database ldap.

    Chi può darmi una mano o dirmi qualche esempio da cui prendere spunto.

    grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: java e LDAP

    Originariamente inviato da mixgiogio
    Devo realizzare un'applicazione web che mi consenta di :

    -creazione di nuovi accounts,
    - modfica dei dati di un account
    - L'inseriemnto di un account in gruppi. (secondario)
    - rimozione di un account da un gruppo (secondario)
    - la ricerca di un account

    con un database ldap.
    Devi ovviamente usare delle API apposite per LDAP. A parte l'utilizzo di librerie esterne (non ne conosco), c'è già un set di API apposito nel framework standard di Java, è JNDI, vedi il tutorial:

    http://java.sun.com/docs/books/tutorial/jndi/index.html

    Non ti so dire di più perché non conosco JNDI e nemmeno LDAP (se non a grandi linee).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    se può servire per LDAP...

    codice:
    
    import java.util.Hashtable;
    import javax.naming.*;
    import javax.naming.directory.*;
    
    /**
     * CLASSE PER CLASSE PER ACCESSO LDAP
     * @version 1.1
     */
    public class LDAPHelper {
    
    	// VARIABILI UTILIZZATE
    	private Hashtable env = new Hashtable();
    	private String user = "";
    	private String password = "";
    	private String provider_url = "";
    	private String ou = "";
    	private String dc = "";
    
    
    	/**
    	 * METODO COSTRUTTORE PER LA CONNESSIONE
    	 * 
    
    	 * Il metodo definisce tutte le variabili necessarie e richiama il metodo per preparare la connessione
    	 * 
    	 * @param usr
    	 * User di accesso a LDAP
    	 * @param psw
    	 * Password di accesso a LDAP
    	 * @param provider_url
    	 * URL a cui connettersi
    	 * @param ou
    	 * OU di LDAP
    	 * @param dc
    	 * dc di LDAP
    	 */
    	public LDAPHelper(String usr, String psw, String provider_url, String ou, String dc){
    		this.user = usr;
    		this.password = psw;
    		this.provider_url = provider_url;
    		this.ou = ou;
    		this.dc = dc;
    		prepareConnection();
    	}	
    	
    	
    	/**
    	 * METODO PER PREPARARE LA CONNESSIONE
    	 * 
    
    	 * Il metodo prepara l'oggetto necessario alla connessione
    	 */
    	private void prepareConnection(){
    		env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
    		env.put(Context.PROVIDER_URL, "ldap://" + provider_url );
    		env.put(Context.SECURITY_AUTHENTICATION, "simple");
    		env.put(Context.SECURITY_PRINCIPAL, "CN=" + user + "," + ou + "," + dc);
    		env.put(Context.SECURITY_CREDENTIALS, password);
    	}
    	
    
    	/**
    	 * METODO PER CONTROLLARE SE CI SI RIESCE A CONNETTERE A LDAP
    	 * 
    
    	 * Il metodo verifica se ci si riesce a connettere a LDAP con le variabili di classe valorizzate con il metodo costruttore
    	 */
    	public boolean userVerify(){
    		boolean userVerify = false;
    		try {
    			DirContext authContext = new InitialDirContext(env);
    			userVerify = true;
    			authContext.close();
    		} catch (AuthenticationException authEx) {
    			//System.out.println("Authentication failed!");
    			userVerify = false;
    		} catch (NamingException namEx) {
    			//System.out.println("Something went wrong!");
    			userVerify = false;
    		} 
    		return userVerify;
    	}
    	
    
    	/**
    	 * METODO PER LA LETTURA DI UN PARAMETRO SU LDAP
    	 * 
    
    	 * Il metodo ricerca un parametro per l'utente specificato e ne restituisce il rispettivo valore
    	 * 
    	 * @param paramToResearch
    	 * Parametro da cercare
    	 * @return
    	 * Restituisce il valore del parametro cercato
    	 * @exception
    	 * Il metodo restituisce ""
    	 */
    	public String retriveParameter(String paramToResearch){
    		String returnValue = "";
    		try{
    			DirContext ctx = new InitialDirContext(env);
    			String results;
    			String[] sAttrIDs = new String[1];
    			sAttrIDs [ 0 ] = paramToResearch;
    
    			/* Get the attributes requested */
    			Attributes aAnswer = ctx.getAttributes(env.get(Context.SECURITY_PRINCIPAL).toString(),sAttrIDs);
    			NamingEnumeration enumUserInfo = aAnswer.getAll();
    			while(enumUserInfo.hasMoreElements()) {
    				results = (enumUserInfo.nextElement().toString());
    				returnValue = results.substring(6);
    			}
    		} catch (NamingException e) {
    			System.out.println(e.getMessage());
    		}
    		return returnValue;
    	}
    	
    	
    	/**
    	 * METODO PER LA LETTURA DI UN PARAMETRO SU LDAP SPECIFICANDO UN UTENTE
    	 * 
    
    	 * Il metodo ricerca un parametro per l'utente specificato e ne restituisce il rispettivo valore
    	 * 
    	 * @param userName
    	 * Utente su cui cercare un parametro
    	 * @param paramToResearch
    	 * Parametro da cercare
    	 * @return
    	 * Restituisce il valore del parametro cercato
    	 * @exception
    	 * Il metodo restituisce ""
    	 */
    	public String retriveParameter(String userName, String paramToResearch){
    
    		String indirizzoMail = "";
    		try{
    			DirContext ctx = new InitialDirContext(env);
    			String results;
    			String[] sAttrIDs = new String[1];
    			sAttrIDs [ 0 ] = paramToResearch;
    
    			/* Get the attributes requested */
    			Attributes aAnswer = ctx.getAttributes("CN=" + userName + "," + ou + "," + dc, sAttrIDs);
    			NamingEnumeration enumUserInfo = aAnswer.getAll();
    			while(enumUserInfo.hasMoreElements()) {
    				results = (enumUserInfo.nextElement().toString());
    				indirizzoMail = results.substring(6);
    			}
    		} catch (NamingException e) {
    			System.out.println(e.getMessage());
    		}
    		return indirizzoMail;
    	}	
    
    	
    	/**
    	 * METODO PER LA SCRITTURA A VIDEO DI TUTTI I PARAMETRI
    	 * 
    
    	 * Il metodo scrive a video tutti i parametri assegnati all'utente con cui si effettua la connessione
    	 */
    	public void writeListParameter(){
    		try{
    			DirContext ctx = new InitialDirContext(env);
    			String results;
    			Attributes aAnswer =ctx.getAttributes(env.get(Context.SECURITY_PRINCIPAL).toString());
    			NamingEnumeration enumUserInfo = aAnswer.getAll();
    			while(enumUserInfo.hasMoreElements()) {
    				results = (enumUserInfo.nextElement().toString());
    				System.out.println(results);
    			}
    		} catch (NamingException e) {
    			System.out.println(e.getMessage());
    		}
    	}
    	
    	
    	/**
    	 * METODO PER LA SCRITTURA A VIDEO DI TUTTI I PARAMETRI DI UN UTENTE SPECIFICO
    	 * 
    
    	 * Il metodo scrive a video tutti i parametri assegnati ad un utente specifico
    	 * 
    	 * @param username
    	 * Utente per cui ricercare tutti i parametri
    	 */
    	public void writeListParameter(String userName){
    		try{
    			DirContext ctx = new InitialDirContext(env);
    			String results;
    			Attributes aAnswer = ctx.getAttributes("CN=" + userName + "," + ou + "," + dc);
    			NamingEnumeration enumUserInfo = aAnswer.getAll();
    			while(enumUserInfo.hasMoreElements()) {
    				results = (enumUserInfo.nextElement().toString());
    				System.out.println(results);
    			}
    		} catch (NamingException e) {
    			System.out.println(e.getMessage());
    		}
    	}
    
    
    }
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    0
    mi aggancio a questo thread, per rimanere in tema.

    con l'esempio standard della sun (che e' praticamente uguale a quello postato da morphy) riesco a collegarmi tranquillamente, fornendo nome utente e password di amministrazione, ma se voglio autenticarmi usando un altro utente, presente all'interno del server LDAP, non riesco.

    come posso fare per autenticare gli utenti? forse devo loggarmi a ldap come amministratore e poi recuperare i dati di ogni singolo utente, confrontando la password a mano? spero di no
    ATTENZIONE

    Non sono piu' presente sul forum. Ma potrei tornare a rompere le balle all'improvviso per poi sparire di nuovo.

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    Originariamente inviato da Druzya
    mi aggancio a questo thread, per rimanere in tema.

    con l'esempio standard della sun (che e' praticamente uguale a quello postato da morphy) riesco a collegarmi tranquillamente, fornendo nome utente e password di amministrazione, ma se voglio autenticarmi usando un altro utente, presente all'interno del server LDAP, non riesco.

    come posso fare per autenticare gli utenti? forse devo loggarmi a ldap come amministratore e poi recuperare i dati di ogni singolo utente, confrontando la password a mano? spero di no
    no usi un new LDAPHelper e gli passi l'user e la psw dell'utente e verifichi con la funzione userVerify() se ti sei connesso..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    0
    no, semplicemente gli utenti si controllano con "uid=" non con "cn=", tutto qui
    ATTENZIONE

    Non sono piu' presente sul forum. Ma potrei tornare a rompere le balle all'improvviso per poi sparire di nuovo.

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ??? oddio... e cosa significa se su sul mio ldap riesco a controllarli con cn ?
    che sono tutti utenti amministratori ??? VVoVe:
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    0
    Originariamente inviato da morphy79
    ??? oddio... e cosa significa se su sul mio ldap riesco a controllarli con cn ?
    che sono tutti utenti amministratori ??? VVoVe:
    ehm... si?

    poi magari mi sbaglio, ma una controllatina la darei, fossi in te.
    ATTENZIONE

    Non sono piu' presente sul forum. Ma potrei tornare a rompere le balle all'improvviso per poi sparire di nuovo.

  9. #9
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ok tk
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  10. #10
    Utente di HTML.it L'avatar di Cool81
    Registrato dal
    Dec 2008
    Messaggi
    160

    Service directory

    Sto cercando di connettermi ad un ldap seguendo i passi della connessione e dell'autenticazione come riportati sopra.

    Il problema è che non riesco a fare la connessione sicuramente perchè sbaglio qualcosa.
    Devo dire che sto incontrando non poche difficoltà ad interagire con ldap, ad es. cosa posso passare come Context.INITIAL_CONTEXT_FACTORY? Quello riportato sopra o altro? se altro cosa?


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.