In genere, inserisco le decisioni di autorizzazione nei miei controller lato server. Recentemente questi sono stati endpoint RESTful, ma penso che lo stesso stia per architetture di tipo MVC. Per ragioni di argomento, supponiamo che si tratti di un'autorizzazione basata sul ruolo. Un metodo protetto verrà annotato o eseguirà controlli e restituirà 403 se necessario.
Ora, dato che l'autorizzazione è in realtà una regola aziendale - "solo gli amministratori possono elencare X" per esempio, sto pensando che dovrebbero essere spinti giù un livello. Quando un controller chiede al livello aziendale di eseguire l'operazione, il servizio o il livello aziendale informa il controller che non è autorizzato.
È un approccio ragionevole? Ci sono degli svantaggi in questo?
Detesto avere un AuthorisationService che essenzialmente contiene un sacco di regole statiche codificate procedurali per farlo, ma forse ha senso mantenere tutta la logica di accesso in un unico posto. È una preoccupazione trasversale che dovrebbe essere tenuta separata?
Quindi sto chiedendo se qualcuno ha fatto questo e come lo hanno raggiunto in modo pulito o se ci sono buone risorse che potrei leggere. Sto usando Java prima ma questa è una domanda agnostica sul linguaggio.
Ho verificato le domande correlate qui e sono molto sottili sul campo e le risposte. Ad esempio: convalida e autorizzazione nei modelli di dominio e trasporto tramite MVC a un livello di servizio
Sto leggendo i documenti di sicurezza di primavera che sostengono alcune buone argomentazioni perché è una preoccupazione trasversale, ma sono preoccupato che sia solo la "via della primavera" e vorrei prospettive più ampie. Inoltre collega l'applicazione a un framework specifico.