Riprendendo quanto esposto nel capitolo precedente, per eseguire l'applicazione di test dal vostro PC di casa, sono necessari ulteriori interventi oltre all'installazione delle due App (Android e Java). Se usiamo una macchina presente sulla nostra rete casalinga, il server di backend (il Server B) non sarà direttamente visibile su Internet. Il problema è che gli authorization server normalmente sono abilitati a lavorare solo con server disponibili su internet e dotati di nome.
Per fare in modo che l'Authorization Server di Facebook sia in grado di vedere la nostra App OAuth-Test-Backend
, sarà necessario utilizzare un sistema di Dynamic DNS in modo da associare all'indirizzo IP del nostro router ADSL o fibra un nome statico e configurare il nostro router al fine di mappare il nome che daremo alla nostra Web App di backend.
Come avrete capito, prima di poter vedere effettivamente all'opera OAuth e Scribe, sarà necessario effettuare una serie di operazioni di preparazione:
- Registrazione su un server di Dynamic Domain Name System (DDNS) dell'IP del nostro router al fine di dargli un nome.
- Configurazione del port forwarding sul nostro router.
Nei prossimi paragrafi vedremo come svolgere queste attività.
OAuth-Test: configurazione DDNS
L'Authorization Authority, nel caso in esempio di Facebook, deve essere in grado di referenziare la parte della nostra applicazione che risiede sul server. Per rendere possibile questo, dobbiamo innanzitutto associare l'indirizzo IP con cui è collegato il router ADSL/fibra ad Internet.
Per le prove svolte ci si è basati su un servizio gratuito (almeno nella sua forma base) di Dynamic Domain Name System: NoIP
Una volta effettuata la registrazione ed avendo avuto accesso alla dashboard del sito sarà possibile registrare un nuovo hostname:
Facendo questa operazione dalla propria postazione domestica, in fase di registrazione verrà automaticamente recuperato l'indirizzo IP del nostro router.
Nell'esempio oggetto in questa guida esso è oauth-test.ddns.net
. Volendo riprodurre l'esempio sarà necessario utilizzare un nome diverso. Una volta completata la registrazione il router della rete domestica sarà richiamabile da Internet con il nome appena associato.
OAuth-Test: impostazione del Port Forwarding sul router
Con il termine port forwarding si intende quell'operazione con la quale la porta di un dispositivo viene rimappata su un'altra porta di un altro dispositivo. Come in figura 1, il router d'esempio ha un indirizzo IP 93.62.246.89
(ovviamente un esempio). Il nostro Pc con Apache Tomcat opera invece all'interno di una rete locale con un indirizzo visibile solo all'interno della nostra rete domestica.
Nella figura riportata questo indirizzo è 192.168.0.4
. Quello che dobbiamo fare è mappare la porta 80
dell'indirizzo del router 93.62.246.89
con la porta 8080
dell'IP 192.168.0.4
, ovvero la porta su cui si metterà in ascolto il Tomcat che ospiterà il nostro server di prova.
Questo tipo di intervento dipende dal modello di router che si sta utilizzando. L'importante è mappare la porta pubblica 80
verso la porta 8080
del nostro server di test.
OAuth-Test: esecuzione
Giunti a questo punto, tutte le operazioni necessarie alla predisposizione dell'ambiente per far funzionare OAuth-Test
sono state eseguite. Non rimane che avviare Tomcat sulla macchina di sviluppo ed eseguire l'App Android dall'emulatore o dal dispositivo per il test.
Scribe: conclusioni
L'autenticazione è un tema ampio e complesso e OAuth è un protocollo di autenticazione di notevole successo. In ambiente Java esiste scribe una libreria Open Source scritta in Java in grado di colloquiare mediante OAuth con i principali Authorization Server.
Come progetto d'esempio associato a questa sezione è stato presentato un sistema suddiviso in due parti: un front-end rappresentato da un'applicazione Android ed un back-end definito in un'applicazione web scritta in Java. Scribe è stato utilizzato nel back-end.