2010-02-23 14 views
18

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:

  1. 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.

  2. 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.

  3. 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.

risposta

8

Non so se hai visto questo blog post quindi sto aggiungendo qui come riferimento e mi limiterò a citare alla fine:

Aggiornamento 2009/03/12: chi è interessato a la sicurezza delle applicazioni di Wicket dovrebbe anche essere a conoscenza del fatto che esiste un'alternativa a Wicket-Security, chiamata wicket-auth-roles. This thread offre una buona panoramica dello stato dei due framework. L'integrazione dei ruoli di autenticazione wicket con Spring Security è coperta here.
Una caratteristica interessante di wicket-auth-roles è la capacità di configurare le autorizzazioni con le annotazioni Java . Lo trovo in qualche modo più elegante di un file di configurazione centralizzato . Esiste un esempio here.

Sulla base delle informazioni di cui sopra e quello il vostro fornito, e perché preferisco le annotazioni troppo, mi piacerebbe andare per wicket-Auth-Ruoli con molla di sicurezza (vale a dire guide 2). L'estensione di AuthenticatedWebApplication non dovrebbe essere un problema in quanto questa classe si estende WebApplication. E estrarre il tuo oggetto applicazione dal contesto di primavera usando SpringWebApplicationFactory dovrebbe anche funzionare.

E se le vostre preoccupazioni sono veramente grandi, questo sarebbe abbastanza facile e veloce per confermare con un test IMO :)

+0

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

+0

@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. –

+0

i collegamenti sono morti – thg

2

Abbiamo usato Wicket-sicurezza ormai da anni e abbiamo utilizzato insieme a jaas file e con annotazioni. Definire i file jaas è piuttosto complicato e mantenerli è quasi impossibile ...

Con le annotazioni si devono definire azioni e principi per ogni pagina. Si tratta di un periodo di tempo che tuttavia consente all'utente di definire ruoli e autorizzazioni in modo dinamico. È anche possibile testare tutti i principali utilizzando il WicketTester.

Ciascuno dei 3 pacchetti ha (dis) vantaggi, è una questione di gusti e dipende anche dalle dimensioni dell'applicazione.

Problemi correlati