You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by si...@apache.org on 2020/09/12 06:05:44 UTC

[pulsar] branch master updated: Fix the wrong issuer url concatenate (#7980)

This is an automated email from the ASF dual-hosted git repository.

sijie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 9285f8c  Fix the wrong issuer url concatenate (#7980)
9285f8c is described below

commit 9285f8c7ae4ff17613010dfab24d826c129a8e2d
Author: Yong Zhang <zh...@gmail.com>
AuthorDate: Sat Sep 12 14:05:28 2020 +0800

    Fix the wrong issuer url concatenate (#7980)
    
    * Fix the wrong issuer url concate
    ---
    
    Fixes #7952
    
    *Motivation*
    
    If the issuer url has an extra path, the extra path will be stripped
    when retrieving the openid configuration to get the token endpoint.
    
    * Fix the tests
---
 .../api/TokenOauth2AuthenticatedProducerConsumerTest.java     |  2 +-
 .../impl/auth/oauth2/protocol/DefaultMetadataResolver.java    |  3 ++-
 .../client/impl/auth/oauth2/AuthenticationOAuth2Test.java     | 11 +++++++++++
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java
index b54d8c9..25b3c00 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/TokenOauth2AuthenticatedProducerConsumerTest.java
@@ -88,7 +88,7 @@ public class TokenOauth2AuthenticatedProducerConsumerTest extends ProducerConsum
 
         // AuthenticationOAuth2
         Authentication authentication = AuthenticationFactoryOAuth2.clientCredentials(
-                new URL("https://dev-kt-aa9ne.us.auth0.com/oauth/token"),
+                new URL("https://dev-kt-aa9ne.us.auth0.com"),
                 new URL("file://" + path.toString()),  // key file path
                 "https://dev-kt-aa9ne.us.auth0.com/api/v2/"
         );
diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/auth/oauth2/protocol/DefaultMetadataResolver.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/auth/oauth2/protocol/DefaultMetadataResolver.java
index d16ce8b..2c09113 100644
--- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/auth/oauth2/protocol/DefaultMetadataResolver.java
+++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/auth/oauth2/protocol/DefaultMetadataResolver.java
@@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.ObjectReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.net.URLConnection;
 import java.time.Duration;
@@ -97,7 +98,7 @@ public class DefaultMetadataResolver implements MetadataResolver {
      */
     public static URL getWellKnownMetadataUrl(URL issuerUrl) {
         try {
-            return new URL(issuerUrl, "/.well-known/openid-configuration");
+            return URI.create(issuerUrl.toExternalForm() + "/.well-known/openid-configuration").normalize().toURL();
         } catch (MalformedURLException e) {
             throw new IllegalArgumentException(e);
         }
diff --git a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/auth/oauth2/AuthenticationOAuth2Test.java b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/auth/oauth2/AuthenticationOAuth2Test.java
index f45c2c0..ac14dd2 100644
--- a/pulsar-client/src/test/java/org/apache/pulsar/client/impl/auth/oauth2/AuthenticationOAuth2Test.java
+++ b/pulsar-client/src/test/java/org/apache/pulsar/client/impl/auth/oauth2/AuthenticationOAuth2Test.java
@@ -26,12 +26,17 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
 import java.time.Duration;
 import java.time.Instant;
 import java.time.ZoneOffset;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.pulsar.client.api.AuthenticationDataProvider;
+import org.apache.pulsar.client.impl.auth.oauth2.protocol.DefaultMetadataResolver;
 import org.apache.pulsar.client.impl.auth.oauth2.protocol.TokenResult;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -115,6 +120,12 @@ public class AuthenticationOAuth2Test {
     }
 
     @Test
+    public void testMetadataResolver() throws MalformedURLException {
+        URL url = DefaultMetadataResolver.getWellKnownMetadataUrl(URI.create("http://localhost/path/oauth").toURL());
+        assertEquals("http://localhost/path/oauth/.well-known/openid-configuration", url.toString());
+    }
+
+    @Test
     public void testClose() throws Exception {
         this.auth.close();
         verify(this.flow).close();