You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bu...@apache.org on 2020/02/21 10:46:53 UTC
[cxf] 01/02: use DefaultBasicAuthSupplier.getBasicAuthHeader
This is an automated email from the ASF dual-hosted git repository.
buhhunyx pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit fca1472e021feed0b470127dc5d71f646e1406f3
Author: amarkevich <am...@talend.com>
AuthorDate: Wed Apr 10 13:45:07 2019 +0300
use DefaultBasicAuthSupplier.getBasicAuthHeader
---
.../security/oauth2/client/OAuthClientUtils.java | 12 ++-----
.../http_jetty/JettyHTTPDestinationTest.java | 5 ++-
.../netty/server/NettyHttpDestinationTest.java | 5 ++-
.../http_undertow/UndertowHTTPDestinationTest.java | 5 ++-
.../http/auth/DefaultBasicAuthSupplier.java | 2 +-
.../apache/cxf/transport/http/HTTPConduitTest.java | 9 +++---
.../http/auth/DefaultBasicAuthSupplierTest.java | 37 ++++++++++++++++++++++
.../jaxrs/security/AbstractSpringSecurityTest.java | 13 +++-----
.../JAXRSJaasConfigurationSecurityTest.java | 3 +-
.../jaxrs/security/JAXRSJaasSecurityTest.java | 3 +-
.../systest/https/conduit/HTTPSConduitTest.java | 6 ++--
11 files changed, 60 insertions(+), 40 deletions(-)
diff --git a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/client/OAuthClientUtils.java b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/client/OAuthClientUtils.java
index 81b92f0..0da1ce3 100644
--- a/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/client/OAuthClientUtils.java
+++ b/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/client/OAuthClientUtils.java
@@ -20,7 +20,6 @@ package org.apache.cxf.rs.security.oauth2.client;
import java.io.InputStream;
import java.net.URI;
-import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.Map;
@@ -32,7 +31,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.jaxrs.client.WebClient;
import org.apache.cxf.rs.security.oauth2.common.AccessTokenGrant;
@@ -43,6 +41,7 @@ import org.apache.cxf.rs.security.oauth2.provider.OAuthJSONProvider;
import org.apache.cxf.rs.security.oauth2.provider.OAuthServiceException;
import org.apache.cxf.rs.security.oauth2.tokens.hawk.HawkAuthorizationScheme;
import org.apache.cxf.rs.security.oauth2.utils.OAuthConstants;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
/**
* The utility class for simplifying working with OAuth servers
@@ -281,13 +280,8 @@ public final class OAuthClientUtils {
if (consumer != null) {
boolean secretAvailable = !StringUtils.isEmpty(consumer.getClientSecret());
if (setAuthorizationHeader && secretAvailable) {
- try {
- String data = Base64Utility.encode((consumer.getClientId() + ':' + consumer.getClientSecret())
- .getBytes(StandardCharsets.UTF_8));
- accessTokenService.replaceHeader(HttpHeaders.AUTHORIZATION, "Basic " + data);
- } catch (Exception ex) {
- throw new ProcessingException(ex);
- }
+ accessTokenService.replaceHeader(HttpHeaders.AUTHORIZATION,
+ DefaultBasicAuthSupplier.getBasicAuthHeader(consumer.getClientId(), consumer.getClientSecret()));
} else {
form.param(OAuthConstants.CLIENT_ID, consumer.getClientId());
if (secretAvailable) {
diff --git a/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java b/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
index 7782584..f2262a2 100644
--- a/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
+++ b/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
@@ -42,7 +42,6 @@ import org.apache.cxf.Bus;
import org.apache.cxf.BusException;
import org.apache.cxf.BusFactory;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.continuations.SuspendedInvocationException;
@@ -65,6 +64,7 @@ import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transport.http.ContinuationProviderFactory;
import org.apache.cxf.transport.http.DestinationRegistry;
import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
import org.apache.cxf.ws.addressing.AddressingProperties;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -90,8 +90,7 @@ public class JettyHTTPDestinationTest {
protected static final String AUTH_HEADER = "Authorization";
protected static final String USER = "copernicus";
protected static final String PASSWD = "epicycles";
- protected static final String BASIC_AUTH =
- "Basic " + Base64Utility.encode((USER + ":" + PASSWD).getBytes());
+ protected static final String BASIC_AUTH = DefaultBasicAuthSupplier.getBasicAuthHeader(USER, PASSWD);
private static final String NOWHERE = "http://nada.nothing.nowhere.null/";
private static final String PAYLOAD = "message payload";
diff --git a/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java b/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java
index 7de6544..7aae458 100644
--- a/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java
+++ b/rt/transports/http-netty/netty-server/src/test/java/org/apache/cxf/transport/http/netty/server/NettyHttpDestinationTest.java
@@ -43,7 +43,6 @@ import org.apache.cxf.Bus;
import org.apache.cxf.BusException;
import org.apache.cxf.BusFactory;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.continuations.SuspendedInvocationException;
@@ -66,6 +65,7 @@ import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transport.http.ContinuationProviderFactory;
import org.apache.cxf.transport.http.DestinationRegistry;
import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transport.http.netty.server.util.Utils;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
import org.apache.cxf.ws.addressing.AddressingProperties;
@@ -89,8 +89,7 @@ public class NettyHttpDestinationTest {
protected static final String AUTH_HEADER = "Authorization";
protected static final String USER = "copernicus";
protected static final String PASSWD = "epicycles";
- protected static final String BASIC_AUTH =
- "Basic " + Base64Utility.encode((USER + ":" + PASSWD).getBytes());
+ protected static final String BASIC_AUTH = DefaultBasicAuthSupplier.getBasicAuthHeader(USER, PASSWD);
private static final String NOWHERE = "http://nada.nothing.nowhere.null/";
private static final String PAYLOAD = "message payload";
diff --git a/rt/transports/http-undertow/src/test/java/org/apache/cxf/transport/http_undertow/UndertowHTTPDestinationTest.java b/rt/transports/http-undertow/src/test/java/org/apache/cxf/transport/http_undertow/UndertowHTTPDestinationTest.java
index dbbadce..77d670c 100644
--- a/rt/transports/http-undertow/src/test/java/org/apache/cxf/transport/http_undertow/UndertowHTTPDestinationTest.java
+++ b/rt/transports/http-undertow/src/test/java/org/apache/cxf/transport/http_undertow/UndertowHTTPDestinationTest.java
@@ -43,7 +43,6 @@ import org.apache.cxf.Bus;
import org.apache.cxf.BusException;
import org.apache.cxf.BusFactory;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.continuations.SuspendedInvocationException;
@@ -66,6 +65,7 @@ import org.apache.cxf.transport.http.AbstractHTTPDestination;
import org.apache.cxf.transport.http.ContinuationProviderFactory;
import org.apache.cxf.transport.http.DestinationRegistry;
import org.apache.cxf.transport.http.HTTPTransportFactory;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
import org.apache.cxf.ws.addressing.AddressingProperties;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -92,8 +92,7 @@ public class UndertowHTTPDestinationTest {
protected static final String AUTH_HEADER = "Authorization";
protected static final String USER = "copernicus";
protected static final String PASSWD = "epicycles";
- protected static final String BASIC_AUTH =
- "Basic " + Base64Utility.encode((USER + ":" + PASSWD).getBytes());
+ protected static final String BASIC_AUTH = DefaultBasicAuthSupplier.getBasicAuthHeader(USER, PASSWD);
private static final String NOWHERE = "http://nada.nothing.nowhere.null/";
private static final String PAYLOAD = "message payload";
diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplier.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplier.java
index 071e129..ccb7cc9 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplier.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplier.java
@@ -41,7 +41,7 @@ public final class DefaultBasicAuthSupplier implements HttpAuthSupplier {
}
public static String getBasicAuthHeader(String userName, String passwd, boolean useIso8859) {
- String userAndPass = userName + ":" + passwd;
+ final String userAndPass = userName + ':' + passwd;
byte[] authBytes = useIso8859 ? userAndPass.getBytes(StandardCharsets.ISO_8859_1) : userAndPass.getBytes();
return "Basic " + Base64Utility.encode(authBytes);
}
diff --git a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
index cce33b0..520d7a0 100644
--- a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
+++ b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitTest.java
@@ -31,7 +31,6 @@ import java.util.concurrent.RejectedExecutionException;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.extension.ExtensionManagerBus;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.EndpointImpl;
@@ -42,6 +41,7 @@ import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.http.HTTPConduit.WrappedOutputStream;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transport.http.auth.HttpAuthSupplier;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -171,7 +171,7 @@ public class HTTPConduitTest {
headers.get("Authorization"));
assertEquals("Unexpected Authorization Token",
- "Basic " + Base64Utility.encode("testUser:password".getBytes()),
+ DefaultBasicAuthSupplier.getBasicAuthHeader("testUser", "password"),
headers.get("Authorization").get(0));
}
@@ -203,7 +203,7 @@ public class HTTPConduitTest {
headers.get("Authorization"));
assertEquals("Unexpected Authorization Token",
- "Basic " + Base64Utility.encode("Satan:hell".getBytes()),
+ DefaultBasicAuthSupplier.getBasicAuthHeader("Satan", "hell"),
headers.get("Authorization").get(0));
// Setting a Basic Auth User Pass should override
@@ -235,7 +235,7 @@ public class HTTPConduitTest {
CastUtils.cast((Map<?, ?>)message.get(Message.PROTOCOL_HEADERS));
assertEquals("Unexpected Authorization Token",
- "Basic " + Base64Utility.encode("Hello:world".getBytes()),
+ DefaultBasicAuthSupplier.getBasicAuthHeader("Hello", "world"),
headers.get("Authorization").get(0));
}
@@ -281,7 +281,6 @@ public class HTTPConduitTest {
assertEquals("expected", ex.getMessage());
}
} catch (Exception ex) {
- ex.printStackTrace();
throw ex;
}
}
diff --git a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplierTest.java b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplierTest.java
new file mode 100644
index 0000000..d5c8009
--- /dev/null
+++ b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/auth/DefaultBasicAuthSupplierTest.java
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.cxf.transport.http.auth;
+
+import org.apache.cxf.common.util.StringUtils;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+
+public class DefaultBasicAuthSupplierTest {
+
+ @Test
+ public void testGetBasicAuthHeader() {
+ assertFalse(StringUtils.isEmpty(DefaultBasicAuthSupplier.getBasicAuthHeader(null, null)));
+ assertFalse(StringUtils.isEmpty(DefaultBasicAuthSupplier.getBasicAuthHeader("u", null)));
+ assertFalse(StringUtils.isEmpty(DefaultBasicAuthSupplier.getBasicAuthHeader(null, "p")));
+ assertFalse(StringUtils.isEmpty(DefaultBasicAuthSupplier.getBasicAuthHeader("u", "p")));
+ }
+
+}
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/AbstractSpringSecurityTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/AbstractSpringSecurityTest.java
index 9cbded9..09af496 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/AbstractSpringSecurityTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/AbstractSpringSecurityTest.java
@@ -21,9 +21,9 @@ package org.apache.cxf.systest.jaxrs.security;
import java.io.InputStream;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.helpers.IOUtils;
import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.RequestBuilder;
@@ -35,16 +35,13 @@ import static org.junit.Assert.assertEquals;
public abstract class AbstractSpringSecurityTest extends AbstractBusClientServerTestBase {
- protected static String basicAuthHeader(String user, String password) {
- return "Basic " + Base64Utility.encode((user + ':' + password).getBytes());
- }
-
protected void getBook(String endpointAddress, String user, String password, int expectedStatus) throws Exception {
try (CloseableHttpClient client = HttpClientBuilder.create().build()) {
CloseableHttpResponse response = client.execute(RequestBuilder
- .get(endpointAddress)
- .addHeader(HttpHeaders.ACCEPT, "application/xml")
- .addHeader(HttpHeaders.AUTHORIZATION, basicAuthHeader(user, password)).build());
+ .get(endpointAddress)
+ .addHeader(HttpHeaders.ACCEPT, "application/xml")
+ .addHeader(HttpHeaders.AUTHORIZATION, DefaultBasicAuthSupplier.getBasicAuthHeader(user, password))
+ .build());
assertEquals(expectedStatus, response.getStatusLine().getStatusCode());
if (expectedStatus == 200) {
try (InputStream expected = getClass()
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasConfigurationSecurityTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasConfigurationSecurityTest.java
index 46bf3f8..72d193e 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasConfigurationSecurityTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasConfigurationSecurityTest.java
@@ -60,9 +60,8 @@ public class JAXRSJaasConfigurationSecurityTest extends AbstractSpringSecurityTe
public void testJaasFilterAuthenticationFailure() throws Exception {
String endpointAddress =
"http://localhost:" + PORT + "/service/jaasConfigFilter/bookstorestorage/thosebooks/123";
- WebClient wc = WebClient.create(endpointAddress);
+ WebClient wc = WebClient.create(endpointAddress, "foo", "bar1", null);
wc.accept("text/xml");
- wc.header(HttpHeaders.AUTHORIZATION, basicAuthHeader("foo", "bar1"));
Response r = wc.get();
assertEquals(401, r.getStatus());
Object wwwAuthHeader = r.getMetadata().getFirst(HttpHeaders.WWW_AUTHENTICATE);
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasSecurityTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasSecurityTest.java
index 114a46e..426694f 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasSecurityTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/security/JAXRSJaasSecurityTest.java
@@ -127,9 +127,8 @@ public class JAXRSJaasSecurityTest extends AbstractSpringSecurityTest {
public void testJaasFilterAuthenticationFailureWithRedirection() throws Exception {
String endpointAddress =
"http://localhost:" + PORT + "/service/jaas2/bookstorestorage/thosebooks/123";
- WebClient wc = WebClient.create(endpointAddress);
+ WebClient wc = WebClient.create(endpointAddress, "foo", "bar1", null);
wc.accept("text/xml,text/html");
- wc.header(HttpHeaders.AUTHORIZATION, basicAuthHeader("foo", "bar1"));
Response r = wc.get();
assertEquals(307, r.getStatus());
Object locationHeader = r.getMetadata().getFirst(HttpHeaders.LOCATION);
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/https/conduit/HTTPSConduitTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/https/conduit/HTTPSConduitTest.java
index 2a00593..7a2326c 100644
--- a/systests/transports/src/test/java/org/apache/cxf/systest/https/conduit/HTTPSConduitTest.java
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/https/conduit/HTTPSConduitTest.java
@@ -42,7 +42,6 @@ import org.apache.cxf.BusFactory;
import org.apache.cxf.bus.spring.BusApplicationContext;
import org.apache.cxf.bus.spring.SpringBusFactory;
import org.apache.cxf.common.classloader.ClassLoaderUtils;
-import org.apache.cxf.common.util.Base64Utility;
import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.configuration.security.AuthorizationPolicy;
import org.apache.cxf.endpoint.Client;
@@ -54,6 +53,7 @@ import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transport.http.MessageTrustDecider;
import org.apache.cxf.transport.http.URLConnectionInfo;
import org.apache.cxf.transport.http.UntrustedURLConnectionIOException;
+import org.apache.cxf.transport.http.auth.DefaultBasicAuthSupplier;
import org.apache.cxf.transport.http.auth.HttpAuthHeader;
import org.apache.cxf.transport.http.auth.HttpAuthSupplier;
import org.apache.cxf.transport.https.HttpsURLConnectionInfo;
@@ -681,9 +681,7 @@ public class HTTPSConduitTest extends AbstractBusClientServerTestBase {
}
private String createUserPass(String usr, String pwd) {
- String userpass = usr + ":" + pwd;
- String token = Base64Utility.encode(userpass.getBytes());
- return "Basic " + token;
+ return DefaultBasicAuthSupplier.getBasicAuthHeader(usr, pwd);
}
public boolean requiresRequestCaching() {