jAPS 2.0 entando - Plugin LDAP

Do It The jAPS Way

Eugenio Santoboni

Prima e Completa versione in Italiano 
Chief Solution Engineer
AgileTec s.r.l.

William Ghelfi

Reviser 
Tzente s.r.l.

Legal Notice

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the Appendix entitled "GNU Free Documentation License".

The copyright holders make no representation about the suitability of this Document for any purpose. It is provided “as is” without expressed or implied warranty. If you modify this Document in any way, identify your resulting Document as a variant of this Document.

2011-02-18

Revision History
Revision 1.22011-02-18MEM

Controllo per il rilascio di jAPS 2.2.0

Revision 1.12010-03-31MEM

Controllo per il rilascio di jAPS 2.0.10

Modifica struttura capitoli

Revision 1.02009-05-02ES

Prima versione pubblica

Abstract

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del PluginLdap.


Chapter 1. Scopo del documento

Introduzione

Lo scopo di questo documento è quello di fornire una descrizione completa della struttura del Plugin LDAP.

A chi è destinato

Questo documento è destinato a chi intende conoscere le funzionalità del jAPS Plugin LDAP, e sta prendendo in considerazione la eventuale integrazione in un Ambiente di Produzione già funzionante o nel proprio Ambiente di Sviluppo (Progetto in IDE Eclipse).

Il documento è indirizzato sia a Sistemisti (responsabili di installazioni di Applicazioni su base jAPS 2.0) che a Java Developers (con una conoscenza base del Framework jAPS 2.0).

Prerequisiti

Per poter utilizzare efficacemente le informazioni contenute in questo documento, occorre un po' di esperienza su alcune tecnologie del web base: la piattaforma Java, gli strumenti di sviluppo Eclipse, il servlet engine Apache Tomcat, il database PostgreSQL, e del Framework jAPS 2.0. E' inoltre necessario aver letto il documento jAPS 2.0 - Plugin Pattern.

Riferimenti

Ulteriori informazioni possono essere richieste attraverso la mailing list ufficiale Google Group "japs-platform".

Per mandare un messaggio ai membri della lista, invia una mail a .

È inoltre possibile consultare la documentazione presente in:

jAPS 2.0 Project - Sito per gli sviluppatori

Chapter 2. Caratteristiche del Plugin LDAP

Il Plugin LDAP consente la connessione ad una Directory LDAP (compreso Directory Microsft) e la gestione di utenze di dominio nella stessa modalità in cui vengono gestite le utenze locali di jAPS 2.0 entando.

Il Plugin permette di delegare le operazioni di autenticazione alla directory, senza modificare le modalità di gestione delle autorizzazioni, che vengono sempre gestire (indifferentemente sia su utenze locali che remote) attraverso le interfacce utente in dotazione alla Distribuzione Base di jAPS 2.0 entando.

Table 2.1. Riassunto delle caratteristiche

CodiceNomeTipoVersione del PluginVersione di jAPS 2.0 entando
jpldapLDAPModification1.12.2.0 -
jpldapLDAPModification1.02.0.2 - 2.0.10

Caratteristiche del Plugin LDAP

Funzionalità

Il Plugin non aggiunge nessuna nuova interfaccia utente, ma consente esclusivamente di estrarre le utenze da una directory esterna, e gestirle nella stessa modalità in cui vengono gestite le utenze locali di jAPS (con esclusione delle operazioni di modifica e rimozione).

Chapter 3. Installazione e Integrazione Plugin

Installazione e Integrazione Plugin

Caratteristiche tecniche

Il Plugin ha la caratteristica di Modification, in quanto modifica le modalità di gestione delle utenze di sistema consentendo l'operazione di autenticazione su server esterni basati su LDAP. Il Plugin non modifica la definizione e associazioni delle autorizzazioni, che possono essere gestite, attraverso le Interfacce di Amministrazione di jAPS 2.0, in maniera trasparente sia su utenze locali (cioè definite nel db serv di jAPS 2.0) che remote.

Il Plugin modifica un elemento base del core di jAPS 2.0, il Servizio Gestore Utenti. In particolare il Plugin effettua la sovrascrittura del bean UserManager del contesto di Spring, inserendo le funzioni necessarie per poter supportare le operazioni autenticazione (effettuate dal Servizio Authentication Provider) ed effettuare le operazioni di ricerca e sulla Directory.

Il Plugin agisce in Sola Lettura

Il Plugin non consente la modifica o la rimozione di oggetti della Directory, o la modifica della sua struttura. Il Plugin (e di conseguenza jAPS) non è delegato della gestione di utenze la cui responsabilità è esclusiva del gestore del Dominio.

Descrizione del Pacchetto

Il pacchetto del Plugin contiene l'insieme delle cartelle (cartelle doc ed src più il file README) definite nel documento di descrizione generale del jAPSPlugin Pattern.

In particolare, la directory src è strutturata come di seguito descritto:

  • Directory java. Contiene le sorgenti java complete e i test jUnit del Plugin.

  • Directory webapp. La directory contiene tutti i file necessari alla webapp. Siccome il Plugin non presenta nessuna interfaccia utente, la directory contiene esclusivamente i file di definizione dei bean a servizio del layer di Business del Modello di jAPS 2.0.

Integrazione in Ambiente di Produzione

Nota: da questo momento in poi ci riferiremo a mioportale come all'installazione di jAPS 2.0 entando in esecuzione sul server nel quale si vuole intervenire.

Per eseguire l'installazione in una applicazione Web in produzione basata sulla versione di jAPS 2.0 dichiarata compatibile con il Plugin, i passi da eseguire sono i seguenti:

  • Arrestare il servlet container

  • Copiare il contenuto della directory src/webapp/WEB-INF/lib del pacchetto dato in dotazione, all'interno della directory mioportale/WEB-INF/lib/ in produzione.

  • Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioportale/WEB-INF/plugins/ in produzione. Creare la directory plugins se non è presente.

  • Inserire i parametri di configurazione (ldap.provider.url, ldap.provider.securityPrincipal, ldap.provider.securityCredentials, ldap.provider.userObjectClass, ldap.provider.userIdAttributeName, ldap.provider.filterGroup, ldap.provider.filterGroupAttributeName) adeguatamente configurati, nel file mioportale/WEB-INF/conf/systemParams.properties in produzione.

Installazione in Ambiente di Sviluppo

Per eseguire l'installazione in un progetto Eclipse basato sulla versione di jAPS 2.0 dichiarata compatibile con il Plugin, i passi da eseguire sono i seguenti:

  • Copiare il contenuto della directory src/webapp/WEB-INF/plugins del pacchetto dato in dotazione, all'interno della directory mioprogetto/WebContent/WEB-INF/plugins/.

  • Inserire i parametri di configurazione (descritti in dettaglio nel prossimo capitolo) ldap.provider.url, ldap.provider.securityPrincipal, ldap.provider.securityCredentials, ldap.provider.userObjectClass, ldap.provider.userIdAttributeName, ldap.provider.filterGroup e ldap.provider.filterGroupAttributeName), adeguatamente configurati, nel file mioprogetto/WebContent/WEB-INF/conf/systemParams.properties, mioprogetto/WebContent/WEB-INF/conf/ANTsystemParams.properties e mioprogetto/admin/test/systemParams.properties.

  • Copiare il contenuto della directory src/java/main/com nella directory mioprogetto/src/com del proprio progetto.

Una volta eseguiti i passi sopra descritti, far partire il progetto da Eclipse e verificare la corrette connessione con il server ldap desiderato, verificando la presenza delle utenze attese nella lista delle utenze di sistema visualizzate nell'apposita Interfaccia di Amministrazione.

Chapter 4. Plugin configuration

Configurazione del plugin LDAP

Il Plugin necessita di una serie di parametri per poter effettuare correttamente la connessione con la specifica Directory LDAP (sia OpenLDAP che Microsoft Active Directory).

I parametri vanno inseriti come variabili d'ambiente all'interno del file di configurazione /META-INF/context.xml.

Example 4.1. Una possibile configurazione di LDAP

				<!-- jpldap -->
<Environment name="ldap.provider.url"
    value="ldap://192.168.4.11:389/dc=mydomain,dc=com"
    type="java.lang.String" override="false" />
<Environment name="ldap.provider.securityPrincipal"
    value="" type="java.lang.String" override="false" />
<Environment name="ldap.provider.securityCredentials"
    value="" type="java.lang.String" override="false" />
<Environment name="ldap.provider.userObjectClass"
    value="posixAccount" type="java.lang.String" override="false" />
<Environment name="ldap.provider.userIdAttributeName"
    value="uid" type="java.lang.String" override="false" />
<Environment name="ldap.provider.filterGroup"
    value="" type="java.lang.String" override="false" />
<Environment name="ldap.provider.filterGroupAttributeName"
    value="" type="java.lang.String" override="false" />
				

Notare che la dichiarazione degli stessi parametri assume una forma differente per i file myproject/admin/test/systemParams.properties e myproject/WebContent/WEB-INF/conf/ANTsystemParams.properties

Example 4.2. Dichiarazione dei parametri del plugin LDAP per i file *.properties

				
ldap.provider.url=ldap://192.168.4.11:389/dc=mydomain,dc=com
ldap.provider.securityPrincipal=
ldap.provider.securityCredentials=
ldap.provider.userObjectClass=posixAccount
ldap.provider.userIdAttributeName=uid
ldap.provider.filterGroup
ldap.provider.filterGroupAttributeName=
				

I parametri da inserire sono:

  • ldap.provider.url

    Url del server LDAP a cui connettersi. La valorizzazione del parametro è Obbligatoria.

    Example 4.3. Provider Url Parameter

    ldap://192.168.4.11:389/dc=mydomain,dc=com

  • ldap.provider.securityPrincipal

    Nome utente dell'utenza attraverso la quale connettersi con il server. Non è necessario specificare il parametro nel caso si voglia effettuare una connessione anonima al server ldap, se il server lo consente (Microsoft Active Directory non consente connessioni anonime). Il parametro rappresenta l'identificavo univoco dell'utente tramite il quale effettuare la connessione, cioè il suo Distinguished Name; il Distinguished Name è formato dal nome stesso dell'entry (detto Relative Distinguished Name, solitamente ricavato da qualche attributo della entry) seguito dai nomi delle entry-genitore, separati da virgole.

    Example 4.4. Security Principal Parameter

    						cn=admin,dc=mydomain,dc=com
    					

  • ldap.provider.securityCredentials

    Password dell'utenza attraverso la quale connettersi con il server. Non è necessario specificare il parametro nel caso si voglia effettuare una connessione anonima al server ldap, se il server lo consente (Microsoft Active Directory non consente connessioni anonime).

  • ldap.provider.userObjectClass

    Nome della objectClass di riferimento per le entry di tipo utente. La valorizzazione del parametro è Obbligatoria. Nel caso di connessioni con Domini Microsoft Active Directory, il parametro deve assumere il valore user. Nel caso di Domini basati su OpenLDAP, di solito, assume il valore posixAccount.

  • ldap.provider.userIdAttributeName

    Nome dell'attributo della entry che rappresenta l'identificativo univoco dell'utenza LDAP. La valorizzazione del parametro è Obbligatoria. Nel caso di connessioni con Domini Microsoft Active Directory, il parametro deve assumere il valore sAMAccountName. Nel caso di Domini basati su OpenLDAP, di solito, assume il valore uid.

  • ldap.provider.filterGroup

    Specifica il nome completo del gruppo LDAP a cui devono appartenere gli utenti erogati dal servizio. Nel caso non si voglia effettuare nessun filtro sulle utenze, può essere lasciato vuoto.

  • ldap.provider.filterGroupAttributeName

    Nome dell'attributo della entry che indica l'appartenenza a gruppi LDAP. Nel caso non si voglia effettuare nessun filtro sulle utenze, può essere lasciato vuoto.

Configurazione del bean del servizio (opzionale)

Se LDAP non è configurato propriamente la risposta del server può essere così grande da risultare in un eccessivo rallentamento delle prestazioni che poi può causare un blocco complessivo del sistema.

Per prevenire questa situazione, l'XML che contiene il bean che dichiara il servizio LDAP, WEB-INF/plugins/jpldap/conf/managers/baseManagersConfig.xml contiene una property commentata:

<!-- <property name="searchResultMaxSize">
    <value>100</value>
</property> -->
				

Questo parametro può essere attivato per limitare il numero dei risultati restituiti dal manager LDAP in modo da poter valutare il degrado prestazionale durante il fine tuning del sistema.