You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by rx...@apache.org on 2020/08/10 09:38:32 UTC

[pulsar] branch master updated: [CPP client]Fix the issue_url parsing failure in oauth2 (#7791)

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

rxl 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 c88ba50  [CPP client]Fix the issue_url parsing failure in oauth2 (#7791)
c88ba50 is described below

commit c88ba50ebede46d1d0396e5665c140ca88e17d37
Author: 冉小龙 <rx...@apache.org>
AuthorDate: Mon Aug 10 17:38:14 2020 +0800

    [CPP client]Fix the issue_url parsing failure in oauth2 (#7791)
    
    Signed-off-by: xiaolong.ran <rx...@apache.org>
    
    
    ### Motivation
    
    The `issuer_url` in the current cpp example needs to be suffixed with `/oauth/token`, otherwise it cannot be recognized correctly and the following error will be returned:
    
    ```
    OAuth2 auth data: 2020-08-10 15:21:06.117 ERROR [0x10ff855c0] AuthOauth2:243 | Response failed for issuerurl https://cloud.streamnative.dev/oauth2/token. response Code 404 passedin: {
        "grant_type": "client_credentials",
        "client_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "client_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "audience": "urn:sn:pulsar:pi-ns:pi-name"
    }
    
    libc++abi.dylib: terminating with uncaught exception of type char const*
    ```
    
    
    ### Modifications
    
    Add a fixed suffix of `/oauth/token` to issuer_url
    
    ### Verifying this change
    
    Fix test cases as follows:
    
    - testOauth2CredentialFile
    - testOauth2WrongSecret
    - testOauth2
---
 pulsar-client-cpp/lib/auth/AuthOauth2.cc  | 1 +
 pulsar-client-cpp/tests/AuthPluginTest.cc | 6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/pulsar-client-cpp/lib/auth/AuthOauth2.cc b/pulsar-client-cpp/lib/auth/AuthOauth2.cc
index 72cdf97..5d38eb7 100644
--- a/pulsar-client-cpp/lib/auth/AuthOauth2.cc
+++ b/pulsar-client-cpp/lib/auth/AuthOauth2.cc
@@ -183,6 +183,7 @@ Oauth2TokenResultPtr ClientCredentialFlow::authenticate() {
     curl_easy_setopt(handle, CURLOPT_CUSTOMREQUEST, "POST");
 
     // set URL: issuerUrl
+    issuerUrl_.append("/oauth/token");
     curl_easy_setopt(handle, CURLOPT_URL, issuerUrl_.c_str());
 
     // Write callback
diff --git a/pulsar-client-cpp/tests/AuthPluginTest.cc b/pulsar-client-cpp/tests/AuthPluginTest.cc
index 6430fd8..18016f6 100644
--- a/pulsar-client-cpp/tests/AuthPluginTest.cc
+++ b/pulsar-client-cpp/tests/AuthPluginTest.cc
@@ -342,7 +342,7 @@ TEST(AuthPluginTest, testOauth2) {
     pulsar::AuthenticationDataPtr data;
     std::string params = R"({
         "type": "client_credentials",
-        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com/oauth/token",
+        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com",
         "client_id": "Xd23RHsUnvUlP7wchjNYOaIfazgeHd9x",
         "client_secret": "rT7ps7WY8uhdVuBTKWZkttwLdQotmdEliaM5rLfmgNibvqziZ-g07ZH52N_poGAb",
         "audience": "https://dev-kt-aa9ne.us.auth0.com/api/v2/"})";
@@ -363,7 +363,7 @@ TEST(AuthPluginTest, testOauth2WrongSecret) {
 
         std::string params = R"({
         "type": "client_credentials",
-        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com/oauth/token",
+        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com",
         "client_id": "Xd23RHsUnvUlP7wchjNYOaIfazgeHd9x",
         "client_secret": "rT7ps7WY8uhdVuBTKWZkttwLdQotmdEliaM5rLfmgNibvqziZ",
         "audience": "https://dev-kt-aa9ne.us.auth0.com/api/v2/"})";
@@ -387,7 +387,7 @@ TEST(AuthPluginTest, testOauth2CredentialFile) {
     pulsar::AuthenticationDataPtr data;
     std::string params = R"({
         "type": "client_credentials",
-        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com/oauth/token",
+        "issuer_url": "https://dev-kt-aa9ne.us.auth0.com",
         "private_key": "../../pulsar-broker/src/test/resources/authentication/token/cpp_credentials_file.json",
         "audience": "https://dev-kt-aa9ne.us.auth0.com/api/v2/"})";