blob: eff8b571c271dee3a367f2a8e5afd5778f9b6789 [file] [log] [blame]
Michael Hanlfb839b92015-09-19 21:32:34 +02001package de.ids_mannheim.korap.web.filter;
2
3import com.sun.jersey.spi.container.ContainerRequest;
4import com.sun.jersey.spi.container.ContainerRequestFilter;
5import com.sun.jersey.spi.container.ContainerResponseFilter;
6import com.sun.jersey.spi.container.ResourceFilter;
7import de.ids_mannheim.korap.config.BeanConfiguration;
8import de.ids_mannheim.korap.exceptions.KustvaktException;
9import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
10import de.ids_mannheim.korap.user.TokenContext;
11import de.ids_mannheim.korap.web.utils.KorAPContext;
Michael Hanl482f30d2015-09-25 12:39:46 +020012import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler;
Michael Hanlfb839b92015-09-19 21:32:34 +020013
14import javax.ws.rs.ext.Provider;
15
16/**
17 * @author hanl
18 * @date 28/01/2014
19 */
20@Provider
21public class AuthFilter implements ContainerRequestFilter, ResourceFilter {
22
23 private AuthenticationManagerIface userController;
24
25 public AuthFilter() {
26 this.userController = BeanConfiguration.getBeans()
27 .getAuthenticationManager();
28 }
29
30 @Override
31 public ContainerRequest filter(ContainerRequest request) {
32 String host = request.getHeaderValue(ContainerRequest.HOST);
33 String ua = request.getHeaderValue(ContainerRequest.USER_AGENT);
34
35 String authentication = request
36 .getHeaderValue(ContainerRequest.AUTHORIZATION);
37 if (authentication != null && !authentication.isEmpty()) {
38 TokenContext context;
39 try {
40 context = userController
41 .getTokenStatus(authentication, host, ua);
42
43 }catch (KustvaktException e) {
Michael Hanl482f30d2015-09-25 12:39:46 +020044 throw KustvaktResponseHandler.throwit(e);
Michael Hanlfb839b92015-09-19 21:32:34 +020045 }
46
47 if (context != null && (
48 (context.isSecureRequired() && request.isSecure())
49 | !context.isSecureRequired()))
50 request.setSecurityContext(new KorAPContext(context));
51 }
52 return request;
53 }
54
55 @Override
56 public ContainerRequestFilter getRequestFilter() {
57 return this;
58 }
59
60 @Override
61 public ContainerResponseFilter getResponseFilter() {
62 return null;
63 }
64}