ohif-viewer/platform/app/src/utils/nextOIDCClient.ts

39 lines
1.2 KiB
TypeScript

import { UserManager } from 'oidc-client-ts';
/**
* Creates a userManager from oidcSettings
* LINK: https://github.com/IdentityModel/oidc-client-js/wiki#configuration
*
* @param {Object} oidcSettings
* @param {string} oidcSettings.authServerUrl,
* @param {string} oidcSettings.clientId,
* @param {string} oidcSettings.authRedirectUri,
* @param {string} oidcSettings.postLogoutRedirectUri,
* @param {string} oidcSettings.responseType,
* @param {string} oidcSettings.extraQueryParams,
*/
export default function getUserManagerForOpenIdConnectClient(oidcSettings) {
if (!oidcSettings) {
return;
}
if (!oidcSettings.authority || !oidcSettings.client_id || !oidcSettings.redirect_uri) {
console.error('Missing required oidc settings: authority, client_id, redirect_uri');
return;
}
const settings = {
...oidcSettings,
// The next client always use the code flow with PKCE
response_type: 'code',
revokeTokensOnSignout: oidcSettings.revokeAccessTokenOnSignout ?? true,
filterProtocolClaims: true,
// the followings are default values in the lib so no need to set them
// automaticSilentRenew: true,
};
const userManager = new UserManager(settings);
return userManager;
}