2012-04-13 52 views
3

上下文: 我在JBoss AS7社區版本上運行我的應用程序。 我從jboss使用JaxRS的Java API。 (不知道是否一樣RestEasy的?)這是我的Maven依賴如何確保運行在JBossAS7上的Restful Service(SSB作爲服務公開)?

 <dependency> 
     <groupId>org.jboss.spec.javax.ws.rs</groupId> 
     <artifactId>jboss-jaxrs-api_1.1_spec</artifactId> 
     <scope>provided</scope> 
     </dependency> 

我使用的是JaxRSActivator,使應用程序中的JAX-RS,如下圖所示。在我的理解這取代了需要有web.xml中

@ApplicationPath("/rest") 
public class JaxRsActivator extends Application { 
    /* class body intentionally left blank */ 
} 

我已經創建了一個EJB(SSB)的servlet映射,並露出它作爲一個RESTful服務如下圖所示」

@Path("/Items") 
@Stateless 
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) 
public class ItemMgmtServiceBean { 

    @GET 
    @Path("/{id:[0-9][0-9]*}") 
    @Produces("text/xml") 
    public Item findItem(@PathParam("id")long itemId) 

的REST以上服務在JBoss AS7上完美運行請注意,到目前爲止我沒有使用web.xml

現在我想要保護這項服務我想使用此服務中的編程安全來查找主體名稱根據我的商業邏輯)

RestEasy文檔說我不應該打開EJB的上下文參數。

<context-param> 
     <param-name>resteasy.role.based.security</param-name> 
     <param-value>true</param-value> 
    </context-param> 

但是它並不能說明什麼,我應該在web.xml中使用,或者如果我需要使用web.xml中所有基於EJB的RESTful服務。

問題:

我想使用摘要式身份驗證。我需要採取哪些措施來實現這一目標? 。

我需要添加一個web.xml還是可以更改JaxRSActivator以啓用安全性? 如果我需要web.xml,我應該刪除JaxRSActivator? 我應該在web.xml中配置什麼?

感謝您的幫助。

回答

0

http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html/Securing_JAX-RS_and_RESTeasy.html

RestEasy的JAX-RS上支持JAX-RS方法@RolesAllowed,@PermitAll和@DenyAll註釋。但默認情況下,Resteasy不會識別這些註釋。您必須將Resteasy配置爲通過設置上下文參數來啓用基於角色的安全性。注意!!!如果您使用EJB,請不要打開此開關。 EJB容器將提供此功能而不是Resteasy。

+2

我在RESTEasy文檔中閱讀了這個筆記。儘管添加了@RolesAllowed,但它不起作用。你在使用EJB時​​也看到了關於不使用上下文參數的注意事項。沒有這個工作原理的詳細例子。你能提供一些代碼樣本來幫助嗎? – 2012-04-14 03:09:11

相關問題