Каким образом служба REST JAX-RS может выполнять аутентификацию с помощью аннотаций? - PullRequest
12 голосов
/ 13 марта 2012

У меня есть REST API, написанный на JAX-RS, и мне нужно добавить аутентификацию к нему. Пока что вся информация, которую я смог найти об этом, содержит предложения сделать это через пружину , которую я не использую. Есть ли что-то уже существующее, или было бы легко написать, что-то, что позволит мне аннотировать либо метод, либо весь класс, который заставит присутствовать заголовки аутентификации?

Я использую tomcat6 и джерси, если это имеет значение.

Что-то вроде:

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

Ответы [ 2 ]

6 голосов
/ 13 марта 2012

Я думаю, что вы хотите import javax.annotation.Security.RolesAllowed;

Сама аннотация выглядит так

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

@GET
@Path("sayHello")  
@Produces("text/plain")
@RolesAllowed("ADMIN")
public String sayHello() {
   return "Hello World!";
}
}
3 голосов
/ 13 марта 2012

Я бы управлял безопасностью на уровне контейнера.Вот хорошая запись, если вы используете Apache CXF:

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

А вот пример для Glassfish:

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

Вот еще одна ссылка, в которой рассматриваются аннотации JSR 250 (например, @RolesAllowed):

http://www -01.ibm.com / support / Knowledgecenter / SSEQTP_8.5.5 / com.ibm.websphere.base.doc / ае / twbs_jaxrs_impl_securejaxrs_annotations.html

...