diff --git a/packages/auth/src/vpu-auth.js b/packages/auth/src/vpu-auth.js
index f6e900905402b5a2d6a18b11773f5e45e005df57..03dfa5055d933cedf150aa0b1ed4b1bcdfa5f523 100644
--- a/packages/auth/src/vpu-auth.js
+++ b/packages/auth/src/vpu-auth.js
@@ -18,6 +18,13 @@ const LoginStatus = Object.freeze({
 });
 
 
+async function importKeycloak() {
+    const keycloakSrc = '//auth-dev.tugraz.at/auth/js/keycloak.min.js';
+    await import(keycloakSrc);
+    return window.Keycloak;
+}
+
+
 /**
  * Keycloak auth web component
  * https://www.keycloak.org/docs/latest/securing_apps/index.html#_javascript_adapter
@@ -145,11 +152,7 @@ class VPUAuth extends VPULitElement {
         const that = this;
 
         if (!this.keyCloakInitCalled) {
-            // inject Keycloak javascript file
-            const script = document.createElement('script');
-            script.type = 'text/javascript';
-            //script.async = true;
-            script.onload = () => {
+            importKeycloak().then((Keycloak) => {
                 that.keyCloakInitCalled = true;
 
                 that._keycloak = Keycloak({
@@ -214,14 +217,10 @@ class VPUAuth extends VPULitElement {
                     }).error(function() {
                         console.log('Failed to refresh the token, or the session has expired');
                     });
-                }
-            };
-
-            // https://www.keycloak.org/docs/latest/securing_apps/index.html#_javascript_a
-            script.src = '//auth-dev.tugraz.at/auth/js/keycloak.min.js';
-
-            //Append it to the document header
-            document.head.appendChild(script);
+                };
+            }).catch((e) => {
+                console.log('Loading keycloack failed', e);
+            });
         }
     }