2012-03-13 6 views
12

Ho una API REST scritta con JAX-RS, e ho bisogno di aggiungere l'autenticazione ad esso. Finora tutte le informazioni che sono stato in grado di trovare su di esso ha suggerimenti per farlo via spring, che non sto utilizzando. Esiste già qualcosa, o sarebbe facile scrivere, qualcosa che mi consenta di annotare un metodo o l'intera classe che imporrebbe la presenza di intestazioni di autenticazione?In che modo un servizio REST JAX-RS può gestire l'autenticazione tramite annotazioni?

Sto usando tomcat6 e jersey, se questo è importante.

Qualcosa di simile:

@Path("api") 
public class Api { 
    @GET 
    @AuthenticationRequired 
    public Response getInfo(...) {...} 
} 

risposta

6

Penso che si desidera import javax.annotation.Security.RolesAllowed;

L'annotazione in sé assomiglia a questo

@Path("/helloworld") 
@RolesAllowed({"ADMIN", "ORG1"}) 
public class helloWorld { 

@GET 
@Path("sayHello") 
@Produces("text/plain") 
@RolesAllowed("ADMIN") 
public String sayHello() { 
    return "Hello World!"; 
} 
} 
+1

Riferimento: http://docs.oracle.com/cd /E24329_01/web.1211/e24983/secure.htm#BABGBJAC – derdc

+2

Come definire quali sono i ruoli e in che modo forniscono l'autenticazione? – Daenyth

+0

Questo è specifico per l'applicazione. Fai riferimento qui per un altro approccio Spring-less, definendoli in web.xml http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – derdc

3

avrei gestire la sicurezza a livello di container. Ecco un buon writeup se vi capita di essere utilizzando Apache CXF:

http://cxf.apache.org/docs/secure-jax-rs-services.html

Ed ecco un esempio per Glassfish:

http://www.butonic.de/2010/06/18/a-simple-jax-rs-security-context-example-in-glassfish/

Ecco un altro link, che discute JSR 250 annotazioni (ad esempio, @RolesAllowed):

http://www-01.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_jaxrs_impl_securejaxrs_annotations.html

+0

Ultimo link sembra morto. Sembra essere un link farm. –

+0

@Patrick M - Hai ragione: sembra che "ericonjava" abbia lasciato scadere la registrazione del suo dominio. Grazie per il "testa a testa". – paulsm4

+0

Ecco un [link di ritorno] (https://web.archive.org/web/20110318205916/http://www.ericonjava.com/?p=325) all'articolo. Sembra legittimo. Sfortunatamente, il mio servizio utilizza Dropwizard, quindi è Jersey on Jetty invece di Tomcat. Ad ogni modo, hai un +1. –