2012-03-13 8 views
12

Mam interfejs API REST napisany przy użyciu JAX-RS i muszę dodać do niego uwierzytelnianie. Do tej pory wszystkie informacje, które udało mi się znaleźć, zawierają sugestie, aby je wykonać: via spring, których nie używam. Czy istnieje coś, co już istnieje, czy też byłoby to łatwe do napisania, coś, co pozwoli mi opisać albo metodę, albo całą klasę, która wymusiłaby obecność auth nagłówków?W jaki sposób usługa REST usługi JAX-RS może obsługiwać uwierzytelnianie za pomocą adnotacji?

Używam tomcat6 i jersey, jeśli to ma znaczenie.

Coś jak:

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

Odpowiedz

6

myślę chcesz import javax.annotation.Security.RolesAllowed;

adnotacją samo wygląda to

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

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

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

+2

Jak zdefiniować role i sposób uwierzytelniania? – Daenyth

+0

To jest specyficzne dla aplikacji. Zapoznaj się z innym podejściem bez Spring, definiując je w web.xml http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – derdc

3

bym zarządzać bezpieczeństwa na poziomie kontenera. Oto dobry writeup jeśli zdarzy ci się być za pomocą Apache CXF:

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

A oto przykład dla GlassFish:

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

tu jeszcze jeden link, który omawia JSR 250 adnotacje (np @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

Ostatni link wygląda martwy. Wydaje się być farmą linków. –

+0

@Patrick M - Masz rację: wygląda na to, że "ericonjava" pozwoli na wygaśnięcie rejestracji domeny. Dziękuję za "heads up". – paulsm4

+0

Oto link do [linku zwrotnego] (https://web.archive.org/web/20110318205916/http://www.ericonjava.com/?p=325) do artykułu. Wygląda na legit. Niestety, moja usługa używa Dropwizard, więc to jest Jersey na Jetty zamiast Tomcat. W każdym razie, masz +1. –