SecurityContext не работает с @RolesAllowed

В настоящее время я создаю внутренний сервер, используя Jersey 2.5.1 в Tomcat 7. Для безопасности я использую@RolesAllowed, @PermitAll и т.д. аннотации, и я создал свой заказContainerRequestFilter а такжеSecurityContext.

Моя проблема в том, что когда мой@RolesAllowed запрашивается аннотированный ресурс, он всегда отказывает в разрешении, даже если я принудительноisUserInRole(role) способ вернутьtrue, Тем не менее, мойfilter метод вызывается. У Вас есть какие-то предложения? Я вставлю соответствующий код ниже.

мойContainerRequestFilter реализация:

public class AuthorizationFilter implements ContainerRequestFilter
{
    @Override
    public void filter(ContainerRequestContext request) throws IOException
    {
        request.setSecurityContext(new Authorizer());
    }
}

мойSecurityContext реализация:

public class Authorizer implements SecurityContext
{

    @Override
    public String getAuthenticationScheme() {
        return null;
    }

    @Override
    public Principal getUserPrincipal() {
        return null;
    }

    @Override
    public boolean isSecure() {
        return false;
    }

    @Override
    public boolean isUserInRole(String role) {
        return true;
    }

}

Мой ресурс:

@Path("/secure")
public class TestSecureResource {

    @GET
    @PermitAll
    @Path("/nonsec_test/{text}")
    public Response nonSecureTest(
            @PathParam("text") String text){

        return Response.status(200).entity(text).build();
    }

    @GET
    @RolesAllowed("admin")
    @Path("/sec_test/{text}")
    public Response secureTest(
            @PathParam("text") String text){

        return Response.status(200).entity(text).build();
    }
}

мойResourceConfig:

@ApplicationPath("/")
public class MyApplication extends ResourceConfig {

    public MyApplication() {
        super(TestSecureResource.class);
        register(RolesAllowedDynamicFeature.class);
        register(AuthorizationFilter.class);
    }
}

Соответствующие части моегоweb.xml:

<servlet-name>Jersey Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>pkg.backend</param-value>
        </init-param>

        <init-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>pkg.backend.MyApplication</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>

В этом конкретном случае мой доступ кsecureTest всегда отрицается Уточнить вещи; Я получаю код состояния HTTP 403 - Запрещено.

Заранее спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос