## FAQ: securizzazione di applicazioni

In questa sezione sono riportate le domande più frequenti emerse durante l' utilizzo di guigen relative alle tematiche di securizzazione dell'applicazione

Q: La mia applicazione necessita di un meccanismo di autenticazione: quali opzioni ho a disposizione e come faccio per attivarle?

A: Per rendere soggetta ad autenticazione un'applicazione modellata con guigen è necessario modellare un AuthenticationMethod sul SecurityModel. Le modalità di autenticazione disponibili sono:

- SSOBARTSSO: da utilizzarsi quando il sistema di autenticazione del portale di esposizione dell'applicazione è SSOBART:
- OPAUTHSSO: da utilizzarsi quando il sistema di autenticazione del portale di esposizione dell'applicazione è Quello di Oracle Portal (tramite libreria client OPAUTH):
- ShibbolethSSO: da utilizzarsi quando il sistema di autenticazione del portale di esposizione dell'applicazione è Shibboleth:

Q: Ho modellato un meccanismo di autenticazione nel SecurityModel. Come posso accedere alle informazioni relative all'utente correntemente collegato?

A: Le informazioni relative all'utente collegato sono disponibili nell' ApplicationData "currentUser", che viene valorizzato opportunamente in maniera automatica dal sistema di autenticazione.

CurrentUser è uno degli ApplicationData disponibile nell' AppDataGroup "common" fornito come modello/libreria.

Q: E' possibile utilizzare i servizi di IRIDE2 dall'interno del codice applicativo java?

A: Si, è possibile. Il bean `SecurityHelper` espone il client del servizio PEP di IRIDE2 per l'utilizzo da codice java. E' possibile referenziarlo nei bean spring dove occorre scrivere la logica di business e di conseguenza utilizzarlo.

Q: Ho bisogno di rendere la visibilità/abilitazione di un widget/voce di menu condizionata ai permessi dell'utente collegato: quali opzioni ho a disposizione?

A: E' possibile configurare su ciascun widget o su ciascuna voce di menu uno o più UISecurityConstraint. Ciascun constraint è legato ad uno dei due aspetti (visibilità/abilitazione).

I tipi di constraint che si possono utilizzare sono:

- UCBasedSecurityConstraint: basato sull'abilitazione dell'utente collegato ad un particolare use case
- RoleBasedSecurityConstraint: basato sull'appartenenza dell'utnete collegato ad uno specifico ruolo
- ActorBasedSecurityConstraint: basato sull'impersonificazione dell'utente collegato di un particolare actor
- CustomSecurityConstraint: permette di definire una logica completamente custom di constraint

Per il singolo elemento di interfaccia la logica di composizione della lista di constraint relativi ad uno dei due aspetti vincolabili (abilitazione/visibilità) è additiva (in OR) e correlata agli aspetti di visibilità/abilitazione comandati:

- Se non ci sono constraint modellati la visibilità/abilitazione è esclusivamente quella comandata
- Se ci sono n constraint modellati la visibilità/abilitazione è quella comandata se almeno uno dei constraint è verificato, disabilitata/invisibile in caso contrario, indipendentemente dallo stato comandato

Q: E' possibile utilizzare un meccanismo di autenticazione custom?

No, non è possibile. Sebbene esista la possibilità di modellare un CustomAuthentication, il generatore non funziona in presenza di questa opzione. E'necessario utilizzare il meccanismo di autenticazione previsto dal portale di esposizione.

A:

Q: Nella mia applicazione vi sono alcune funzioni/schermate che devono essere soggette ad autenticazione/autorizzazione, mentre altre devono essere ad accesso libero: è possibile modellare questo comportamento?

A: No, non è possibile.

Q: Ho modellato un metodo di autenticazione e alcuni security constraint basati su ruoli/casi d'uso/attori, ma il comportamento dei constraint non è quello atteso: da cosa può dipendere?

A: La risoluzione delle abilitazioni è effettuata delegando le richieste al servizio PEP di IRIDE2. Se il comportamento non è quello atteso ci sono buone probabilità che il problema risieda in un errore di configurazione delle abilitazioni prprio su IRIDE2: verificare con il gruppo preposto.