Quando si progetta un sistema di autorizzazione basato sulle attività, come devono essere gestiti ulteriori controlli condizionali?

2

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?

    
posta Chad 17.06.2017 - 07:37
fonte

0 risposte

Leggi altre domande sui tag