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