Нов съм тук, въпреки че съм намирал много отговори на проблемите си тук преди.
Сега търся помощ за това: имам този малък примерен ресурс за моя малък REST API:
@Path("/greeting")
@PermitAll
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("all")
public String sayHelloToAll() {
return "Hello, everybody!";
}
@GET
@Produces(MediaType.TEXT_PLAIN)
@RolesAllowed("admin")
@Path("admin")
public String sayHelloToAdmin() {
return "Hello, admin!";
}
}
За да филтрирам роли, имам тази реализация на 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;
}
}
И тази реализация на ContainerRequestFilter:
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthorizationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
requestContext.setSecurityContext(new Authorizer());
}
}
Това е моят клас на приложение:
@ApplicationPath("/")
public class Application extends ResourceConfig {
public Application() {
super(HelloResource.class);
register(AuthorizationFilter.class);
register(RolesAllowedDynamicFeature.class);
}
}
С всичко това, когато поискам URI поздрава/всички, всичко е наред, низът "Здравейте всички!" е показан. Но когато поискам URI поздрав/администратор, който трябва да бъде извикан, когато потребител с роля на администратор го поиска, никога не се извиква, дори когато моят метод isUserInRole винаги връща true. Всъщност моят метод на филтър винаги се извиква, но моят метод isUserInRole никога не се извиква.
Следвах много съвети:
SecurityContext не работи с @RolesAllowed
Упълномощаване с RolesAllowedDynamicFeature и Jersey
Как да получите достъп до ресурс на Джърси, защитен от @RolesAllowed
Най-добра практика за REST токен базирано удостоверяване с JAX-RS и Джърси
Но изглежда не работи с нищо.
Може ли някой да ми помогне? Не знам дали има нещо, което ми липсва
Благодаря на всички предварително
РЕДАКТИРАНЕ: Когато поискам URI поздравление/администратор, между другото получавам 403 Забранено (забравих да кажа това)