diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 3ff74d1b94b7888ab59c358b9eef5cc80555157c..9ea1e720e9791d99c492a445f6db10cdcb2fa027 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1,3 +1,5 @@
+import {createDeviceHash} from '../utilities/appUtility';
+
 const libmime = require('libmime');
 const QRCode = require('qrcode');
 const pkijs = require('pkijs');
@@ -1344,16 +1346,24 @@ window.currentlyAuthenticatedIdentity = null;
 window.currentlyLoadedIdentity = null;
 window.lastTimeGetProfile = 0;
 
-const handleIdentityLogin = (identity, uuid, token) => {
-  const { loadedIdentities, viamApi } = window;
+const handleIdentityLogin = async (identity, uuid, token) => {
+  try {
+    const { loadedIdentities, viamApi } = window;
+    const { publicKey } = identity.authentication;
+
+    const deviceHash = await createDeviceHash(publicKey);
+
+    viamApi.setSessionData(uuid, token);
+    localStorage.setItem("uuid", uuid);
+    localStorage.setItem("token", token);
+    localStorage.setItem("authenticatedIdentity", publicKey);
+    window.currentlyAuthenticatedIdentity = loadedIdentities[publicKey];
+    window.lastTimeGetProfile = 0;
+    setKeyForUUID(uuid, publicKey);
+  } catch (error) {
+    console.warn(error);
+  }
 
-  viamApi.setSessionData(uuid, token);
-  localStorage.setItem("uuid", uuid);
-  localStorage.setItem("token", token);
-  localStorage.setItem("authenticatedIdentity", identity.authentication.publicKey);
-  window.currentlyAuthenticatedIdentity = loadedIdentities[identity.authentication.publicKey];
-  window.lastTimeGetProfile = 0;
-  setKeyForUUID(uuid, identity.authentication.publicKey);
 };
 
 function executeRestfulFunction(type, that, fn, ...args) {
diff --git a/javascript/src/utilities/appUtility.js b/javascript/src/utilities/appUtility.js
new file mode 100644
index 0000000000000000000000000000000000000000..00beb2568a03ec3070308acb63d2aee14e262c42
--- /dev/null
+++ b/javascript/src/utilities/appUtility.js
@@ -0,0 +1,12 @@
+import { getCrypto } from 'pkijs';
+
+export const createDeviceHash = async (publicKey) => {
+  try {
+    const stringToEncode = publicKey + navigator.userAgent;
+    const crypto = getCrypto();
+    const buffer = new window.TextEncoder("utf-8").encode(stringToEncode);
+    return window.btoa(await crypto.digest({ name: "SHA-1" }, buffer));
+  } catch (error) {
+    console.warn(error); // eslint-disable-line no-console
+  }
+};