如何在JBossAS7上运行Restful Service(SSB公开为服务)?

时间:2012-04-13 21:41:43

标签: security jax-rs resteasy jboss7.x ws-security

上下文: 我在JBoss AS7社区版上运行我的应用程序。 我从jboss使用Java API for JaxRS。 (不确定它是否与RestEasy相同?!)这是我的maven依赖

      <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中进行servlet映射的需要

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

我创建了一个EJB(SSB)并将其公开为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。

 <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中配置什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分: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。