Quindi, ho un'applicazione basata su Web che utilizza il framework Wicket 1.4 e utilizza i bean Spring, l'API JPA (Java Persistence) e il pattern OpenSessionInView. Spero di trovare un modello di sicurezza che sia dichiarativo, ma non richiede gob di configurazione XML - preferirei le annotazioni.Come dovrei proteggere la mia webapp scritta usando Wicket, Spring e JPA?
Qui ci sono le opzioni finora:
Primavera di sicurezza (guide) - sembra completa, ma ogni guida trovo che combina con Wicket ancora lo chiama Acegi di sicurezza, che mi fa pensare che deve essere vecchio.
wicket-Auth-ruoli (guide 1 e guide 2) - La maggior parte delle guide raccomandano mescolando questo con Primavera di sicurezza, e mi piace lo stile dichiarativo di @Authorize ("Role1", "Role2", ecc). Sono preoccupato di dover estendere AuthenticatedWebApplication, dal momento che sto già estendendo org.apache.wicket.protocol.http.WebApplication, e Spring sta già eseguendo il proxy dietro a org.apache.wicket.spring.SpringWebApplicationFactory.
SWARM/WASP (guide) - Questo sembra il più recente (anche se il principale contributore scomparso anni fa), ma odio tutti i file di testo JAAS-stile che dichiarano autorizzazioni per presidi. Inoltre non mi piace l'idea di creare una classe Action per ogni singola cosa che un utente potrebbe voler fare. Anche i modelli sicuri non sono immediatamente ovvi per me. Inoltre, non esiste un esempio di Authn.
Inoltre, sembra che molte persone consigliano di miscelare la prima e la seconda opzione. Non posso dire quale sia la migliore pratica, comunque.
Devo anche aggiungere - wicket-auth-roles non sembra gestire le autorizzazioni oltre i ruoli. Se avessi una collezione di oggetti, un utente non potrebbe avere un ruolo per ogni oggetto, per esempio. Poi di nuovo, SWARM non sembra gestire questo neanche. Pensi che una di queste soluzioni sia migliore dato che potrei avere alcune combinazioni di permessi utente + oggetti più complessi? – Martin
@Martin Non sono sicuro che nessuna di queste soluzioni sia in grado di gestirle (sembra piuttosto complicato), ma ciò potrebbe andare al di là delle mie conoscenze. –
i collegamenti sono morti – thg