| Michael Hanl | fb839b9 | 2015-09-19 21:32:34 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web.filter; |
| 2 | |
| 3 | import com.sun.jersey.spi.container.ContainerRequest; |
| 4 | import com.sun.jersey.spi.container.ContainerRequestFilter; |
| 5 | import com.sun.jersey.spi.container.ContainerResponseFilter; |
| 6 | import com.sun.jersey.spi.container.ResourceFilter; |
| 7 | import de.ids_mannheim.korap.config.BeanConfiguration; |
| 8 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| 9 | import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface; |
| 10 | import de.ids_mannheim.korap.user.TokenContext; |
| 11 | import de.ids_mannheim.korap.web.utils.KorAPContext; |
| Michael Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame^] | 12 | import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler; |
| Michael Hanl | fb839b9 | 2015-09-19 21:32:34 +0200 | [diff] [blame] | 13 | |
| 14 | import javax.ws.rs.ext.Provider; |
| 15 | |
| 16 | /** |
| 17 | * @author hanl |
| 18 | * @date 28/01/2014 |
| 19 | */ |
| 20 | @Provider |
| 21 | public 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 Hanl | 482f30d | 2015-09-25 12:39:46 +0200 | [diff] [blame^] | 44 | throw KustvaktResponseHandler.throwit(e); |
| Michael Hanl | fb839b9 | 2015-09-19 21:32:34 +0200 | [diff] [blame] | 45 | } |
| 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 | } |