1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.http.filters;
20
21 import static com.google.common.base.Preconditions.checkNotNull;
22 import static org.jclouds.Constants.PROPERTY_CREDENTIAL;
23 import static org.jclouds.Constants.PROPERTY_IDENTITY;
24
25 import java.io.UnsupportedEncodingException;
26
27 import javax.inject.Inject;
28 import javax.inject.Named;
29 import javax.inject.Singleton;
30 import javax.ws.rs.core.HttpHeaders;
31
32 import org.jclouds.crypto.Crypto;
33 import org.jclouds.crypto.CryptoStreams;
34 import org.jclouds.http.HttpException;
35 import org.jclouds.http.HttpRequest;
36 import org.jclouds.http.HttpRequestFilter;
37 import org.jclouds.http.utils.ModifyRequest;
38
39
40
41
42
43
44
45
46 @Singleton
47 public class BasicAuthentication implements HttpRequestFilter {
48
49 private final String header;
50
51 @Inject
52 public BasicAuthentication(@Named(PROPERTY_IDENTITY) String user, @Named(PROPERTY_CREDENTIAL) String password,
53 Crypto crypto) throws UnsupportedEncodingException {
54 this.header = "Basic "
55 + CryptoStreams.base64(String.format("%s:%s", checkNotNull(user, "user"),
56 checkNotNull(password, "password")).getBytes("UTF-8"));
57 }
58
59 @Override
60 public HttpRequest filter(HttpRequest request) throws HttpException {
61 return ModifyRequest.replaceHeader(request, HttpHeaders.AUTHORIZATION, header);
62 }
63 }