🐛 Handle infinite loop from oidc (#282)

This commit is contained in:
Montassar Ghanmy
2023-12-04 16:28:35 +01:00
committed by GitHub
parent 9ba9894247
commit 629ff565ee
3 changed files with 26 additions and 15 deletions
@@ -194,7 +194,7 @@ class Login extends Observable {
} }
await this.updateUser(); await this.updateUser();
} catch (err) { } catch (err) {
this.logger.error('Can not login', err); throw Error('Can not login');
} finally { } finally {
this.logger.debug('Login process finished'); this.logger.debug('Login process finished');
Login.logInOngoing = false; Login.logInOngoing = false;
@@ -11,7 +11,7 @@ import { AuthProvider, InitParameters } from '../auth-provider';
import jwtStorageService, { JWTDataType } from '@features/auth/jwt-storage-service'; import jwtStorageService, { JWTDataType } from '@features/auth/jwt-storage-service';
import LocalStorage from '@features/global/framework/local-storage-service'; import LocalStorage from '@features/global/framework/local-storage-service';
import ConsoleApiClient from '@features/console/api/console-api-client'; import ConsoleApiClient from '@features/console/api/console-api-client';
import JwtStorageService from "@features/auth/jwt-storage-service"; import JwtStorageService from '@features/auth/jwt-storage-service';
const OIDC_CALLBACK_URL = '/oidccallback'; const OIDC_CALLBACK_URL = '/oidccallback';
const OIDC_SIGNOUT_URL = '/signout'; const OIDC_SIGNOUT_URL = '/signout';
@@ -70,15 +70,15 @@ export default class OIDCAuthProviderService
this.signOut(); this.signOut();
} }
this.userManager.events.addUserSessionChanged((... args) => { this.userManager.events.addUserSessionChanged((...args) => {
this.logger.debug('User Session changed', args); this.logger.debug('User Session changed', args);
}); });
this.userManager.events.addSilentRenewError((... args) => { this.userManager.events.addSilentRenewError((...args) => {
this.logger.debug('Silent Renew Error', args); this.logger.debug('Silent Renew Error', args);
}); });
this.userManager.events.addUserUnloaded((... args) => { this.userManager.events.addUserUnloaded((...args) => {
this.logger.debug('User unloaded', args); this.logger.debug('User unloaded', args);
}); });
@@ -97,7 +97,7 @@ export default class OIDCAuthProviderService
await this.signIn(); await this.signIn();
}); });
} }
this.logger.info("Init completed") this.logger.info('Init completed');
return this; return this;
} }
@@ -119,14 +119,14 @@ export default class OIDCAuthProviderService
this.onInitialized(); this.onInitialized();
this.initialized = true; this.initialized = true;
} }
this.logger.info("Setting new access token"); this.logger.info('Setting new access token');
await this.params?.onNewToken(jwt); await this.params?.onNewToken(jwt);
} catch (err) { } catch (err) {
this.logger.error( this.logger.error(
'OIDC user loaded listener, error while getting the JWT from OIDC token', 'OIDC user loaded listener, error while getting the JWT from OIDC token',
err, err,
); );
await this.signinRedirect(); throw Error('Error while getting the JWT from OIDC token');
} }
} else { } else {
await this.signinRedirect(); await this.signinRedirect();
@@ -173,11 +173,12 @@ export default class OIDCAuthProviderService
this.logger.info('getJWTFromOidcToken, user expired'); this.logger.info('getJWTFromOidcToken, user expired');
} }
const jwt = await ConsoleApiClient.getNewAccessToken( const jwt = await ConsoleApiClient.getNewAccessToken({
{ id_token: user.id_token, access_token: user.access_token }, id_token: user.id_token,
); access_token: user.access_token,
});
JwtStorageService.updateJWT(jwt) JwtStorageService.updateJWT(jwt);
return jwt; return jwt;
} }
@@ -76,9 +76,19 @@ class InitService extends Observable {
} }
async getServer() { async getServer() {
return await Api.get<ServerInfoType>('/internal/services/general/v1/server', undefined, false, { try {
disableJWTAuthentication: true, return await Api.get<ServerInfoType>(
}); '/internal/services/general/v1/server',
undefined,
false,
{
disableJWTAuthentication: true,
},
);
} catch (e) {
this.logger.error('Error while getting server infos', e);
throw e;
}
} }
async init() { async init() {