2011-11-02 13 views
8

Ho uno scenario in cui sto cercando di combinare la sicurezza di primavera con la maglia per la mia API REST.combinazione di sicurezza a molla 3 con jersey api

La mia esigenza è piuttosto complicata (credo) ed è la seguente:

sicurezza primavera viene utilizzato per intercettare URL e forzando l'autenticazione di base, al fine di accedere a una risorsa REST. Questo sembra essere ok come sto usando il client http per testare questo.

Tuttavia, ciò che voglio fare è in qualche modo accedere all'oggetto Utente che viene caricato per controllare alcune autorizzazioni aggiuntive che si bloccano all'utente (un oggetto mappa con flag booleani per indicare se le proprietà dell'oggetto sono visibili o meno). Il codice che esegue il caricamento funziona, ma dopo la primavera autentica come posso accedere all'oggetto Utente nell'effettivo metodo REST Resource stesso? È possibile?

Così i passaggi sono:

1) Cliente effettua una chiamata API REST assegni 2) intercetta primavera URL nome utente e la password fornita nell'intestazione HTTP 3) Il metodo risorsa resto è quindi accessibile se credenziali valide sono presente

Ma prima del passaggio 3, voglio in qualche modo passare l'oggetto Utente caricato al metodo stesso Risorsa in modo da poter applicare ulteriormente una logica per limitare ciò che l'utente può vedere in base alle autorizzazioni che ho caricato ?? ? È possibile? Penso di aver visto qualche codice da qualche parte che controlla i ruoli utente prima di accedere a un metodo usando Spring e REST ma se qualcuno ha link o idee che sarebbero eccellenti.

Si prega di aiutare se è possibile. grazie mille.

risposta

5

Ho risolto questo problema utilizzando un proxy con ambito di richiesta che è stato creato da un bean factory.

Ciò consente di iniettare semplicemente l'utente correntemente autenticato in qualsiasi bean gestito a molla e nel mio caso le mie risorse di Jersey sono rientrate in quella categoria. Ho iniettato il mio utente nel livello sotto le risorse, ma è lo stesso.

Someone else elegantly blogged the full solution here.

+0

grazie @Derek troy-occidentale. Spot su risposta eccellente questo è quello che ho fatto. – user983022

+0

non preoccuparti, prego. –

Problemi correlati