Abbiamo in programma di ridefinire il nostro sistema aziendale in un sistema basato su micro-servizi. Questi microservizi verranno utilizzati dalle nostre applicazioni aziendali interne e, se necessario, da partner di terze parti. Uno per la prenotazione, uno per i prodotti ecc.
Non siamo sicuri su come gestire ruoli e ambiti. L'idea è di creare 3 ruoli utente di base come amministratori, agenti e utenti finali e consentire alle app consumer di ottimizzare gli ambiti, se necessario.
- Gli amministratori possono creare, aggiornare, leggere ed eliminare tutto risorse predefinite (per la loro azienda).
- Gli agenti possono creare, aggiornare e leggere i dati per la loro azienda.
- Gli utenti finali possono creare, aggiornare, eliminare e leggere i dati, ma non possono accedere agli stessi endpoint come agenti o amministratori. Saranno anche in grado di creare o modificare dati, ma non allo stesso livello degli agenti o degli amministratori. Ad esempio, gli utenti finali possono aggiornare o leggere le informazioni del proprio account, così come l'agente sarà in grado di farlo per loro, ma non possono vedere o aggiornare le note di amministrazione.
Diciamo che gli agenti di default possono creare, leggere e aggiornare ogni risorsa per la loro azienda e che è il loro ambito massimo che può essere richiesto per il loro token / sessione, ma gli sviluppatori di applicazioni client (API consumer) hanno deciso che uno di i loro agenti possono leggere e creare solo determinate risorse.
È una buona pratica gestirlo nella nostra sicurezza interna, e lasciare che scrivano quei dati nel nostro database, o lasciare che i client gestiscano quello internamente richiedendo un token con un ambito minore, e lascia che scrivano quale agente avrà quale scope nel loro database? In questo modo dovremmo monitorare solo gli ambiti del token.
Il lato negativo di questo è che il nostro team avrebbe anche bisogno di creare meccanismi di accesso ottimizzati nelle nostre applicazioni interne.
Con questo modo di pensare, i micro-servizi e il loro sistema di autorizzazione non dovrebbero essere infastiditi dalle esigenze dei clienti, perché sono solo consumatori e non fanno parte del sistema (anche se alcuni di questi sono le nostre app interne)?
Questa delegazione è un buon approccio?