Abbiamo in programma di trasformare il nostro sistema aziendale in un sistema basato su micro-servizi. Questi micro-servizi saranno utilizzati dalle nostre applicazioni interne aziendali e da partner di terze parti, se necessario. Uno per la prenotazione, uno per i prodotti ecc.
Non siamo sicuri su come gestire ruoli e ambiti. L'idea è quella di creare 3 ruoli utente di base come amministratori, agenti e utenti finali e consentire alle app consumer di mettere a punto gli ambiti, se necessario.
- Gli amministratori possono creare, aggiornare, leggere ed eliminare tutte le risorse per impostazione predefinita (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 degli agenti o degli amministratori. Saranno anche in grado di creare o modificare i 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, proprio come l'agente sarà in grado di farlo per loro, ma non possono vedere o aggiornare le note dell'amministratore.
Supponiamo che gli agenti di default possano creare, leggere e aggiornare ogni risorsa per la loro azienda e che sia il loro ambito massimo che può essere richiesto per il loro token / sessione, ma gli sviluppatori dell'applicazione client (consumatore API) hanno deciso che uno dei loro agenti può leggi e crea solo determinate risorse.
È una pratica migliore gestire questo nella nostra sicurezza interna e lasciare che scrivano quei dati nel nostro database, o consentire ai clienti di gestirli internamente richiedendo un token con ambito inferiore e lasciare che scrivano quale agente avrà quale ambito nel loro database ? In questo modo dovremmo tracciare solo gli ambiti token.
L'aspetto negativo di questo è che il nostro team dovrebbe anche creare meccanismi di accesso perfezionati nelle nostre applicazioni interne.
Con questo modo di pensare, i micro-servizi e il loro sistema di autorizzazione non dovrebbero essere disturbati dalle esigenze dei clienti, perché sono solo consumatori e non fanno parte del sistema (anche se alcuni di questi consumatori sono le nostre app interne)?
Questa delegazione è un buon approccio?
payment:[read]
, il venditore hapayment: [create]
. In questo caso aggregate le autorizzazioni?