diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java index 3856bd6b..7314e53e 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java @@ -73,6 +73,7 @@ import com.kingsrook.qqq.backend.module.api.model.OutboundAPILog; import com.kingsrook.qqq.backend.module.api.model.metadata.APIBackendMetaData; import com.kingsrook.qqq.backend.module.api.model.metadata.APITableBackendDetails; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.BooleanUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpResponse; @@ -728,19 +729,28 @@ public class BaseAPIActionUtil // this is not generally meant to be put in the meta data by the app programmer - rather, we're just using // // it as a "cheap & easy" way to "cache" the token within our process's memory... // //////////////////////////////////////////////////////////////////////////////////////////////////////////////// - String accessToken = ValueUtils.getValueAsString(backendMetaData.getCustomValue("accessToken")); + String accessToken = ValueUtils.getValueAsString(backendMetaData.getCustomValue("accessToken")); + Boolean setCredentialsInHeader = BooleanUtils.isTrue(ValueUtils.getValueAsBoolean(backendMetaData.getCustomValue("setCredentialsInHeader"))); if(!StringUtils.hasContent(accessToken)) { String fullURL = backendMetaData.getBaseUrl() + "oauth/token"; - String postBody = "grant_type=client_credentials&client_id=" + backendMetaData.getClientId() + "&client_secret=" + backendMetaData.getClientSecret(); + String postBody = "grant_type=client_credentials"; - LOG.info("Fetching OAuth2 token from " + fullURL); + if(!setCredentialsInHeader) + { + postBody += "&client_id=" + backendMetaData.getClientId() + "&client_secret=" + backendMetaData.getClientSecret(); + } try(CloseableHttpClient client = HttpClients.custom().setConnectionManager(new PoolingHttpClientConnectionManager()).build()) { HttpPost request = new HttpPost(fullURL); request.setEntity(new StringEntity(postBody)); + + if(setCredentialsInHeader) + { + request.addHeader("Authorization", getBasicAuthenticationHeader(backendMetaData.getClientId(), backendMetaData.getClientSecret())); + } request.addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); HttpResponse response = executeOAuthTokenRequest(client, request);