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() {