Как защитить Restful Service (SSB, выставленный как сервис), запущенный на JBossAS7?

Контекст: Я запускаю свое приложение на JBoss AS7 версии сообщества. Я использую Java API для JaxRS от jboss. (Не уверен, что это так же, как 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

@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>
 <param-name>resteasy.role.based.security</param-name>
 <param-value>true</param-value>
 </context-param>

Однако он не объясняет, что я должен использовать в web.xml, или если мне вообще нужно использовать web.xml для бесплатных служб на основе EJB.

Вопросы:

Я хочу использовать дайджест-аутентификацию. Какие шаги я должен предпринять, чтобы это сделать?.

Нужно ли добавлять web.xml или изменить JaxRSActivator, чтобы включить защиту? Если мне нужно web.xml, я должен удалить JaxRSActivator? Что мне нужно настроить в web.xml?

Цените свою помощь.

1 ответ

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

Restaasy JAX-RS поддерживает аннотации @RolesAllowed, @PermitAll и @DenyAll по методам JAX-RS. По умолчанию, однако, Resteasy не распознает эти аннотации. Вы должны настроить Resteasy, чтобы включить защиту на основе ролей, установив параметр контекста. ЗАМЕТКА!!! Не включайте этот переключатель, если вы используете EJB. Контейнер EJB предоставит эту функцию вместо Resteasy.

licensed under cc by-sa 3.0 with attribution.