Questa domanda riguarda l'autorizzazione basata sulle attestazioni e Windows Identity Foundation (purtroppo mi manca il privilegio di creare un tag per questo).
Considera il seguente caso d'uso semplice:
- Ho un utente di classe e un progetto di classe,
- (per semplicità) ogni progetto ha esattamente un utente assegnato,
- Il criterio di controllo accessi è
A user can only read data of projects he is assigned to.
Sto provando a modellarlo usando WIF e autorizzazione basata sulle attestazioni.
Quindi ho il seguente metodo per il quale voglio controllare l'accesso:
public Project ReadProject(int id)
Per fare questo, dovrei chiamare il ClaimsAuthorizationManager con un AuthorizationContext contenente il principal (= utente) e reclami per le risorse a cui desidera accedere e le azioni che desidera eseguire su queste risorse.
Ciò su cui non sono chiaro:
Nel caso di utilizzo di cui sopra, il permesso si basa sul fatto project.AssignedUserID == user.ID
. Come sarebbero i Claims?
- Questo requisito è un reclamo per l'utente / committente, come "L'utente ha accesso al progetto ID X", che devo impostare prima di chiamare il ClaimsAuthorizationManager? In caso affermativo, a quale punto assegnerei tale reclamo all'utente? E questo non rovinerebbe l'intero punto di avere un posto centralizzato per dichiarare e controllare le politiche?
- È piuttosto qualcosa che ClaimsAuthorizationManager controllerebbe cercando il database? In tal caso, come potrei tradurre il fatto a quale progetto desidera accedere in un reclamo?
La maggior parte degli esempi che trovo per CBA si basano su attributi dell'utente (ad esempio da quale paese proviene), quindi non ho idea di come eseguire i controlli sulla relazione User-Data.