Quando si progetta un sistema di autorizzazione basato sulle attività, come devono essere gestiti ulteriori controlli condizionali?
Ad esempio, ho la seguente autorizzazione:
VIEW_COMPANY_TRANSACTIONS
che consente all'utente di raggiungere l'endpoint
GET /company/{companyName}/transactions
Tuttavia, cosa succede se la mia autorità VIEW_COMPANY_TRANSACTIONS
ha altre restrizioni basate sui parametri di attività che di fatto rendono effettivamente l'autorità VIEW_COMPANY_TRANSACTIONS(companyName=company_a)
. Non voglio codificare queste informazioni nel sistema di autorizzazione e finire con la seguente nuova autorità:
VIEW_COMPANY_TRANSACTIONS_FOR_COMPANY_A
L'autorità di cui sopra sembra mescolare il filtraggio delle opinioni e l'autorità stessa che rende tutto un po 'noioso e inflessibile.
In un altro esempio, ho la seguente autorizzazione:
APPROVE_TRANSACTION
che consente all'utente di raggiungere l'endpoint:
POST /company/{companyName}/transactions/{id}/approvals
Ma cosa succede se l'approvazione può essere eseguita solo se transaction.amount < maxAmount
nel qual caso, è ancora più difficile codificarlo in una nuova autorizzazione hardcoded.
Si noti che queste autorità possono anche essere incluse in un token JWT, quindi devono essere in qualche modo trasferibili .
Qual è il modo migliore per progettare un sistema del genere? Qualche consiglio?