1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.chemistry.opencmis.server.shared;
20  
21  import org.apache.chemistry.opencmis.commons.server.CallContext;
22  
23  import org.apache.commons.codec.binary.Base64;
24  
25  import java.io.Serializable;
26  
27  import java.util.HashMap;
28  import java.util.Map;
29  
30  import javax.servlet.http.HttpServletRequest;
31  
32  
33  
34  
35  
36  public class BasicAuthCallContextHandler implements CallContextHandler, Serializable
37  {
38      private static final long serialVersionUID = 1L;
39  
40      
41  
42  
43      public BasicAuthCallContextHandler(  )
44      {
45      }
46  
47      public Map<String, String> getCallContextMap( HttpServletRequest request )
48      {
49          Map<String, String> result = null;
50  
51          String authHeader = request.getHeader( "Authorization" );
52  
53          if ( ( authHeader != null ) && ( authHeader.trim(  ).toLowerCase(  ).startsWith( "basic " ) ) )
54          {
55              int x = authHeader.lastIndexOf( ' ' );
56  
57              if ( x == -1 )
58              {
59                  return result;
60              }
61  
62              String credentials = null;
63  
64              try
65              {
66                  credentials = new String( Base64.decodeBase64( authHeader.substring( x + 1 ).getBytes( "ISO-8859-1" ) ),
67                          "ISO-8859-1" );
68              }
69              catch ( Exception e )
70              {
71                  return result;
72              }
73  
74              x = credentials.indexOf( ':' );
75  
76              if ( x == -1 )
77              {
78                  return result;
79              }
80  
81              
82              result = new HashMap<String, String>(  );
83              result.put( CallContext.USERNAME, credentials.substring( 0, x ) );
84              result.put( CallContext.PASSWORD, credentials.substring( x + 1 ) );
85          }
86  
87          return result;
88      }
89  }