I directory service per ottimizzare l’e-business

Da qualche anno Sun fornisce agli sviluppatori un insieme di Api (Application Programming Interface) in Java per accedere alle informazioni di servizi di directory.

I servizi di directory sono una componente fondamentale della gestione delle informazioni su una rete di grosse dimensioni. Una directory è una struttura paragonabile a un database: ci si possono inserire delle informazioni per poi recuperarle. Di conseguenza, un servizio di directory è una directory più il protocollo di rete usato per accedervi. Il servizio di directory di cui tratteremo in questo articolo, che è oramai diventato lo standard per questo genere di servizi, è Ldap (Lightweight Directory Access Protocol); originariamente sviluppato come front-end del più complesso protocollo X.500, Ldap ha subito due revisioni grazie a cui è divenuto un protocollo leggero per l'accesso alle informazioni. Una caratteristica molto importante di Ldap è che il protocollo definisce come un client possa accedere alle informazioni sul server, non come queste informazioni debbano essere organizzate: questo gli permette di essere un front-end generico che può essere utilizzato per un qualsiasi servizio che fornisca dati.

Il protocollo Ldap, quindi, prevede l'autenticazione dei client per fornire privilegi di lettura, inserimento, ricerca e confronto dei dati; a ogni livello dell'albero delle informazioni è possibile definire privilegi per singoli utenti o gruppi

Da qualche anno Sun fornisce agli sviluppatori un insieme di Api (Application Programming Interface) in Java per accedere alle informazioni di servizi di directory. L'architettura del framework è stata disegnata in maniera così astratta da rendere possibile l'accesso a server Ldap, file system o server Dns. Dalla versione 1.1 del Jdk, il package Jndi (Java Naming and Directory Interface) è disponibile come estensione, anche se dall'ultima release, la 1.3, il package Jndi è incluso direttamente nel J2Se (Java 2 Platform, Standard Edition).

Come costruire i Ds


L'architettura Jndi fornisce un'interfaccia chiamata Context che rappresenta un nodo dell'albero; l'interfaccia DirContext estende quest'interfaccia per poter manipolare le entry di un servizio di directory Ldap, e rappresenta il punto di accesso all'albero della directory.

Agli sviluppatori interessa che nel listato init.java per prima cosa viene specificato chi fornirà il servizio di naming per quest'istanza del DirContext: la classe "com.sun.jndi.ldap.LdapCtxFactory" rappresenta, quindi, un server Ldap ed è fornita insieme a tutta l'architettura. Successivamente è specificato l'indirizzo del server e la porta su cui sta girando; il tipo di autenticazione può essere "none" per la consultazione dei dati senza autenticarsi, "simple", per specificare un "Distinguished Name" e una password che vengono inviati al server in chiaro, oppure "strong" per specificare uno dei numerosi metodi supportati per cifrare l'invio dei dati. Le righe di codice successive specificano il nome tramite cui autenticarsi e la relativa password; l'ultima istruzione restituisce un oggetto della classe "DirContext" con cui si può interagire con il server Ldap.

Una volta ottenuto il "DirContext" lo si utilizza per interrogarlo sui dati contenuti all'interno del server Ldap (listato list.java). Il metodo "list" permette di specificare a partire da quale punto dell'albero recuperare i dati che sono su quel livello e in tutti i livelli sottostanti.
Un'altra operazione che si può eseguire sull'albero è, ovviamente, la ricerca di una entry specifica (listato search.java). Per fare ciò si istanzia un oggetto della classe "Attributes" per indicare quale entry si vuole cercare; il metodo "search" ha bisogno di un parametro che indica da quale punto dell'albero cercare quella entry. Per inserire una entry nell'albero i passi da compiere sono semplici (listato add.java): si istanzia l'oggetto da inserire nell'albero e poi si chiama il metodo "bind" indicando dove posizionare e quale oggetto inserire.

CONDIVIDI

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here