Как служба JAX-RS REST имеет аутентификацию, обработанную аннотациями?
У меня есть REST api, написанный с JAX-RS, и мне нужно добавить к нему аутентификацию. Пока вся информация, которую я смог найти, имеет предложения для через spring, которые я не использую. Есть ли что-то уже существующее или было бы легко написать, что-то, что позволит мне аннотировать либо метод, либо весь класс, который заставил бы заголовки auth присутствовать?
Я использую tomcat6 и трикотаж, если это имеет значение.
Что-то вроде:
@Path("api")
public class Api {
@GET
@AuthenticationRequired
public Response getInfo(...) {...}
}
Ответы
Ответ 1
Я думаю, что вы хотите 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!";
}
}
Ответ 2
Я бы справился с безопасностью на уровне контейнера. Здесь хорошая запись, если вы используете 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/ae/twbs_jaxrs_impl_securejaxrs_annotations.html