Centralizza la valutazione dei permessi

2

Sto cercando un modello di architettura / design praticabile per proteggere diverse applicazioni web. Ecco la situazione:

  • Più applicazioni Web devono applicare ruoli e permessi a livello di metodo del servizio Java

  • I ruoli e le autorizzazioni devono essere memorizzati centralmente, in un componente separato

  • Come vengono applicati i ruoli e le autorizzazioni (ad esempio, il comportamento da applicare ai ruoli e alle autorizzazioni) devono essere applicati a livello centrale. Questo è importante perché vorremmo standardizzare il modo in cui i metodi sono protetti e il modo in cui i ruoli e le autorizzazioni vengono applicati per evitare il rischio che i client lo incasino.

Le opzioni che sto considerando sono:

  1. Scrivi un client java che applichi il comportamento utilizzando alcune annotazioni - quindi le singole applicazioni web devono solo includere questo file jar e utilizzare l'annotazione (contro per questo approccio: implementazione del file jar, gestione delle dipendenze)

  2. Fornire un servizio Web che i metodi possono utilizzare (contro: potrebbe non scalare poiché la chiamata di un servizio esterno per un problema trasversale non sarebbe scalabile)

Come posso risolvere al meglio questo problema?

    
posta senseiwu 12.11.2015 - 17:50
fonte

1 risposta

1

Quello che stai cercando si chiama autorizzazione esternalizzata . Ci sono diversi modi per farlo e come alcuni dei commentatori sottolineano, Apache Shiro, Spring Security, Microsoft Claims sono tutti modi per esternalizzare l'autorizzazione.

Se guardi la più ampia immagine di controllo degli accessi, vedrai che ci sono diversi modelli di controllo dell'accesso:

  • access control lists (ACL),
  • controllo degli accessi basato sui ruoli (RBAC) e
  • controllo degli accessi basato sugli attributi (ABAC)

Tutti questi possono essere usati per esternalizzare l'autorizzazione anche se in genere gli ACL non lo sono.

Apache Shiro e Spring Security realizzano il controllo degli accessi basato sui ruoli, ovvero definisci utenti, ruoli e autorizzazioni. Si assegnano gli utenti a ruoli e ruoli alle autorizzazioni. Le informazioni sono memorizzate centralmente, ad es. in un LDAP e le applicazioni ne consumano. Ciò ti consentirà di ottenere un controllo degli accessi a grana grossa. Il modo in cui le app utilizzano i ruoli e le autorizzazioni e ciò che le app fanno con questi è tutto per lo sviluppatore dell'app. Quindi in un certo senso non è completamente esternalizzato.

ABAC va oltre. ABAC definisce:

  • un'architettura
  • un approccio basato su criteri
  • uno schema di richiesta / risposta per richiedere l'autorizzazione

ABAC viene in genere implementato utilizzando uno standard chiamato XACML, l'eXtensible Access Control Markup Language.

Nell'architettura di ABAC troverai i seguenti componenti:

  • il punto di applicazione della politica (PEP): questo è il pezzo all'interno della tua app o davanti alla tua app che utilizzerai per richiedere un'autorizzazione. Questo è il pezzo che esternalizza la tua autorizzazione. Nella tua app, ad esempio, utilizzerai il PEP per creare una richiesta del tipo Può Alice visualizzare il documento # 123? Il PEP lo invierà al motore di autorizzazione centrale
  • il punto di decisione politica (PDP): questo è il motore di autorizzazione centrale. È configurato con criteri. Queste politiche sono costruite usando gli attributi. Per esempio i medici possono visualizzare la cartella clinica di un paziente se hanno un rapporto di cura con quel paziente . Gli attributi possono essere recuperati da database, servizi Web e LDAP. Il PDP riceve la richiesta dal PEP e la valuta. Alla fine raggiunge una decisione, ad es. Permetti o Nega che restituisce al PEP.
  • il punto informazioni sulla politica (PIP): il PIP è la fonte di ulteriori attributi che potrebbero essere necessari al PDP, ad es. il ruolo o il dipartimento di un utente, lo stato di un documento ...
  • il punto di amministrazione della politica (PAP)

Lo schema seguente riassume l'architettura.

Daiun'occhiataa:

risposta data 03.12.2015 - 20:42
fonte

Leggi altre domande sui tag