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
36
37
38 public class ProxyAuthenticationFilter
39 implements Filter
40 {
41
42 private final String username;
43
44 private final String password;
45
46 public ProxyAuthenticationFilter( final String username, final String password )
47 {
48 this.username = username;
49 this.password = password;
50 }
51
52 public void destroy()
53 {
54 }
55
56 public void doFilter( final ServletRequest req, final ServletResponse resp, final FilterChain chain )
57 throws IOException, ServletException
58 {
59 HttpServletRequest request = (HttpServletRequest) req;
60 HttpServletResponse response = (HttpServletResponse) resp;
61
62 String header = request.getHeader( "Proxy-Authorization" );
63 if ( header == null )
64 {
65 response.setStatus( HttpServletResponse.SC_PROXY_AUTHENTICATION_REQUIRED );
66 response.addHeader( "Proxy-Authenticate", "Basic realm=\"Squid proxy-caching web server\"" );
67 return;
68 }
69 else
70 {
71 String data = header.substring( "BASIC ".length() );
72 data = new String( Base64.decodeBase64( data ) );
73 String[] creds = data.split( ":" );
74
75 if ( !creds[0].equals( username ) || !creds[1].equals( password ) )
76 {
77 response.sendError( HttpServletResponse.SC_UNAUTHORIZED );
78 }
79 }
80
81 chain.doFilter( req, resp );
82 }
83
84 public void init( final FilterConfig filterConfig )
85 throws ServletException
86 {
87 }
88
89 }