Pergunta

Estou tentando proteger um serviço de jersey usando anotações de segurança do Spring, sem sorte.

Adicionei esta seção ao web.xml:

<servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.test.proj.ui.web.rest;com.fasterxml.jackson.jaxrs</param-value>
    </init-param>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.test.commons.ui.web.jersey.RestApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Também habilitei as anotações pré-pós usando isto no applicationContext:

<global-method-security secured-annotations="enabled" pre-post-annotations="enabled" />

E esta é minha classe de serviço:

@Component
@Path("/user/{uid: .*}")
public class UserResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @PreAuthorize("hasRole('ROLE_MANAGE_USER')")
    public Response getUserDetail(@PathParam("uid") String uid) {
        return "Hi, this is a test";
    }
}

A segurança Spring funciona bem na autenticação, mas a autorização não funciona conforme o esperado e ignora a anotação PreAuthorize sem nenhum erro ou log.

Estou usando Spring 3.2.4 e Spring Security 3.2.1 e Jersy 2.6.

qualquer ideia?

obrigado

Foi útil?

Solução 2

A verificação do componente da mola não foi configurada corretamente!Para resolver o problema, adicione apenas a digitalização componente corretamente e funciona.

Outras dicas

Nós estávamos enfrentando exatamente o mesmo problema.Na camada de negócios @Preatorize Anotação trabalhada, mas no recurso de repouso não.O efeito colateral dessa situação foi que a injeção de feijão de primavera também não funcionou.Tudo sem qualquer erro.

A solução de trabalho de 100% era usar o restaurante em vez de Jersey.Eles são bastante semelhantes, então não foi muito trabalho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top