1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.client.util;
20
21 import java.net.URI;
22 import java.nio.charset.StandardCharsets;
23
24 import org.eclipse.jetty.client.HttpClient;
25 import org.eclipse.jetty.client.api.AuthenticationStore;
26 import org.eclipse.jetty.client.api.ContentResponse;
27 import org.eclipse.jetty.client.api.Request;
28 import org.eclipse.jetty.http.HttpHeader;
29 import org.eclipse.jetty.util.Attributes;
30 import org.eclipse.jetty.util.B64Code;
31
32
33
34
35
36
37
38
39 public class BasicAuthentication extends AbstractAuthentication
40 {
41 private final String user;
42 private final String password;
43
44
45
46
47
48
49
50 public BasicAuthentication(URI uri, String realm, String user, String password)
51 {
52 super(uri, realm);
53 this.user = user;
54 this.password = password;
55 }
56
57 @Override
58 public String getType()
59 {
60 return "Basic";
61 }
62
63 @Override
64 public Result authenticate(Request request, ContentResponse response, HeaderInfo headerInfo, Attributes context)
65 {
66 return new BasicResult(getURI(), headerInfo.getHeader(), user, password);
67 }
68
69
70
71
72
73
74
75
76
77
78
79 public static class BasicResult implements Result
80 {
81 private final URI uri;
82 private final HttpHeader header;
83 private final String value;
84
85 public BasicResult(URI uri, String user, String password)
86 {
87 this(uri, HttpHeader.AUTHORIZATION, user, password);
88 }
89
90 public BasicResult(URI uri, HttpHeader header, String user, String password)
91 {
92 this.uri = uri;
93 this.header = header;
94 this.value = "Basic " + B64Code.encode(user + ":" + password, StandardCharsets.ISO_8859_1);
95 }
96
97 @Override
98 public URI getURI()
99 {
100 return uri;
101 }
102
103 @Override
104 public void apply(Request request)
105 {
106 request.header(header, value);
107 }
108
109 @Override
110 public String toString()
111 {
112 return String.format("Basic authentication result for %s", getURI());
113 }
114 }
115 }