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

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new ad3dc61a33 NIFI-14469 Added Support for Additional Parameter to OAuth 
2 AccessToken (#9872)
ad3dc61a33 is described below

commit ad3dc61a33ff9e069fe011518364e31ab54a8273
Author: Pierre Villard <[email protected]>
AuthorDate: Thu Apr 17 15:01:46 2025 +0200

    NIFI-14469 Added Support for Additional Parameter to OAuth 2 AccessToken 
(#9872)
    
    Co-authored-by: David Handermann <[email protected]>
    Signed-off-by: David Handermann <[email protected]>
---
 .../src/main/java/org/apache/nifi/oauth2/AccessToken.java    | 12 ++++++++++++
 .../nifi/oauth2/StandardOauth2AccessTokenProvider.java       |  8 ++++++++
 .../nifi/oauth2/StandardOauth2AccessTokenProviderTest.java   |  6 ++++--
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-api/src/main/java/org/apache/nifi/oauth2/AccessToken.java
 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-api/src/main/java/org/apache/nifi/oauth2/AccessToken.java
index 19002a867a..1c26596797 100644
--- 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-api/src/main/java/org/apache/nifi/oauth2/AccessToken.java
+++ 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-api/src/main/java/org/apache/nifi/oauth2/AccessToken.java
@@ -18,6 +18,8 @@
 package org.apache.nifi.oauth2;
 
 import java.time.Instant;
+import java.util.HashMap;
+import java.util.Map;
 
 public class AccessToken {
     private String accessToken;
@@ -28,6 +30,8 @@ public class AccessToken {
 
     private final Instant fetchTime;
 
+    private final Map<String, Object> additionalParameters = new HashMap<>();
+
     public AccessToken() {
         this.fetchTime = Instant.now();
     }
@@ -93,4 +97,12 @@ public class AccessToken {
     Instant now() {
         return Instant.now();
     }
+
+    public void setAdditionalParameter(final String key, final Object value) {
+        additionalParameters.put(key, value);
+    }
+
+    public Map<String, Object> getAdditionalParameters() {
+        return additionalParameters;
+    }
 }
diff --git 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/main/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProvider.java
 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/main/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProvider.java
index c0439c10dd..d6388b05f7 100644
--- 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/main/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProvider.java
+++ 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/main/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProvider.java
@@ -16,6 +16,7 @@
  */
 package org.apache.nifi.oauth2;
 
+import com.fasterxml.jackson.annotation.JsonAnySetter;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.PropertyNamingStrategies;
@@ -220,6 +221,7 @@ public class StandardOauth2AccessTokenProvider extends 
AbstractControllerService
 
     public static final ObjectMapper ACCESS_DETAILS_MAPPER = new ObjectMapper()
         .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
+        .addMixIn(AccessToken.class, AccessTokenAdditionalParameters.class)
         .setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
 
     private volatile String authorizationServerUrl;
@@ -487,4 +489,10 @@ public class StandardOauth2AccessTokenProvider extends 
AbstractControllerService
 
         return Arrays.asList(builder.build());
     }
+
+    interface AccessTokenAdditionalParameters {
+
+        @JsonAnySetter
+        void setAdditionalParameter(String key, Object value);
+    }
 }
diff --git 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/test/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProviderTest.java
 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/test/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProviderTest.java
index d734474725..c55d7c86ca 100644
--- 
a/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/test/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProviderTest.java
+++ 
b/nifi-extension-bundles/nifi-standard-services/nifi-oauth2-provider-bundle/nifi-oauth2-provider-service/src/test/java/org/apache/nifi/oauth2/StandardOauth2AccessTokenProviderTest.java
@@ -24,7 +24,6 @@ import okhttp3.Request;
 import okhttp3.Response;
 import okhttp3.ResponseBody;
 import okio.Buffer;
-
 import org.apache.nifi.components.ConfigVerificationResult;
 import org.apache.nifi.controller.ConfigurationContext;
 import org.apache.nifi.controller.VerifiableControllerService;
@@ -275,11 +274,13 @@ public class StandardOauth2AccessTokenProviderTest {
         public void testAcquireNewToken() throws Exception {
             String accessTokenValue = "access_token_value";
             String scopeValue = "scope_value";
+            String customFieldKey = "custom_field_key";
+            String customFieldValue = "custom_field_value";
 
             // GIVEN
             Response response = buildResponse(
                 HTTP_OK,
-                "{ \"access_token\":\"" + accessTokenValue + "\", 
\"scope\":\"" + scopeValue + "\" }"
+                "{ \"access_token\":\"" + accessTokenValue + "\", 
\"scope\":\"" + scopeValue + "\", \"" + customFieldKey + "\":\"" + 
customFieldValue + "\" }"
             );
 
             
when(mockHttpClient.newCall(any(Request.class)).execute()).thenReturn(response);
@@ -290,6 +291,7 @@ public class StandardOauth2AccessTokenProviderTest {
             // THEN
             assertEquals(accessTokenValue, accessToken.getAccessToken());
             assertEquals(scopeValue, accessToken.getScope());
+            assertEquals(customFieldValue, 
accessToken.getAdditionalParameters().get(customFieldKey));
         }
 
         @Test

Reply via email to