Example usage for org.apache.hadoop.yarn.server.webproxy WebAppProxyServlet PROXY_USER_COOKIE_NAME

List of usage examples for org.apache.hadoop.yarn.server.webproxy WebAppProxyServlet PROXY_USER_COOKIE_NAME

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.server.webproxy WebAppProxyServlet PROXY_USER_COOKIE_NAME.

Prototype

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

Usage

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(""));

}