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());
}
}
}