Mulesoft è uno degli ESB (Enternet Service Bus) più utilizzati in ambito commerciale. Una delle tante funzionalità offerte da un ESB è quella di pubblicare delle API per la gestione di servizi o dei semplici end-point per recuperare o inviare dati da o a un microservizio. Questi end-point sono accessibili tramite il protocolo HTTP e i metodi: GET, POST, PUT, PATH, DELETE.
Nei giorni scorsi ho dovuto implementare dei semplici end-point che raccogliessero dati da varie fonti e li rendessero disponibili a una applicazione che stavo modificando. Non è stato difficile, e il passaggio più elaborato è stato quello di aggiungere l’autenticazione, in modo che i servizi fossero invocabili attraverso la Basic Authentication.
Questi sono i passaggi da seguire all’interno di Anypoint Studio 7.9.0:
- Creare un nuovo progetto Mule: “spring-basic-auth“.
- Trascinare dalla Mule Palette al nuovo flusso i seguenti nodi:
- Listener
- Basic security filter
- Set Payload
- Configurare il Listener nel modo seguente:
- Aggiungere la configurazione di un nuovo connettore cliccando sul simbolo “+” del campo Connector configurations e scrivere “/” nel campo Base path della maschera che si apre.
-
- Assicurarsi che nel campo Connector configurations sia selezionato connettore appena creato, che ha come nome di default “HTTP_Listener_config“.
- Nel campo Path indicare come nome dell’end point: “/getData“.
- Configurare il nodo Base security filter in questo modo:
- Nel campo Security Filter–>Realm scrivere: “esb-realm“
- Configurare il campo Set Payload in questo modo:
- Scrivere “Forza azzurri !!” nel campo Settings–>Value.
- Assicurarsi che il pulsante fx sia deselezionato come nell’immagine seguente.
- Nella Mule palette cliccare su “Add module” e trascinare il modulo Spring nella colonna dei moduli di questa app.
- Aggiungere in src/main/resources un file chiamato beans.xml con il contenuto seguente (scrivere {noop} prima della password dell’account per indicare che quella è la password non criptata):
- In Global Elements cliccare su Create, aggiungere gli elementi Spring Security manager e Spring Config e configurarli nel modo seguente.
- Spring Security manager, compilare i seguenti campi:
- Name: auth-provider
- Delegate reference: authenticationManager
- Spring config, compilare i seguenti campi:
- Name: beans.xml
- Eseguire il progetto: Project–>Run as –> Mule application.
- Aprire un browser e visitarle l’url: http://localhost:8081/getData
- Inserirendo l’account configurato nel file beans.xml: user1 / test, comparirà il seguente messaggio:
- Inserendo un account sbagliato l’accesso all’end-point sarà negato.
Progetto su BitBucket:
Questo è il progetto su BitBucket che contiene l’esempio di questo post: spring-basic-auth. In particolare, questo è il file file beans.xml usato in questo esempio.
Fonti e riferimenti:
- Enterprise Service Bus su Wikipedia.
- Mulesoft: Listener connector.
- Mulesoft: Mule4 – Spring module.
- Mulesoft: Download Anypoint Studio.
- Spring security3 “You cannot use a spring-security-2.0.xsd schema” su StackOverflow.
- Basic authentication using Spring di Sonali Chougule.