2012-03-13 66 views
12

我有一個用JAX-RS編寫的REST api,我需要爲它添加身份驗證。到目前爲止,我所能找到的關於它的所有信息都有這樣的建議via spring,我沒有使用它。是否有已經存在的東西,還是很容易編寫的東西,這些東西可以讓我註釋一個方法,或者整個類都會強制auth頭文件存在?JAX-RS REST服務如何通過註釋處理認證?

我正在使用tomcat6和澤西島,如果有關係。

喜歡的東西:

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

回答

6

我想你想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!"; 
} 
} 
+1

參考:http://docs.oracle.com/cd /E24329_01/web.1211/e24983/secure.htm#BABGBJAC – derdc 2012-03-13 19:25:34

+2

如何定義角色以及它們如何提供身份驗證? – Daenyth 2012-03-13 19:25:38

+0

這是特定於應用程序。請參考這裏的另一個無春季的方法,在web.xml中定義它們http://docs.oracle.com/javaee/5/tutorial/doc/bncav.html – derdc 2012-03-13 19:27:33

3

我將管理在容器級別的安全性。這裏有一個很好的書面記錄,如果你碰巧使用的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

+0

最後一個鏈接看起來死了。似乎是一個鏈接農場。 – 2015-06-22 17:59:15

+0

@Patrick M - 你說得對:它看起來像「ericonjava」讓他的域名註冊失效。謝謝你的提醒」。 – paulsm4 2015-06-22 20:05:25

+0

這裏有一篇[wayback link](https://web.archive.org/web/20110318205916/http://www.ericonjava.com/?p=325)的文章。看起來合法。不幸的是,我的服務使用的是Dropwizard,所以這是Jetty上的Jersey而不是Tomcat。無論如何,有一個+1。 – 2015-06-23 18:13:47