Replaced internal Base64 by java.util.Base64 (#3803) (#3829) * Replaced core-common.src.main.java.org.glassfish.jersey.internal.util.Base64 with java.util.Base64 * fixed conversion to String after decoding of Base64 encode message Signed-off-by: Michael Durawa <michael.durawa@boehringer-ingelheim.com>
diff --git a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java index f7d7777..bab2807 100644 --- a/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java +++ b/connectors/jdk-connector/src/main/java/org/glassfish/jersey/jdk/connector/internal/ProxyBasicAuthenticator.java
@@ -17,8 +17,8 @@ package org.glassfish.jersey.jdk.connector.internal; import java.nio.charset.Charset; +import java.util.Base64; -import org.glassfish.jersey.internal.util.Base64; /** * @author Ondrej Kosatka (ondrej.kosatka at oracle.com) @@ -46,6 +46,6 @@ System.arraycopy(prefix, 0, usernamePassword, 0, prefix.length); System.arraycopy(passwordBytes, 0, usernamePassword, prefix.length, passwordBytes.length); - return "Basic " + Base64.encodeAsString(usernamePassword); + return "Basic " + Base64.getEncoder().encodeToString(usernamePassword); } }
diff --git a/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/ProxyTest.java b/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/ProxyTest.java index d1a0a72..15a2cdf 100644 --- a/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/ProxyTest.java +++ b/connectors/jdk-connector/src/test/java/org/glassfish/jersey/jdk/connector/internal/ProxyTest.java
@@ -19,6 +19,7 @@ import java.io.IOException; import java.io.OutputStream; import java.nio.charset.Charset; +import java.util.Base64; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -31,7 +32,6 @@ import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; -import org.glassfish.jersey.internal.util.Base64; import org.glassfish.jersey.jdk.connector.JdkConnectorProperties; import org.glassfish.jersey.jdk.connector.JdkConnectorProvider; import org.glassfish.jersey.server.ResourceConfig; @@ -227,7 +227,7 @@ response.setStatus(400); return false; } - String decoded = new String(Base64.decode(authorizationHeader.substring(6).getBytes()), + String decoded = new String(Base64.getDecoder().decode(authorizationHeader.substring(6).getBytes()), CHARACTER_SET); final String[] split = decoded.split(":"); final String username = split[0];
diff --git a/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java b/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java index f526307..b08b074 100644 --- a/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java +++ b/core-client/src/main/java/org/glassfish/jersey/client/authentication/BasicAuthenticator.java
@@ -16,12 +16,13 @@ package org.glassfish.jersey.client.authentication; +import java.util.Base64; + import javax.ws.rs.client.ClientRequestContext; import javax.ws.rs.client.ClientResponseContext; import javax.ws.rs.core.HttpHeaders; import org.glassfish.jersey.client.internal.LocalizationMessages; -import org.glassfish.jersey.internal.util.Base64; /** * Implementation of Basic Http Authentication method (RFC 2617). @@ -61,7 +62,7 @@ System.arraycopy(prefix, 0, usernamePassword, 0, prefix.length); System.arraycopy(password, 0, usernamePassword, prefix.length, password.length); - return "Basic " + Base64.encodeAsString(usernamePassword); + return "Basic " + Base64.getEncoder().encodeToString(usernamePassword); } /**
diff --git a/core-client/src/test/java/org/glassfish/jersey/client/filter/HttpBasicAuthFilterTest.java b/core-client/src/test/java/org/glassfish/jersey/client/filter/HttpBasicAuthFilterTest.java index 43f2511..e967db0 100644 --- a/core-client/src/test/java/org/glassfish/jersey/client/filter/HttpBasicAuthFilterTest.java +++ b/core-client/src/test/java/org/glassfish/jersey/client/filter/HttpBasicAuthFilterTest.java
@@ -17,6 +17,7 @@ package org.glassfish.jersey.client.filter; +import java.util.Base64; import java.util.concurrent.Future; import javax.ws.rs.client.Client; @@ -34,7 +35,7 @@ import org.glassfish.jersey.client.spi.AsyncConnectorCallback; import org.glassfish.jersey.client.spi.Connector; import org.glassfish.jersey.client.spi.ConnectorProvider; -import org.glassfish.jersey.internal.util.Base64; + import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -53,7 +54,8 @@ Invocation.Builder invBuilder = client.target(UriBuilder.fromUri("/").build()).request(); Response r = invBuilder.get(); - assertEquals("Basic " + Base64.encodeAsString("Uzivatelske jmeno:Heslo"), r.getHeaderString(HttpHeaders.AUTHORIZATION)); + assertEquals("Basic " + Base64.getEncoder().encodeToString("Uzivatelske jmeno:Heslo".getBytes()), + r.getHeaderString(HttpHeaders.AUTHORIZATION)); } @Test @@ -63,7 +65,7 @@ Invocation.Builder invBuilder = client.target(UriBuilder.fromUri("/").build()).request(); Response r = invBuilder.get(); - assertEquals("Basic " + Base64.encodeAsString(":"), r.getHeaderString(HttpHeaders.AUTHORIZATION)); + assertEquals("Basic " + Base64.getEncoder().encodeToString(":".getBytes()), r.getHeaderString(HttpHeaders.AUTHORIZATION)); } private static class TestConnector implements Connector, ConnectorProvider {
diff --git a/core-common/src/main/java/org/glassfish/jersey/internal/util/Base64.java b/core-common/src/main/java/org/glassfish/jersey/internal/util/Base64.java deleted file mode 100644 index f3c6f57..0000000 --- a/core-common/src/main/java/org/glassfish/jersey/internal/util/Base64.java +++ /dev/null
@@ -1,189 +0,0 @@ -/* - * Copyright (c) 2012, 2018 Oracle and/or its affiliates. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v. 2.0, which is available at - * http://www.eclipse.org/legal/epl-2.0. - * - * This Source Code may also be made available under the following Secondary - * Licenses when the conditions for such availability set forth in the - * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, - * version 2 with the GNU Classpath Exception, which is available at - * https://www.gnu.org/software/classpath/license.html. - * - * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 - */ - -package org.glassfish.jersey.internal.util; - -import java.io.UnsupportedEncodingException; - -/** - * Utility class that implements base64 encoding and decoding. - * - * @author Martin Matula - */ -public class Base64 { - - private static final byte[] CHAR_SET; - - static { - final String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - byte[] cs; - - try { - cs = s.getBytes("ASCII"); - } catch (final UnsupportedEncodingException ex) { - // should never happen - cs = s.getBytes(); - } - CHAR_SET = cs; - } - - private static final byte[] BASE64INDEXES = { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - /** - * Encodes array of bytes using base64 encoding. - * - * @param buffer Array of bytes to be encoded. - * @return Encoded result as an array of bytes. - */ - public static byte[] encode(final byte[] buffer) { - final int ccount = buffer.length / 3; - final int rest = buffer.length % 3; - final byte[] result = new byte[(ccount + (rest > 0 ? 1 : 0)) * 4]; - - for (int i = 0; i < ccount; i++) { - result[i * 4] = CHAR_SET[(buffer[i * 3] >> 2) & 0xff]; - result[i * 4 + 1] = CHAR_SET[(((buffer[i * 3] & 0x03) << 4) | (buffer[i * 3 + 1] >> 4)) & 0xff]; - result[i * 4 + 2] = CHAR_SET[(((buffer[i * 3 + 1] & 0x0f) << 2) | (buffer[i * 3 + 2] >> 6)) & 0xff]; - result[i * 4 + 3] = CHAR_SET[buffer[i * 3 + 2] & 0x3f]; - } - - int temp = 0; - - if (rest > 0) { - if (rest == 2) { - result[ccount * 4 + 2] = CHAR_SET[((buffer[ccount * 3 + 1] & 0x0f) << 2) & 0xff]; - temp = buffer[ccount * 3 + 1] >> 4; - } else { - result[ccount * 4 + 2] = CHAR_SET[CHAR_SET.length - 1]; - } - result[ccount * 4 + 3] = CHAR_SET[CHAR_SET.length - 1]; - result[ccount * 4 + 1] = CHAR_SET[(((buffer[ccount * 3] & 0x03) << 4) | temp) & 0xff]; - result[ccount * 4] = CHAR_SET[(buffer[ccount * 3] >> 2) & 0xff]; - } - - return result; - } - - /** - * Decodes Base64 data into octects. - * - * @param buffer Byte array containing Base64 data - * @return Array containing decoded data. - */ - @SuppressWarnings("fallthrough") - public static byte[] decode(final byte[] buffer) { - if (buffer.length < 4 && (buffer.length % 4) != 0) { - return new byte[0]; - } - - final int ccount = buffer.length / 4; - final int paddingCount = (buffer[buffer.length - 1] == '=' ? 1 : 0) + (buffer[buffer.length - 2] == '=' ? 1 : 0); - final byte[] result = new byte[3 * (ccount - 1) + (3 - paddingCount)]; - - for (int i = 0; i < (ccount - 1); i++) { - result[i * 3] = (byte) ((BASE64INDEXES[buffer[i * 4]] << 2) | (BASE64INDEXES[buffer[i * 4 + 1]] >> 4)); - result[i * 3 + 1] = (byte) ((BASE64INDEXES[buffer[i * 4 + 1]] << 4) | (BASE64INDEXES[buffer[i * 4 + 2]] >> 2)); - result[i * 3 + 2] = (byte) ((BASE64INDEXES[buffer[i * 4 + 2]] << 6) | BASE64INDEXES[buffer[i * 4 + 3]]); - } - - final int i = ccount - 1; - switch (paddingCount) { - case 0: - result[i * 3 + 2] = (byte) ((BASE64INDEXES[buffer[i * 4 + 2]] << 6) | BASE64INDEXES[buffer[i * 4 + 3]]); - result[i * 3 + 1] = (byte) ((BASE64INDEXES[buffer[i * 4 + 1]] << 4) | (BASE64INDEXES[buffer[i * 4 + 2]] >> 2)); - result[i * 3] = (byte) ((BASE64INDEXES[buffer[i * 4]] << 2) | (BASE64INDEXES[buffer[i * 4 + 1]] >> 4)); - break; - case 1: - result[i * 3 + 1] = (byte) ((BASE64INDEXES[buffer[i * 4 + 1]] << 4) | (BASE64INDEXES[buffer[i * 4 + 2]] >> 2)); - result[i * 3] = (byte) ((BASE64INDEXES[buffer[i * 4]] << 2) | (BASE64INDEXES[buffer[i * 4 + 1]] >> 4)); - break; - case 2: - result[i * 3] = (byte) ((BASE64INDEXES[buffer[i * 4]] << 2) | (BASE64INDEXES[buffer[i * 4 + 1]] >> 4)); - break; - } - - return result; - } - - /** - * Encodes array of bytes using base64 encoding and returns the result as a string. - * - * @param buffer Array of bytes to be encoded. - * @return Resulting encoded string. - */ - public static String encodeAsString(final byte[] buffer) { - final byte[] result = encode(buffer); - try { - return new String(result, "ASCII"); - } catch (final UnsupportedEncodingException ex) { - // should never happen - return new String(result); - } - } - - /** - * Encodes a string using base64 and returns the result as another string. - * - * @param text String to be encoded. - * @return Resulting encoded string. - */ - public static String encodeAsString(final String text) { - return encodeAsString(text.getBytes()); - } - - /** - * Decodes array of bytes using base64 decoding and returns the result as a string. - * - * @param buffer Array of bytes to be decoded. - * @return Resulting decoded string. - */ - public static String decodeAsString(final byte[] buffer) { - final byte[] result = decode(buffer); - try { - return new String(result, "ASCII"); - } catch (final UnsupportedEncodingException ex) { - // should never happen - return new String(result); - } - } - - /** - * Decodes a string using base64 and returns the result as another string. - * - * @param text String to be decoded. - * @return Resulting decoded string. - */ - public static String decodeAsString(final String text) { - return decodeAsString(text.getBytes()); - } -}
diff --git a/core-common/src/test/java/org/glassfish/jersey/internal/util/Base64Test.java b/core-common/src/test/java/org/glassfish/jersey/internal/util/Base64Test.java index 89dfa98..b083ad9 100644 --- a/core-common/src/test/java/org/glassfish/jersey/internal/util/Base64Test.java +++ b/core-common/src/test/java/org/glassfish/jersey/internal/util/Base64Test.java
@@ -17,6 +17,7 @@ package org.glassfish.jersey.internal.util; import java.util.Arrays; +import java.util.Base64; import org.junit.Test; import static org.junit.Assert.assertEquals; @@ -48,35 +49,35 @@ @Test public void testEncodeString() throws Exception { for (int i = 0; i < decoded.length; i++) { - assertEquals(encoded[i], new String(Base64.encode(decoded[i].getBytes("ASCII")), "ASCII")); + assertEquals(encoded[i], new String(Base64.getEncoder().encode(decoded[i].getBytes("ASCII")), "ASCII")); } } @Test public void testDecodeString() throws Exception { for (int i = 0; i < encoded.length; i++) { - assertEquals(decoded[i], new String(Base64.decode(encoded[i].getBytes("ASCII")), "ASCII")); + assertEquals(decoded[i], new String(Base64.getDecoder().decode(encoded[i].getBytes("ASCII")), "ASCII")); } } @Test public void testRoundtripLengthMod3Equals0() { byte[] data = {0, 1, 2, 3, 4, 5, 6, 7, 8}; - byte[] result = Base64.decode(Base64.encode(data)); + byte[] result = Base64.getDecoder().decode(Base64.getEncoder().encode(data)); assertTrue("failed to roundtrip value to base64", Arrays.equals(data, result)); } @Test public void testRoundtripLengthMod3Equals1() { byte[] data = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - byte[] result = Base64.decode(Base64.encode(data)); + byte[] result = Base64.getDecoder().decode(Base64.getEncoder().encode(data)); assertTrue("failed to roundtrip value to base64", Arrays.equals(data, result)); } @Test public void testRoundtripLengthMod3Equals2() { byte[] data = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - byte[] result = Base64.decode(Base64.encode(data)); + byte[] result = Base64.getDecoder().decode(Base64.getEncoder().encode(data)); assertTrue("failed to roundtrip value to base64", Arrays.equals(data, result)); } @@ -84,10 +85,10 @@ public void testRoundtripOneByteGreaterThan127() { byte[] data = {(byte) 128}; try { - byte[] result = Base64.decode(Base64.encode(data)); - fail(); - } catch (Exception e) { + byte[] result = Base64.getDecoder().decode(Base64.getEncoder().encode(data)); // ok + } catch (Exception e) { + fail(); } } @@ -95,10 +96,10 @@ public void testRoundtripAssortedValues() { byte[] data = {0, 1, 63, 64, 65, (byte) 127, (byte) 128, (byte) 1299, (byte) 254, (byte) 255}; try { - Base64.decode(Base64.encode(data)); - fail(); - } catch (Exception e) { + Base64.getDecoder().decode(Base64.getEncoder().encode(data)); // ok + } catch (Exception e) { + fail(); } } @@ -109,10 +110,10 @@ data[i] = (byte) (255 - i); } try { - new String(Base64.encode(data)); - fail(); - } catch (Exception e) { + new String(Base64.getEncoder().encode(data)); // ok + } catch (Exception e) { + fail(); } } @@ -122,7 +123,7 @@ + "+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn" + "+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6" + "/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w=="; - byte[] result = Base64.decode(data.getBytes()); + byte[] result = Base64.getDecoder().decode(data.getBytes()); assertEquals("incorrect length", result.length, 256); for (int i = 0; i < 256; ++i) {
diff --git a/security/oauth1-signature/src/test/java/org/glassfish/jersey/oauth1/signature/OAuthBase64Test.java b/security/oauth1-signature/src/test/java/org/glassfish/jersey/oauth1/signature/OAuthBase64Test.java index 9187fa1..f72b023 100644 --- a/security/oauth1-signature/src/test/java/org/glassfish/jersey/oauth1/signature/OAuthBase64Test.java +++ b/security/oauth1-signature/src/test/java/org/glassfish/jersey/oauth1/signature/OAuthBase64Test.java
@@ -31,17 +31,17 @@ public void test() throws IOException { final String str = "Hello World123456789jhfsljkh347uweihd7834yfoiuhef5re4g54es35gf474w5/"; final String encoded = Base64.encode(str.getBytes()); - final String encodedUtil = new String(org.glassfish.jersey.internal.util.Base64.encode(str.getBytes())); - final String encodedUtilStr = org.glassfish.jersey.internal.util.Base64.encodeAsString(str); + final String encodedUtil = new String(java.util.Base64.getEncoder().encode(str.getBytes())); + final String encodedUtilStr = java.util.Base64.getEncoder().encodeToString(str.getBytes()); System.out.println(encoded); Assert.assertEquals(encoded, encodedUtil); Assert.assertEquals(encoded, encodedUtilStr); final String decoded = new String(Base64.decode(encoded)); - final String decodedUtil = new String(org.glassfish.jersey.internal.util.Base64.decode(encoded.getBytes())); - final String decodedUtilStr = org.glassfish.jersey.internal.util.Base64.decodeAsString(encoded.getBytes()); - final String decodedUtilStr2 = org.glassfish.jersey.internal.util.Base64.decodeAsString(encoded); + final String decodedUtil = new String(java.util.Base64.getDecoder().decode(encoded.getBytes())); + final String decodedUtilStr = new String(java.util.Base64.getDecoder().decode(encoded.getBytes())); + final String decodedUtilStr2 = new String(java.util.Base64.getDecoder().decode(encoded)); Assert.assertEquals(decoded, decodedUtil); Assert.assertEquals(decoded, decodedUtilStr);
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/HttpAuthorizationTest.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/HttpAuthorizationTest.java index 24d8114..5741988 100644 --- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/HttpAuthorizationTest.java +++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/HttpAuthorizationTest.java
@@ -23,6 +23,7 @@ import java.lang.annotation.Target; import java.nio.charset.Charset; import java.security.Principal; +import java.util.Base64; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -39,7 +40,6 @@ import javax.ws.rs.core.SecurityContext; import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature; -import org.glassfish.jersey.internal.util.Base64; import org.glassfish.jersey.logging.LoggingFeature; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.test.JerseyTest; @@ -157,7 +157,7 @@ String authHeader = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION); if (authHeader != null && authHeader.trim().toUpperCase().startsWith("BASIC")) { - String decoded = new String(Base64.decode(authHeader.substring(6).getBytes()), CHARACTER_SET); + String decoded = new String(Base64.getDecoder().decode(authHeader.substring(6).getBytes()), CHARACTER_SET); // String decoded = Base64.decodeAsString(authHeader.substring(6)); final String[] split = decoded.split(":"); final String username = split[0];
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/RootResource.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/RootResource.java index bccbf94..23205f2 100644 --- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/RootResource.java +++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/RootResource.java
@@ -16,6 +16,7 @@ package org.glassfish.jersey.tests.e2e.client.connector.ssl; +import java.util.Base64; import java.util.logging.Logger; import javax.ws.rs.GET; @@ -23,7 +24,6 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; -import org.glassfish.jersey.internal.util.Base64; /** * Simple resource demonstrating low level approach of getting user credentials. @@ -60,7 +60,7 @@ String auth = headers.getRequestHeader("authorization").get(0); auth = auth.substring("Basic ".length()); - String[] values = Base64.decodeAsString(auth).split(":"); + String[] values = new String(Base64.getDecoder().decode(auth)).split(":"); // String username = values[0]; // String password = values[1];
diff --git a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SecurityFilter.java b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SecurityFilter.java index 128d4cf..986b64c 100644 --- a/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SecurityFilter.java +++ b/tests/e2e-client/src/test/java/org/glassfish/jersey/tests/e2e/client/connector/ssl/SecurityFilter.java
@@ -18,6 +18,7 @@ import java.io.IOException; import java.security.Principal; +import java.util.Base64; import java.util.logging.Logger; import javax.ws.rs.WebApplicationException; @@ -31,7 +32,6 @@ import javax.ws.rs.core.UriInfo; import javax.ws.rs.ext.Provider; -import org.glassfish.jersey.internal.util.Base64; import org.glassfish.jersey.server.ContainerRequest; /** @@ -73,7 +73,7 @@ // "Only HTTP Basic authentication is supported" } authentication = authentication.substring("Basic ".length()); - String[] values = Base64.decodeAsString(authentication).split(":"); + String[] values = new String(Base64.getDecoder().decode(authentication)).split(":"); if (values.length < 2) { throw new WebApplicationException(400); // "Invalid syntax for username and password"