Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
238 changes: 147 additions & 91 deletions package-lock.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
},
"dependencies": {
"@colors/colors": "^1.5.0",
"@rockcarver/frodo-lib": "github:rockcarver/lib-frodo#main",
"axios": "^0.27.2",
"axios-retry": "^3.3.1",
"cli-progress": "^3.11.2",
Expand Down
44 changes: 44 additions & 0 deletions src/api/AmServiceApi.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import util from 'util';
import { generateAmApi } from './BaseApi.js';
import { getCurrentRealmPath } from './utils/ApiUtils.js';
import storage from '../storage/SessionStorage.js';

const oauthProviderServiceURLTemplate =
'%s/json%s/realm-config/services/oauth-oidc';

const apiVersion = 'protocol=2.1,resource=1.0';
const getApiConfig = () => {
const configPath = getCurrentRealmPath();
return {
path: `${configPath}/authentication/authenticationtrees`,
apiVersion,
};
};

// eslint-disable-next-line import/prefer-default-export
export async function getOAuth2Provider() {
try {
const urlString = util.format(
oauthProviderServiceURLTemplate,
state.default.session.getTenant(),
getCurrentRealmPath()
);
const response = await generateAmApi(getApiConfig()).get(urlString, {
withCredentials: true,
});
if (response.status < 200 || response.status > 399) {
console.log(
`getOAuth2Provider ERROR: get OAuth2 provider call returned ${response.status}, possible cause: service not found`,
'error'
);
return null;
}
return response.data;
} catch (e) {
console.log(
`getOAuth2Provider ERROR: get Oauth2 provider error - ${e.message}`,
'error'
);
return null;
}
}
2 changes: 1 addition & 1 deletion src/api/AuthenticateApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function getRealmUrl(realm) {
export async function step(data = {}, config = {}) {
const urlString = util.format(
authenticateUrlTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getRealmUrl('/')
);
return generateAmApi(getApiConfig()).post(urlString, data, config);
Expand Down
37 changes: 19 additions & 18 deletions src/api/BaseApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ let httpsAgent;
function getHttpsAgent() {
if (httpsAgent) return httpsAgent;
const options = {
rejectUnauthorized: !storage.session.getAllowInsecureConnection(),
rejectUnauthorized: !state.default.session.getAllowInsecureConnection(),
};
const httpsProxy = process.env.HTTPS_PROXY || process.env.https_proxy;
if (httpsProxy) {
Expand All @@ -40,7 +40,8 @@ function getHttpsAgent() {
options.host = parsed.hostname;
options.port = parsed.port;
options.protocol = parsed.protocol;
options.rejectUnauthorized = !storage.session.getAllowInsecureConnection();
options.rejectUnauthorized =
!state.default.session.getAllowInsecureConnection();
httpsAgent = new HttpsProxyAgent(options);
return httpsAgent;
}
Expand All @@ -66,7 +67,7 @@ export function generateAmApi(resource, requestOverride = {}) {
'User-Agent': userAgent,
'Content-Type': 'application/json',
'Accept-API-Version': resource.apiVersion,
Cookie: `${storage.session.raw.cookieName}=${storage.session.raw.cookieValue}`,
Cookie: `${state.default.session.raw.cookieName}=${state.default.session.raw.cookieValue}`,
};
if (requestOverride.headers) {
headers = {
Expand All @@ -76,7 +77,7 @@ export function generateAmApi(resource, requestOverride = {}) {
}

const requestDetails = {
baseURL: `${storage.session.getTenant()}/json${resource.path}`,
baseURL: `${state.default.session.getTenant()}/json${resource.path}`,
timeout,
...requestOverride,
headers,
Expand All @@ -101,7 +102,7 @@ export function generateOauth2Api(resource, requestOverride = {}) {
let headers = {
'User-Agent': userAgent,
'Accept-API-Version': resource.apiVersion,
Cookie: `${storage.session.raw.cookieName}=${storage.session.raw.cookieValue}`,
Cookie: `${state.default.session.raw.cookieName}=${state.default.session.raw.cookieValue}`,
};
if (requestOverride.headers) {
headers = {
Expand All @@ -111,7 +112,7 @@ export function generateOauth2Api(resource, requestOverride = {}) {
}

const requestDetails = {
baseURL: `${storage.session.getTenant()}/json${resource.path}`,
baseURL: `${state.default.session.getTenant()}/json${resource.path}`,
timeout,
...requestOverride,
headers,
Expand All @@ -133,7 +134,7 @@ export function generateOauth2Api(resource, requestOverride = {}) {
*/
export function generateIdmApi(requestOverride = {}) {
const requestDetails = {
baseURL: getTenantURL(storage.session.getTenant()),
baseURL: getTenantURL(state.default.session.getTenant()),
timeout,
headers: {
'User-Agent': userAgent,
Expand All @@ -144,8 +145,8 @@ export function generateIdmApi(requestOverride = {}) {
proxy: getProxy(),
};

if (storage.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${storage.session.getBearerToken()}`;
if (state.default.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${state.default.session.getBearerToken()}`;
}

const request = axios.create(requestDetails);
Expand All @@ -166,16 +167,16 @@ export function generateLogKeysApi(requestOverride = {}) {
'Content-Type': 'application/json',
};
const requestDetails = {
baseURL: getTenantURL(storage.session.getTenant()),
baseURL: getTenantURL(state.default.session.getTenant()),
timeout,
headers,
...requestOverride,
httpsAgent: getHttpsAgent(),
proxy: getProxy(),
};

if (storage.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${storage.session.getBearerToken()}`;
if (state.default.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${state.default.session.getBearerToken()}`;
}

const request = axios.create(requestDetails);
Expand All @@ -193,11 +194,11 @@ export function generateLogKeysApi(requestOverride = {}) {
export function generateLogApi(requestOverride = {}) {
const headers = {
'User-Agent': userAgent,
'X-API-Key': storage.session.getLogApiKey(),
'X-API-Secret': storage.session.getLogApiSecret(),
'X-API-Key': state.default.session.getLogApiKey(),
'X-API-Secret': state.default.session.getLogApiSecret(),
};
const requestDetails = {
baseURL: getTenantURL(storage.session.getTenant()),
baseURL: getTenantURL(state.default.session.getTenant()),
timeout,
headers,
...requestOverride,
Expand All @@ -224,16 +225,16 @@ export function generateESVApi(resource, requestOverride = {}) {
'Accept-API-Version': resource.apiVersion,
};
const requestDetails = {
baseURL: getTenantURL(storage.session.getTenant()),
baseURL: getTenantURL(state.default.session.getTenant()),
timeout,
headers,
...requestOverride,
httpsAgent: getHttpsAgent(),
proxy: getProxy(),
};

if (storage.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${storage.session.getBearerToken()}`;
if (state.default.session.getBearerToken()) {
requestDetails.headers.Authorization = `Bearer ${state.default.session.getBearerToken()}`;
}

const request = axios.create(requestDetails);
Expand Down
10 changes: 5 additions & 5 deletions src/api/CirclesOfTrustApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ const getApiConfig = () => {
export async function getCirclesOfTrust() {
const urlString = util.format(
queryAllCirclesOfTrustURLTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath()
);
return generateAmApi(getApiConfig()).get(urlString, {
Expand All @@ -42,7 +42,7 @@ export async function getCirclesOfTrust() {
export async function getCircleOfTrust(cotId) {
const urlString = util.format(
circleOfTrustByIdURLTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath(),
cotId
);
Expand All @@ -60,8 +60,8 @@ export async function createCircleOfTrust(cotData) {
const postData = _.cloneDeep(cotData);
const urlString = util.format(
createCircleOfTrustURLTemplate,
storage.session.getTenant(),
getCurrentRealmPath(storage.session.getRealm())
state.default.session.getTenant(),
getCurrentRealmPath(state.default.session.getRealm())
);
return generateAmApi(getApiConfig()).post(urlString, postData, {
withCredentials: true,
Expand All @@ -77,7 +77,7 @@ export async function createCircleOfTrust(cotData) {
export async function updateCircleOfTrust(cotId, cotData) {
const urlString = util.format(
circleOfTrustByIdURLTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath(),
cotId
);
Expand Down
10 changes: 5 additions & 5 deletions src/api/IdmConfigApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const idmManagedObjectURLTemplate =
export async function getAllConfigEntities() {
const urlString = util.format(
idmAllConfigURLTemplate,
getTenantURL(storage.session.getTenant())
getTenantURL(state.default.session.getTenant())
);
return generateIdmApi().get(urlString);
}
Expand All @@ -29,7 +29,7 @@ export async function getAllConfigEntities() {
export async function getConfigEntitiesByType(type) {
const urlString = util.format(
idmConfigEntityQueryTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
encodeURIComponent(`_id sw '${type}'`)
);
return generateIdmApi().get(urlString);
Expand All @@ -43,7 +43,7 @@ export async function getConfigEntitiesByType(type) {
export async function getConfigEntity(id) {
const urlString = util.format(
idmConfigURLTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
id
);
return generateIdmApi().get(urlString);
Expand All @@ -58,7 +58,7 @@ export async function getConfigEntity(id) {
export async function putConfigEntity(id, data) {
const urlString = util.format(
idmConfigURLTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
id
);
return generateIdmApi().put(urlString, data);
Expand All @@ -81,7 +81,7 @@ export async function queryAllManagedObjectsByType(type, fields, pageCookie) {
: `${idmManagedObjectURLTemplate}${fieldsParam}`;
const urlString = util.format(
urlTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
type
);
return generateIdmApi().get(urlString);
Expand Down
8 changes: 4 additions & 4 deletions src/api/LogApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const logsGetAPIKeysURLTemplate = '%s/keys';
export async function tail(source, cookie) {
let urlString = util.format(
logsTailURLTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
encodeURIComponent(source)
);
if (cookie) {
Expand All @@ -23,23 +23,23 @@ export async function tail(source, cookie) {
export async function getAPIKeys() {
const urlString = util.format(
logsGetAPIKeysURLTemplate,
getTenantURL(storage.session.getTenant())
getTenantURL(state.default.session.getTenant())
);
return generateLogKeysApi().get(urlString);
}

export async function getSources() {
const urlString = util.format(
logsSourcesURLTemplate,
getTenantURL(storage.session.getTenant())
getTenantURL(state.default.session.getTenant())
);
return generateLogApi().get(urlString);
}

export async function createAPIKeyAndSecret(keyName) {
const urlString = util.format(
logsCreateAPIKeyAndSecretURLTemplate,
getTenantURL(storage.session.getTenant())
getTenantURL(state.default.session.getTenant())
);
return generateLogKeysApi().post(urlString, { name: keyName });
}
6 changes: 3 additions & 3 deletions src/api/ManagedObjectApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export async function getManagedObject(type, id, fields) {
fields.length > 0 ? `_fields=${fields.join(',')}` : '_fields=*';
const urlString = util.format(
`${managedObjectByIdURLTemplate}?${fieldsParam}`,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
type,
id
);
Expand All @@ -33,7 +33,7 @@ export async function getManagedObject(type, id, fields) {
export async function putManagedObject(type, id, data) {
const urlString = util.format(
managedObjectByIdURLTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
type,
id
);
Expand All @@ -55,7 +55,7 @@ export async function queryAllManagedObjectsByType(type, fields, pageCookie) {
: `${managedObjectQueryAllURLTemplate}${fieldsParam}`;
const urlString = util.format(
urlTemplate,
getTenantURL(storage.session.getTenant()),
getTenantURL(state.default.session.getTenant()),
type
);
return generateIdmApi().get(urlString);
Expand Down
8 changes: 4 additions & 4 deletions src/api/OAuth2ClientApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const getApiConfig = () => {
export async function getOAuth2Clients() {
const urlString = util.format(
oauth2ClientListURLTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath()
);
return generateAmApi(getApiConfig()).get(urlString, {
Expand All @@ -38,7 +38,7 @@ export async function getOAuth2Clients() {
export async function getOAuth2Client(id) {
const urlString = util.format(
oauth2ClientURLTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath(),
id
);
Expand All @@ -59,8 +59,8 @@ export async function putOAuth2Client(id, data) {
delete client._rev;
const urlString = util.format(
oauth2ClientURLTemplate,
storage.session.getTenant(),
getCurrentRealmPath(storage.session.getRealm()),
state.default.session.getTenant(),
getCurrentRealmPath(state.default.session.getRealm()),
id
);
return generateAmApi(getApiConfig()).put(urlString, client, {
Expand Down
6 changes: 3 additions & 3 deletions src/api/OAuth2OIDCApi.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const getApiConfig = () => ({
export async function authorize(data, config = {}) {
const authorizeURL = util.format(
authorizeUrlTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
''
);
return generateOauth2Api(getApiConfig()).post(authorizeURL, data, config);
Expand All @@ -36,7 +36,7 @@ export async function authorize(data, config = {}) {
export async function accessToken(data, config = {}) {
const accessTokenURL = util.format(
accessTokenUrlTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
''
);
return generateOauth2Api(getApiConfig()).post(accessTokenURL, data, config);
Expand All @@ -52,7 +52,7 @@ export async function accessToken(data, config = {}) {
export async function clientCredentialsGrant(clientId, clientSecret, scope) {
const urlString = util.format(
accessTokenUrlTemplate,
storage.session.getTenant(),
state.default.session.getTenant(),
getCurrentRealmPath()
);
const requestOverride = {
Expand Down
Loading