feat(core): enable sending client credentials in body (#4377)

*  Enable inject credentials in the body for OAuth2 CC

* 🐛 Persist token data

* 👕 Fix linting error
This commit is contained in:
Ricardo Espinoza
2022-10-20 11:15:28 -04:00
committed by GitHub
parent 356a42a187
commit 7fcd821cad
3 changed files with 28 additions and 9 deletions

View File

@@ -102,6 +102,7 @@ import {
PLACEHOLDER_EMPTY_EXECUTION_ID,
} from '.';
import { extractValue } from './ExtractValue';
import { getClientCredentialsToken } from './OAuth2Helper';
axios.defaults.timeout = 300000;
// Prevent axios from adding x-form-www-urlencoded headers by default
@@ -933,9 +934,10 @@ export async function requestOAuth2(
});
let oauthTokenData = credentials.oauthTokenData as clientOAuth2.Data;
// if it's the first time using the credentials, get the access token and save it into the DB.
if (credentials.grantType === OAuth2GrantType.clientCredentials && oauthTokenData === undefined) {
const { data } = await oAuthClient.credentials.getToken();
const { data } = await getClientCredentialsToken(oAuthClient, credentials);
// Find the credentials
if (!node.credentials?.[credentialsType]) {
@@ -950,7 +952,7 @@ export async function requestOAuth2(
await additionalData.credentialsHelper.updateCredentials(
nodeCredentials,
credentialsType,
credentials as unknown as ICredentialDataDecryptedObject,
Object.assign(credentials, { oauthTokenData: data }),
);
oauthTokenData = data;
@@ -1005,7 +1007,7 @@ export async function requestOAuth2(
// if it's OAuth2 with client credentials grant type, get a new token
// instead of refreshing it.
if (OAuth2GrantType.clientCredentials === credentials.grantType) {
newToken = await token.client.credentials.getToken();
newToken = await getClientCredentialsToken(token.client, credentials);
} else {
newToken = await token.refresh(tokenRefreshOptions);
}
@@ -1073,7 +1075,7 @@ export async function requestOAuth2(
// if it's OAuth2 with client credentials grant type, get a new token
// instead of refreshing it.
if (OAuth2GrantType.clientCredentials === credentials.grantType) {
newToken = await token.client.credentials.getToken();
newToken = await getClientCredentialsToken(token.client, credentials);
} else {
newToken = await token.refresh(tokenRefreshOptions);
}