diff --git a/packages/auth/package.json b/packages/auth/package.json index f2c0f5317574d15654d23edb518dd0875fde76da..4c3f9dabea8ed77c58649ce431218bd9876b1b6f 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -42,6 +42,7 @@ "@dbp-toolkit/common": "^0.3.3", "@open-wc/scoped-elements": "^2.1.0", "event-target-shim": "^6.0.0", + "keycloak-js": "^20.0.1", "lit": "^2.0.0" }, "scripts": { diff --git a/packages/auth/src/keycloak.js b/packages/auth/src/keycloak.js index 50b25d8f65f356bf6152bdd2141f022c016cd43e..81f9fbfb0b342d94e05401d886b083af99877ef8 100644 --- a/packages/auth/src/keycloak.js +++ b/packages/auth/src/keycloak.js @@ -1,20 +1,5 @@ import {EventTarget} from 'event-target-shim'; // Because EventTarget() doesn't exist on Safari -/** - * Imports the keycloak JS API as if it was a module. - * - * @param baseUrl {string} - */ -async function importKeycloak(baseUrl) { - const keycloakSrc = baseUrl + '/js/keycloak.min.js'; - // Importing will write it to window so we take it from there - await import(keycloakSrc); - if (importKeycloak._keycloakMod !== undefined) return importKeycloak._keycloakMod; - importKeycloak._keycloakMod = window.Keycloak; - delete window.Keycloak; - return importKeycloak._keycloakMod; -} - const promiseTimeout = function (ms, promise) { let timeout = new Promise((resolve, reject) => { let id = setTimeout(() => { @@ -157,9 +142,9 @@ export class KeycloakWrapper extends EventTarget { async _ensureInstance() { if (this._keycloak !== null) return; - const Keycloak = await importKeycloak(this._baseURL); + const Keycloak = (await import('keycloak-js')).default; - this._keycloak = Keycloak({ + this._keycloak = new Keycloak({ url: this._baseURL, realm: this._realm, clientId: this._clientId, diff --git a/yarn.lock b/yarn.lock index a148b1f434dcf5bb965ebb43c5e5174f344893cd..44096d11ed3cdc035709130cca59c12e74b6b15f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2663,7 +2663,7 @@ base-64@^1.0.0: resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== -base64-js@^1.3.1: +base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -5418,6 +5418,11 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a" integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q== +js-sha256@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" + integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5593,6 +5598,14 @@ karma@^6.0.0: ua-parser-js "^0.7.30" yargs "^16.1.1" +keycloak-js@^20.0.1: + version "20.0.1" + resolved "https://registry.yarnpkg.com/keycloak-js/-/keycloak-js-20.0.1.tgz#3f73499a6b071d096f82ab74257b1b7429f53c8c" + integrity sha512-YNj0X0mmdLpqjB9W5DTAVDI14CzZs7RFn9T/t/g8Uq80OjaW2zZUis/g73aWwz04S3B6U6Vrg8h1wAMGbx2NQQ== + dependencies: + base64-js "^1.5.1" + js-sha256 "^0.9.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"