Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
custom:development:authentications [2020/07/02 15:48] giorgio.scali |
custom:development:authentications [2020/07/02 15:55] (versione attuale) giorgio.scali |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
======Guida ai diversi tipi di autenticazione====== | ======Guida ai diversi tipi di autenticazione====== | ||
+ | |||
=====Autenticazione con Utente Anonimo===== | =====Autenticazione con Utente Anonimo===== | ||
Linea 5: | Linea 6: | ||
Per accedere tramite utente anonimo è necessario impostare, lato webclient, determinate porzioni di codice che attivino il riconoscimento di tale utente da parte del sistema di autenticazione di Geoweb. | Per accedere tramite utente anonimo è necessario impostare, lato webclient, determinate porzioni di codice che attivino il riconoscimento di tale utente da parte del sistema di autenticazione di Geoweb. | ||
- | \\ | + | ===Procedure di configurazione=== |
- | **Procedure di configurazione** | + | |
In Geoweb, il sistema di riconoscimento di un utente anonimo è già configurato, sebbene sia disabilitato di default. Perciò, per abilitare questo tipo di autenticazione, è necessario semplicemente commentare e decommentare alcune porzioni di codice all'interno di uno specifico file. | In Geoweb, il sistema di riconoscimento di un utente anonimo è già configurato, sebbene sia disabilitato di default. Perciò, per abilitare questo tipo di autenticazione, è necessario semplicemente commentare e decommentare alcune porzioni di codice all'interno di uno specifico file. | ||
Linea 15: | Linea 15: | ||
* GwAnonymousAccessService.java | * GwAnonymousAccessService.java | ||
- | \\ | + | ===Commentare e decommentare il codice=== |
- | **Commentare e decommentare il codice** | + | |
Il primo passo è il più importante: //spring-security.xml// è il file in cui viene configurata la gestione degli accessi e delle autenticazioni. Al suo interno basterà cercare il tag ''@@@ANONYMOUS_USER@@@'' e seguire quanto riportato nei commenti a seguito di esso, poiché questi contengono tutte le informazioni necessarie su quali parti di codice è necessario commentare e quali decommentare. | Il primo passo è il più importante: //spring-security.xml// è il file in cui viene configurata la gestione degli accessi e delle autenticazioni. Al suo interno basterà cercare il tag ''@@@ANONYMOUS_USER@@@'' e seguire quanto riportato nei commenti a seguito di esso, poiché questi contengono tutte le informazioni necessarie su quali parti di codice è necessario commentare e quali decommentare. | ||
Linea 27: | Linea 26: | ||
scelto tra quelli già presenti o semplicemente creato ad-hoc per l'utente anonimo (scelta consigliata). | scelto tra quelli già presenti o semplicemente creato ad-hoc per l'utente anonimo (scelta consigliata). | ||
- | \\ | + | ===Abilitare o disabilitare servizi di interoperabilità per autenticazione anonima=== |
- | **Abilitare o disabilitare servizi di interoperabilità per autenticazione anonima** | + | |
All'interno del file //configuration.properties//, sotto la sezione //ANONYMOUS USER//, è presente una proprietà chiamata ''anonymousUser.interoperabilityServicesAllowed''. Tramite questa proprietà è possibile abilitare o disabilitare l'accesso ai servizi di interoperabilità da parte di un utente anonimo. Ciò avviene attraverso un controllo effettuato dalla funzione ''getInteroperabilityServicesAllowed()'' fornito dal servizio //GwAnonymousAccessService.java//. | All'interno del file //configuration.properties//, sotto la sezione //ANONYMOUS USER//, è presente una proprietà chiamata ''anonymousUser.interoperabilityServicesAllowed''. Tramite questa proprietà è possibile abilitare o disabilitare l'accesso ai servizi di interoperabilità da parte di un utente anonimo. Ciò avviene attraverso un controllo effettuato dalla funzione ''getInteroperabilityServicesAllowed()'' fornito dal servizio //GwAnonymousAccessService.java//. | ||
- | \\ | + | ===Versioni di Geoweb precedenti alla 4.4.0=== |
- | **Versioni di Geoweb precedenti alla 4.4.0** | + | |
Nelle versioni precedenti di Geoweb, l'abilitazione dell'utente anonimo può risultare più complessa a causa dell'assenza del suddetto tag. Nonostante ciò, le informazioni necessarie sono le stesse: di seguito saranno elencate le porzioni di codice che devono essere decommentate o (se assenti) inserite all'interno del file //spring-security.xml// per abilitare l'autenticazione anonima. | Nelle versioni precedenti di Geoweb, l'abilitazione dell'utente anonimo può risultare più complessa a causa dell'assenza del suddetto tag. Nonostante ciò, le informazioni necessarie sono le stesse: di seguito saranno elencate le porzioni di codice che devono essere decommentate o (se assenti) inserite all'interno del file //spring-security.xml// per abilitare l'autenticazione anonima. | ||
Linea 50: | Linea 47: | ||
**NOTA:** È fondamentale sapere che Geoweb funziona solo con la configurazione LDAP Active Directory! | **NOTA:** È fondamentale sapere che Geoweb funziona solo con la configurazione LDAP Active Directory! | ||
- | \\ | + | ===Ottenere le informazioni necessarie=== |
- | **Ottenere le informazioni necessarie** | + | |
La prima cosa da fare per configurare l'autenticazione tramite LDAP è ottenere i dati necessari allo stesso. Questi devono essere forniti dal cliente e comprendono un indirizzo LDAP ed eventuali numeri di porta configurati dal cliente, nel caso in cui egli non stia utilizzando le porte standard. | La prima cosa da fare per configurare l'autenticazione tramite LDAP è ottenere i dati necessari allo stesso. Questi devono essere forniti dal cliente e comprendono un indirizzo LDAP ed eventuali numeri di porta configurati dal cliente, nel caso in cui egli non stia utilizzando le porte standard. | ||
- | \\ | + | ===Inserire le informazioni nella configurazione=== |
- | **Inserire le informazioni nella configurazione** | + | |
Una volta ottenute le informazioni, queste andranno inserite nell'apposita porzione di codice all'interno del file //spring-security.xml// di cui viene accennato sopra. | Una volta ottenute le informazioni, queste andranno inserite nell'apposita porzione di codice all'interno del file //spring-security.xml// di cui viene accennato sopra. | ||
Linea 71: | Linea 66: | ||
**NOTA:** Nel caso in cui l'utente non stia utilizzando le porte standard, questo è il punto in cui vanno inseriti gli eventuali numeri di porta da lui forniti. | **NOTA:** Nel caso in cui l'utente non stia utilizzando le porte standard, questo è il punto in cui vanno inseriti gli eventuali numeri di porta da lui forniti. | ||
- | \\ | + | ===Configurare riferimento per authentication manager=== |
- | **Configurare riferimento per authentication manager** | + | |
Una volta inseriti i dati, un'altra porzione di codice di cui occuparsi è quella relativa all'//authentication manager//, tramite il quale il servizio di autenticazione troverà il riferimento al LDAP che è stato appena impostato. | Una volta inseriti i dati, un'altra porzione di codice di cui occuparsi è quella relativa all'//authentication manager//, tramite il quale il servizio di autenticazione troverà il riferimento al LDAP che è stato appena impostato. | ||
Linea 82: | Linea 76: | ||
**NOTA:** La stringa che segue il parametro "ref", in questo caso 'adAuthenticationProvider', fa riferimento al parametro ID del bean nel codice precedente. | **NOTA:** La stringa che segue il parametro "ref", in questo caso 'adAuthenticationProvider', fa riferimento al parametro ID del bean nel codice precedente. | ||
+ | |||
=====Autenticazione con OAuth2===== | =====Autenticazione con OAuth2===== | ||
Linea 90: | Linea 85: | ||
all'interno della sezione di questa Wiki dedicata agli utenti. | all'interno della sezione di questa Wiki dedicata agli utenti. | ||
- | \\ | + | ===Recuperare dati di accesso=== |
- | **Recuperare dati di accesso** | + | |
È importante sapere che, in Geoweb, le chiamate tramite OAuth2 funzionano tramite un sistema di token: utilizzando determinati parametri, l'utente può effettuare una richiesta per un token, il quale verrà utilizzato per aggiornare un ticket di accesso, necessario per ottenere l'autorizzazione ai servizi esterni di Geoweb. | È importante sapere che, in Geoweb, le chiamate tramite OAuth2 funzionano tramite un sistema di token: utilizzando determinati parametri, l'utente può effettuare una richiesta per un token, il quale verrà utilizzato per aggiornare un ticket di accesso, necessario per ottenere l'autorizzazione ai servizi esterni di Geoweb. | ||
Linea 102: | Linea 96: | ||
**NOTA:** Per questioni di sicurezza, è sempre consigliabile fornire credenziali (username e password) relative ad un account di Geoweb espressamente creato per questo scopo. | **NOTA:** Per questioni di sicurezza, è sempre consigliabile fornire credenziali (username e password) relative ad un account di Geoweb espressamente creato per questo scopo. | ||
- | \\ | + | ===client_id e client_secret=== |
- | **//client_id// e //client_secret//** | + | |
//client_id// e //client_secret// sono due valori specifici (paragonabili ad una coppia //username/password//) definiti all'interno del file //spring-security.xml//. All'interno di questo file bisognerà cercare il seguente tag: | //client_id// e //client_secret// sono due valori specifici (paragonabili ad una coppia //username/password//) definiti all'interno del file //spring-security.xml//. All'interno di questo file bisognerà cercare il seguente tag: | ||
Linea 118: | Linea 111: | ||
Ad ogni modo, l'utente dovrebbe essere in grado di ottenere questi dati tramite le informazioni fornite dalla sezione per gli utenti di questa Wiki. | Ad ogni modo, l'utente dovrebbe essere in grado di ottenere questi dati tramite le informazioni fornite dalla sezione per gli utenti di questa Wiki. | ||
+ | |||
=====Autenticazione con Header SM_USER===== | =====Autenticazione con Header SM_USER===== | ||
Linea 123: | Linea 117: | ||
L'autenticazione con l'header SM_USER avviene sfruttando come credenziali di accesso dei dati preimpostati e specificatamente codificati per questo scopo. Viene tipicamente utilizzata per autorizzare chiamate rivolte a Web Service, che possono di volta in volta essere integrati nei vari progetti di commessa. Ma funziona per tutte le chiamate. L'utilizzo ne è scoraggiato, in favore di altri tipi di autenticazine come OAuth2. Viene mantenuta in quei casi dove o ci siano difficoltà nell'implementare altri tipi di autenticazione, o in fase di develop, per poter testare velocemente i web services, bypassando possibili problemi derivanti dall'autenticazione, in ottica di affrontarli piu avanti. | L'autenticazione con l'header SM_USER avviene sfruttando come credenziali di accesso dei dati preimpostati e specificatamente codificati per questo scopo. Viene tipicamente utilizzata per autorizzare chiamate rivolte a Web Service, che possono di volta in volta essere integrati nei vari progetti di commessa. Ma funziona per tutte le chiamate. L'utilizzo ne è scoraggiato, in favore di altri tipi di autenticazine come OAuth2. Viene mantenuta in quei casi dove o ci siano difficoltà nell'implementare altri tipi di autenticazione, o in fase di develop, per poter testare velocemente i web services, bypassando possibili problemi derivanti dall'autenticazione, in ottica di affrontarli piu avanti. | ||
- | **Creazione credenziali** | + | ===Creazione credenziali=== |
Il primo passo è quello di creare le credenziali relative all'utente SM_USER. | Il primo passo è quello di creare le credenziali relative all'utente SM_USER. | ||
- | Esse devono essere dichiarate all'interno del file //configuration.properties//. | + | Esse devono essere dichiarate all'interno del file //configuration.properties// e sono le proprità ''preAuthUser'' e ''preAuthKey''. |
Per convenzione sotto la sezione ''PRE AUTHENTICATION CREDENTIALS (optional)'' del macro blocco ''A U T H E N T I C A T I O N'' | Per convenzione sotto la sezione ''PRE AUTHENTICATION CREDENTIALS (optional)'' del macro blocco ''A U T H E N T I C A T I O N'' | ||
Linea 150: | Linea 144: | ||
</code> | </code> | ||
- | \\ | + | ===Codificare le credenziali=== |
- | **Codificare le credenziali** | + | |
Una volta ottenute queste credenziali, sarà necessario codificare una concatenazione delle due stringhe, preAuthUser e preAuthKey, come nella formula seguente: | Una volta ottenute queste credenziali, sarà necessario codificare una concatenazione delle due stringhe, preAuthUser e preAuthKey, come nella formula seguente: | ||
Linea 167: | Linea 160: | ||
Per codificare una stringa con ''SHA512'', si può utilizzare uno dei tanti [[https://emn178.github.io/online-tools/sha512.html|tool online free]]. | Per codificare una stringa con ''SHA512'', si può utilizzare uno dei tanti [[https://emn178.github.io/online-tools/sha512.html|tool online free]]. | ||
- | \\ | + | ===Utilizzare il token=== |
- | **Utilizzare il token** | + | |
Una volta ottenuta la stringa bisogna utlizzarla come valore dell'header con nome ''SM_USER'' per ogni chiamata che necessita di essere autorizzata. | Una volta ottenuta la stringa bisogna utlizzarla come valore dell'header con nome ''SM_USER'' per ogni chiamata che necessita di essere autorizzata. | ||
- | <code> | + | ^ Header name ^ Header value ^ |
+ | | SM_USER | 8f8ef642349a8b961cb588b0a92901676970415f60a9d6e6961346c0969390c4d0afc50bd144207106df2e57707dddbe81f3684b267abd706034495f06398495 | | ||
- | SM_USER 8f8ef642349a8b961cb588b0a92901676970415f60a9d6e6961346c0969390c4d0afc50bd144207106df2e57707dddbe81f3684b267abd706034495f06398495 | ||
- | </code> | ||