Sto cercando di utilizzare il framework Apache Shiro per proteggere la mia applicazione Web (l'interfaccia utente è basata su Vaadin 6). Ho esaminato tutti gli esempi sul sito di Shiro e anche cercato su google per ore, ma non riesco a trovare un modo pulito per gestire i seguenti requisiti.Come gestire i ruoli/permessi gerarchici usando Apache Shiro?
Supponendo che l'applicazione sia una specie di strumento di gestione del progetto, in cui gli utenti creano attività, che appartengono a particolari reparti della gerarchia aziendale. Ogni utente può lavorare in più dipartimenti e ha ruoli di sicurezza diversi in ogni dipartimento. Esempio:
Department A - User is 'Manager' here Department B Department C - User is 'Admin' here Department D
Utente 'Manager' nel Reparto A utente è 'admin' in C utente deve anche ereditare il ruolo 'Admin' per il reparto D (che è antenato di C).
Quindi, controllo il permesso di base (supponendo che voglio visualizzare l'attività appartenente a qualche dipartimento) sarebbe quello di:
- Verificare se l'utente l'attività sta cercando di vista appartiene all'utente reparto ha un ruolo nella;
- Verificare che l'utente abbia richiesto l'autorizzazione in base al proprio ruolo in questo reparto.
Sono attualmente bloccato nella comprensione di come implementare non solo il concetto di "system wide role", ma "role in this department particolare".
Come posso trasformare l'esempio precedente in stringa di autorizzazione come "attività: vista: 123"? E come controllerò l'autorizzazione nella mia logica aziendale?
Un altro dubbio è l'implementazione con Shiro, mi piacerebbe utilizzare una soluzione pronta all'uso che comporterà il minimo sforzo per fornire le mie implementazioni. Tuttavia, sembra che le implementazioni incorporate di Shiro siano progettate solo per casi semplici. C'è un esempio di implementazione di autorizzazione complessa per iniziare (che può coprire il caso precedente)?