@mark-robustelli thanks. I've also tried by retrieving the template application and then changing some of its properties as such
//Use same object for next request (creating application), assign new values
appTemplate.jwtConfiguration.accessTokenKeyId = primaryDefaultJwtKeyId;
appTemplate.jwtConfiguration.idTokenKeyId = secondaryDefaultJwtKeyId;
appTemplate.tenantId = newTenant.id;
appTemplate.name = `Portal (${env.toUpperCase()})`;
appTemplate.oauthConfiguration.authorizedRedirectURLs = [
`https://frontend.com/*`,
`https://backend.com/api/auth/callback`
]
delete appTemplate.id;
delete appTemplate.oauthConfiguration.clientSecret;
delete appTemplate.oauthConfiguration.clientId;
//assign new ID to roles...
appTemplate.roles.forEach(role => role.id = crypto.randomUUID());
const newApplication = await fusionAuthService.createApplication(appTemplate);
async createApplication(applicationRequest) {
const client = new FusionAuthClient(
this.apiKey,
this.url,
applicationRequest.tenantId
);
try {
return (await client.createApplication(null, { application: applicationRequest})).response.application;
}
catch (err) {
this.logError(err);
}
}
While this works API and UI wise any user trying to authenticate will receive no successResponse
from ExchangeRefreshTokenForAccessTokenAsync
and I have no further details in errorReponse
either.
So maybe something else needs to be zapped/modified before using the appTemplate
to create the clone ?