1 package org.apache.maven.wagon.tck.http.fixture;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.commons.codec.binary.Base64;
23
24 import java.io.IOException;
25
26 import javax.servlet.Filter;
27 import javax.servlet.FilterChain;
28 import javax.servlet.FilterConfig;
29 import javax.servlet.ServletException;
30 import javax.servlet.ServletRequest;
31 import javax.servlet.ServletResponse;
32 import javax.servlet.http.HttpServletRequest;
33 import javax.servlet.http.HttpServletResponse;
34
35 public class ProxyAuthenticationFilter
36 implements Filter
37 {
38
39 private final String username;
40
41 private final String password;
42
43 public ProxyAuthenticationFilter( final String username, final String password )
44 {
45 this.username = username;
46 this.password = password;
47 }
48
49 public void destroy()
50 {
51 }
52
53 public void doFilter( final ServletRequest req, final ServletResponse resp, final FilterChain chain )
54 throws IOException, ServletException
55 {
56 HttpServletRequest request = (HttpServletRequest) req;
57 HttpServletResponse response = (HttpServletResponse) resp;
58
59 String header = request.getHeader( "Proxy-Authorization" );
60 if ( header == null )
61 {
62 response.setStatus( HttpServletResponse.SC_PROXY_AUTHENTICATION_REQUIRED );
63 response.addHeader( "Proxy-Authenticate", "Basic realm=\"Squid proxy-caching web server\"" );
64 return;
65 }
66 else
67 {
68 String data = header.substring( "BASIC ".length() );
69 data = new String( Base64.decodeBase64( data ) );
70 String[] creds = data.split( ":" );
71
72 if ( !creds[0].equals( username ) || !creds[1].equals( password ) )
73 {
74 response.sendError( HttpServletResponse.SC_UNAUTHORIZED );
75 }
76 }
77
78 chain.doFilter( req, resp );
79 }
80
81 public void init( final FilterConfig filterConfig )
82 throws ServletException
83 {
84 }
85
86 }