Skip to content

Commit 83e0397

Browse files
authored
SOLR-14297: Replace commons-codec Base64 with JDK8 Base64 (#2222)
1 parent e5a16f0 commit 83e0397

File tree

5 files changed

+15
-11
lines changed

5 files changed

+15
-11
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
@defaultMessage Use java.nio.charset.StandardCharsets instead
22
org.apache.commons.codec.Charsets
3+
4+
@defaultMessage Use java.util.Base64 instead
5+
org.apache.commons.codec.binary.Base64

solr/CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@ Other Changes
186186

187187
* SOLR-14034: Remove deprecated min_rf references (Tim Dillon)
188188

189+
* SOLR-14297: Replace commons-codec Base64 with JDK8 Base64 (Andras Salamon via Houston Putman)
190+
189191
Bug Fixes
190192
---------------------
191193
* SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor that could lead to out of order execution

solr/core/src/java/org/apache/solr/security/BasicAuthPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.lang.invoke.MethodHandles;
2727
import java.nio.charset.StandardCharsets;
2828
import java.security.Principal;
29+
import java.util.Base64;
2930
import java.util.HashMap;
3031
import java.util.List;
3132
import java.util.Map;
@@ -34,7 +35,6 @@
3435
import java.util.StringTokenizer;
3536

3637
import com.google.common.collect.ImmutableSet;
37-
import org.apache.commons.codec.binary.Base64;
3838
import org.apache.commons.lang3.builder.ToStringBuilder;
3939
import org.apache.http.Header;
4040
import org.apache.http.HttpHeaders;
@@ -133,7 +133,7 @@ public boolean doAuthenticate(HttpServletRequest request, HttpServletResponse re
133133
if (basic.equalsIgnoreCase("Basic")) {
134134
if (st.hasMoreTokens()) {
135135
try {
136-
String credentials = new String(Base64.decodeBase64(st.nextToken()), StandardCharsets.UTF_8);
136+
String credentials = new String(Base64.getDecoder().decode(st.nextToken()), StandardCharsets.UTF_8);
137137
int p = credentials.indexOf(":");
138138
if (p != -1) {
139139
final String username = credentials.substring(0, p).trim();
@@ -222,7 +222,7 @@ protected boolean interceptInternodeRequest(HttpRequest httpRequest, HttpContext
222222
HttpClientContext httpClientContext = (HttpClientContext) httpContext;
223223
if (httpClientContext.getUserToken() instanceof BasicAuthUserPrincipal) {
224224
BasicAuthUserPrincipal principal = (BasicAuthUserPrincipal) httpClientContext.getUserToken();
225-
String userPassBase64 = Base64.encodeBase64String((principal.getName() + ":" + principal.getPassword()).getBytes(StandardCharsets.UTF_8));
225+
String userPassBase64 = Base64.getEncoder().encodeToString((principal.getName() + ":" + principal.getPassword()).getBytes(StandardCharsets.UTF_8));
226226
httpRequest.setHeader(HttpHeaders.AUTHORIZATION, "Basic " + userPassBase64);
227227
return true;
228228
}
@@ -237,7 +237,7 @@ protected boolean interceptInternodeRequest(Request request) {
237237
Object userToken = request.getAttributes().get(Http2SolrClient.REQ_PRINCIPAL_KEY);
238238
if (userToken instanceof BasicAuthUserPrincipal) {
239239
BasicAuthUserPrincipal principal = (BasicAuthUserPrincipal) userToken;
240-
String userPassBase64 = Base64.encodeBase64String((principal.getName() + ":" + principal.getPassword()).getBytes(StandardCharsets.UTF_8));
240+
String userPassBase64 = Base64.getEncoder().encodeToString((principal.getName() + ":" + principal.getPassword()).getBytes(StandardCharsets.UTF_8));
241241
request.header(HttpHeaders.AUTHORIZATION, "Basic " + userPassBase64);
242242
return true;
243243
}

solr/core/src/java/org/apache/solr/security/Sha256AuthenticationProvider.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.security.MessageDigest;
2222
import java.security.NoSuchAlgorithmException;
2323
import java.security.SecureRandom;
24+
import java.util.Base64;
2425
import java.util.Collections;
2526
import java.util.LinkedHashMap;
2627
import java.util.List;
@@ -29,7 +30,6 @@
2930
import java.util.Set;
3031

3132
import com.google.common.collect.ImmutableSet;
32-
import org.apache.commons.codec.binary.Base64;
3333
import org.apache.solr.common.util.CommandOperation;
3434
import org.apache.solr.common.util.Utils;
3535
import org.apache.solr.common.util.ValidatingJsonMap;
@@ -60,7 +60,7 @@ public static String getSaltedHashedValue(String pwd) {
6060
final Random r = new SecureRandom();
6161
byte[] salt = new byte[32];
6262
r.nextBytes(salt);
63-
String saltBase64 = Base64.encodeBase64String(salt);
63+
String saltBase64 = Base64.getEncoder().encodeToString(salt);
6464
String val = sha256(pwd, saltBase64) + " " + saltBase64;
6565
return val;
6666
}
@@ -121,13 +121,13 @@ public static String sha256(String password, String saltKey) {
121121
}
122122
if (saltKey != null) {
123123
digest.reset();
124-
digest.update(Base64.decodeBase64(saltKey));
124+
digest.update(Base64.getDecoder().decode(saltKey));
125125
}
126126

127127
byte[] btPass = digest.digest(password.getBytes(StandardCharsets.UTF_8));
128128
digest.reset();
129129
btPass = digest.digest(btPass);
130-
return Base64.encodeBase64String(btPass);
130+
return Base64.getEncoder().encodeToString(btPass);
131131
}
132132

133133
@Override

solr/core/src/java/org/apache/solr/servlet/cache/HttpCacheHeaderUtil.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.nio.charset.StandardCharsets;
21+
import java.util.Base64;
2122
import java.util.Collections;
2223
import java.util.List;
2324
import java.util.UUID;
@@ -37,8 +38,6 @@
3738
import org.apache.solr.request.SolrQueryRequest;
3839
import org.apache.solr.response.SolrQueryResponse;
3940

40-
import org.apache.commons.codec.binary.Base64;
41-
4241
public final class HttpCacheHeaderUtil {
4342

4443
public static void sendNotModified(HttpServletResponse res) {
@@ -72,7 +71,7 @@ public String calcEtag(final long currentIndexVersion) {
7271
if (currentIndexVersion != indexVersionCache) {
7372
indexVersionCache=currentIndexVersion;
7473
etagCache = "\""
75-
+ new String(Base64.encodeBase64((Long.toHexString(Long.reverse(indexVersionCache)) + etagSeed)
74+
+ new String(Base64.getEncoder().encode((Long.toHexString(Long.reverse(indexVersionCache)) + etagSeed)
7675
.getBytes(StandardCharsets.US_ASCII)), StandardCharsets.US_ASCII) + "\"";
7776
}
7877

0 commit comments

Comments
 (0)