List of usage examples for org.apache.hadoop.yarn.server.webproxy WebAppProxyServlet PROXY_USER_COOKIE_NAME
String PROXY_USER_COOKIE_NAME
To view the source code for org.apache.hadoop.yarn.server.webproxy WebAppProxyServlet PROXY_USER_COOKIE_NAME.
Click Source Link
From source file:org.apache.slider.server.appmaster.web.rest.InsecureAmFilter.java
License:Apache License
@Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { rejectNonHttpRequests(req);//from ww w .j av a 2 s . com HttpServletRequest httpReq = (HttpServletRequest) req; HttpServletResponse httpResp = (HttpServletResponse) resp; String requestURI = httpReq.getRequestURI(); if (requestURI == null || !requestURI.startsWith(wsContextRoot)) { // hand off to the AM filter if it is not the context root super.doFilter(req, resp, chain); return; } String user = null; if (httpReq.getCookies() != null) { for (Cookie c : httpReq.getCookies()) { if (WebAppProxyServlet.PROXY_USER_COOKIE_NAME.equals(c.getName())) { user = c.getValue(); break; } } } if (user == null) { log.debug("Could not find " + WebAppProxyServlet.PROXY_USER_COOKIE_NAME + " cookie, so user will not be set"); chain.doFilter(req, resp); } else { final AmIpPrincipal principal = new AmIpPrincipal(user); ServletRequest requestWrapper = new AmIpServletRequestWrapper(httpReq, principal); chain.doFilter(requestWrapper, resp); } }
From source file:org.apache.slider.server.appmaster.web.SliderAmIpFilter.java
License:Apache License
@Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { if (!(req instanceof HttpServletRequest)) { throw new ServletException("This filter only works for HTTP/HTTPS"); }/*from ww w . j a v a 2 s.com*/ HttpServletRequest httpReq = (HttpServletRequest) req; HttpServletResponse httpResp = (HttpServletResponse) resp; if (log.isDebugEnabled()) { log.debug("Remote address for request is: " + httpReq.getRemoteAddr()); } String requestURI = httpReq.getRequestURI(); if (!isWsRequest(requestURI) && !getProxyAddresses().contains(httpReq.getRemoteAddr())) { String redirectUrl = httpResp.encodeRedirectURL(proxyUriBase + requestURI); httpResp.sendRedirect(redirectUrl); return; } String user = null; if (httpReq.getCookies() != null) { for (Cookie c : httpReq.getCookies()) { if (WebAppProxyServlet.PROXY_USER_COOKIE_NAME.equals(c.getName())) { user = c.getValue(); break; } } } try { if (user == null) { log.debug("Could not find " + WebAppProxyServlet.PROXY_USER_COOKIE_NAME + " cookie, so user will not be set"); chain.doFilter(req, resp); } else { final AmIpPrincipal principal = new AmIpPrincipal(user); ServletRequest requestWrapper = new AmIpServletRequestWrapper(httpReq, principal); chain.doFilter(requestWrapper, resp); } // JKD7 } catch (IOException | ServletException e) { } catch (IOException e) { log.warn("When fetching {}: {}", requestURI, e); throw e; } catch (ServletException e) { log.warn("When fetching {}: {}", requestURI, e); throw e; } }
From source file:org.apache.slider.server.appmaster.web.TestSliderAmFilter.java
License:Apache License
/** * Test AmIpFilter/*from w w w . jav a2 s. c om*/ */ @Test(timeout = 1000) public void testFilter() throws Exception { Map<String, String> params = new HashMap<String, String>(); params.put(SliderAmIpFilter.PROXY_HOST, proxyHost); params.put(SliderAmIpFilter.PROXY_URI_BASE, proxyUri); params.put(SliderAmIpFilter.WS_CONTEXT_ROOT, wsContextRoot); FilterConfig config = new DummyFilterConfig(params); // dummy filter FilterChain chain = new FilterChain() { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException, ServletException { doFilterRequest = servletRequest.getClass().getName(); if (servletRequest instanceof AmIpServletRequestWrapper) { servletWrapper = (AmIpServletRequestWrapper) servletRequest; } } }; SliderAmIpFilter testFilter = new SliderAmIpFilter(); testFilter.init(config); HttpServletResponse mockResponse = Mockito.mock(HttpServletResponse.class); HttpServletResponseForTest response = new HttpServletResponseForTest(mockResponse); // Test request should implements HttpServletRequest ServletRequest failRequest = Mockito.mock(ServletRequest.class); try { testFilter.doFilter(failRequest, response, chain); fail(); } catch (ServletException e) { assertEquals("This filter only works for HTTP/HTTPS", e.getMessage()); } // request with HttpServletRequest HttpServletRequest request = Mockito.mock(HttpServletRequest.class); Mockito.when(request.getRemoteAddr()).thenReturn("redirect"); Mockito.when(request.getRequestURI()).thenReturn("/ws/v1/slider/agent"); testFilter.doFilter(request, response, chain); // address "redirect" is not in host list assertEquals(0, response.getRedirect().length()); Mockito.when(request.getRequestURI()).thenReturn("/redirect"); testFilter.doFilter(request, response, chain); assertEquals("http://bogus/redirect", response.getRedirect()); // "127.0.0.1" contains in host list. Without cookie Mockito.when(request.getRemoteAddr()).thenReturn("127.0.0.1"); testFilter.doFilter(request, response, chain); assertTrue(doFilterRequest.contains("javax.servlet.http.HttpServletRequest")); // cookie added Cookie[] cookies = new Cookie[1]; cookies[0] = new Cookie(WebAppProxyServlet.PROXY_USER_COOKIE_NAME, "user"); Mockito.when(request.getCookies()).thenReturn(cookies); testFilter.doFilter(request, response, chain); assertEquals("org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpServletRequestWrapper", doFilterRequest); // request contains principal from cookie assertEquals("user", servletWrapper.getUserPrincipal().getName()); assertEquals("user", servletWrapper.getRemoteUser()); assertFalse(servletWrapper.isUserInRole("")); }