Security in Microfrontend
By Saverio Menin
Avere un microfrontend sulle nostre piattaforme interne è estremamente vantaggioso perché:
- possiamo utilizzare il componente ovunque
- la UX sarà uguale sulle piattaforme
- il team di sviluppo di quel servizio/componente sarà sempre lo stesso
- il down di un microfrontend non comprometterà la piattaforma
Questi aspetti ci hanno convinto ad iniziare un periodo di R&D per vedere come utilizzare i microfrontend e che sfide ci attendono.
Una delle sfide è sicuramente la sicurezza: Come fare per rendere sicuro un microfrontend?
La risposta a questa domanda è stata implementata in una serie di regole e di best-practice.
I punti chiave sono 2:
- autenticazione
- gestione degli accessi
- protezione dati in input
Protezione dati in input
I dati passati al Microfronted (utili per il suo funzionamento) devono sempre essere passati sotto JWT, questo ci permette di verificare l’autore del jwt e la validità dei dati
Autenticazione
È il fulcro della sicurezza.
Il JWT dei dati in input è il nostro autorizzatore frontend. Il JWT infatti verrà creato attraverso un’apposita API che ogni nostro microfrontend deve implementare.
L’API sarà chiamabile solo lato backend e verrà autorizzata con un APIkey (una per fornitore) così da invalidare facilmente il suo accesso.
Il JWT visto che lo creeremo lato servizio imposteremo sempre una scadenza, questo darà maggior sicurezza all’intero workflow.
Questo endpoint ci garantisce:
- sicurezza, solo il servizio del microfrontend conoscerà la chiave di crypt del JWT
- potremmo gestire l’accesso di un fornitore tramite il blocco dell’apikey oltre che tramite la gestione accessi
- accesso temporizzato con un determinato JWT
Gestione accessi
Anche l’accesso ad un microfrontend è importante per noi, perché essendo servizi interni, solo chi è autorizzato può usarlo.
L’autorizzazione quindi avviene in due ambiti:
- APIkey: descritta precedentemente
- CORS: il servizio avrà un cors per cui un dominio che utilizza il frontend non autorizzato, non potrà accedere alle risorse di backend e quindi non utilizzar eil microfrontend
Ricapitolando quindi ogni nostro microfrontend dovrà implementare e gestire oltre all logica du business:
- API per generazioen token JWT
- validazione token JWT
- lista domini autorizzati