2012-03-13 9 views
12

Tengo una API REST escrita con JAX-RS, y necesito agregarle autenticación. Hasta ahora, toda la información que he podido encontrar al respecto tiene sugerencias para hacerlo via spring, que no estoy usando. ¿Hay algo que ya existe, o sería fácil de escribir, algo que me permita anotar un método o toda la clase que obligaría a los encabezados de autenticación a estar presentes?¿Cómo puede un servicio REST JAX-RS controlar la autenticación mediante anotaciones?

Estoy usando tomcat6 y camiseta, si eso importa.

Algo así como:

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

Respuesta

6

creo que quiere import javax.annotation.Security.RolesAllowed;

La anotación en sí se parece a esto

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

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

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

+2

¿Cómo puedo definir cuáles son las funciones y cómo proporcionan la autenticación? – Daenyth

+0

Eso es específico de la aplicación. Consulte aquí otro enfoque sin Spring, definiéndolos en web.xml http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – derdc

3

Me administrar la seguridad a nivel de contenedor. He aquí una buena valoración crítica si se esté utilizando Apache CXF:

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

Y aquí está un ejemplo para Glassfish:

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

aquí es un eslabón más, que discute JSR 250 anotaciones (por ejemplo, @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

El último enlace parece estar muerto. Parece ser una granja de enlaces. –

+0

@Patrick M - Tiene razón: parece que "ericonjava" dejó de registrar su dominio. Gracias por el aviso". – paulsm4

+0

Aquí hay un [enlace de retroceso] (https://web.archive.org/web/20110318205916/http://www.ericonjava.com/?p=325) al artículo. Parece legitimo. Lamentablemente, mi servicio está utilizando Dropwizard, así que es Jersey en Jetty en lugar de Tomcat. De todos modos, tenga un +1. –

Cuestiones relacionadas