Моя цель - предоставить аутентификацию одному ресурсу на сервере, для этого я использую пользовательский фильтр.Я не использую @NameBinding
из-за ограничений использования JAVA 1.6. Использование Response.header(HttpHeaders.WWW_AUTHENTICATE,"Basic")
не запрашивает учетные данные.
Использование ContainerRequestFilter не помогает моему делу, так как оно налагает фильтр на каждый ресурс сервера.
Filter
@Provider
public class AuthenticationFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
System.out.println("Entered authentication filter");
throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED)
.header(HttpHeaders.AUTHORIZATION,"Basic")
.entity("Credentials are required to access this resource.")
.build());
// chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {}
@Override
public void destroy() {}
}
web.xml mapping
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>Utils.LDAPAuthentication.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/download</url-pattern>
</filter-mapping>
Ответ на веб-сервис, который я получаю, -