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