UNPKG

@aws-amplify/auth

Version:
1 lines 14.3 kB
{"version":3,"file":"TokenStore.mjs","sources":["../../../../../src/providers/cognito/tokenProvider/TokenStore.ts"],"sourcesContent":["import { assertTokenProviderConfig, decodeJWT, } from '@aws-amplify/core/internals/utils';\nimport { AuthError } from '../../../errors/AuthError';\nimport { AuthTokenStorageKeys, } from './types';\nimport { TokenProviderErrorCode, assert } from './errorHelpers';\nimport { AUTH_KEY_PREFIX } from './constants';\nexport class DefaultTokenStore {\n getKeyValueStorage() {\n if (!this.keyValueStorage) {\n throw new AuthError({\n name: 'KeyValueStorageNotFoundException',\n message: 'KeyValueStorage was not found in TokenStore',\n });\n }\n return this.keyValueStorage;\n }\n setKeyValueStorage(keyValueStorage) {\n this.keyValueStorage = keyValueStorage;\n }\n setAuthConfig(authConfig) {\n this.authConfig = authConfig;\n }\n async loadTokens() {\n // TODO(v6): migration logic should be here\n // Reading V5 tokens old format\n try {\n const authKeys = await this.getAuthKeys();\n const accessTokenString = await this.getKeyValueStorage().getItem(authKeys.accessToken);\n if (!accessTokenString) {\n throw new AuthError({\n name: 'NoSessionFoundException',\n message: 'Auth session was not found. Make sure to call signIn.',\n });\n }\n const accessToken = decodeJWT(accessTokenString);\n const itString = await this.getKeyValueStorage().getItem(authKeys.idToken);\n const idToken = itString ? decodeJWT(itString) : undefined;\n const refreshToken = (await this.getKeyValueStorage().getItem(authKeys.refreshToken)) ??\n undefined;\n const clockDriftString = (await this.getKeyValueStorage().getItem(authKeys.clockDrift)) ?? '0';\n const clockDrift = Number.parseInt(clockDriftString);\n const signInDetails = await this.getKeyValueStorage().getItem(authKeys.signInDetails);\n const tokens = {\n accessToken,\n idToken,\n refreshToken,\n deviceMetadata: (await this.getDeviceMetadata()) ?? undefined,\n clockDrift,\n username: await this.getLastAuthUser(),\n };\n if (signInDetails) {\n tokens.signInDetails = JSON.parse(signInDetails);\n }\n return tokens;\n }\n catch (err) {\n return null;\n }\n }\n async storeTokens(tokens) {\n assert(tokens !== undefined, TokenProviderErrorCode.InvalidAuthTokens);\n const lastAuthUser = tokens.username;\n await this.getKeyValueStorage().setItem(this.getLastAuthUserKey(), lastAuthUser);\n const authKeys = await this.getAuthKeys();\n await this.getKeyValueStorage().setItem(authKeys.accessToken, tokens.accessToken.toString());\n if (tokens.idToken) {\n await this.getKeyValueStorage().setItem(authKeys.idToken, tokens.idToken.toString());\n }\n else {\n await this.getKeyValueStorage().removeItem(authKeys.idToken);\n }\n if (tokens.refreshToken) {\n await this.getKeyValueStorage().setItem(authKeys.refreshToken, tokens.refreshToken);\n }\n else {\n await this.getKeyValueStorage().removeItem(authKeys.refreshToken);\n }\n if (tokens.deviceMetadata) {\n if (tokens.deviceMetadata.deviceKey) {\n await this.getKeyValueStorage().setItem(authKeys.deviceKey, tokens.deviceMetadata.deviceKey);\n }\n if (tokens.deviceMetadata.deviceGroupKey) {\n await this.getKeyValueStorage().setItem(authKeys.deviceGroupKey, tokens.deviceMetadata.deviceGroupKey);\n }\n await this.getKeyValueStorage().setItem(authKeys.randomPasswordKey, tokens.deviceMetadata.randomPassword);\n }\n if (tokens.signInDetails) {\n await this.getKeyValueStorage().setItem(authKeys.signInDetails, JSON.stringify(tokens.signInDetails));\n }\n else {\n await this.getKeyValueStorage().removeItem(authKeys.signInDetails);\n }\n await this.getKeyValueStorage().setItem(authKeys.clockDrift, `${tokens.clockDrift}`);\n }\n async clearTokens() {\n const authKeys = await this.getAuthKeys();\n // Not calling clear because it can remove data that is not managed by AuthTokenStore\n await Promise.all([\n this.getKeyValueStorage().removeItem(authKeys.accessToken),\n this.getKeyValueStorage().removeItem(authKeys.idToken),\n this.getKeyValueStorage().removeItem(authKeys.clockDrift),\n this.getKeyValueStorage().removeItem(authKeys.refreshToken),\n this.getKeyValueStorage().removeItem(authKeys.signInDetails),\n this.getKeyValueStorage().removeItem(this.getLastAuthUserKey()),\n this.getKeyValueStorage().removeItem(authKeys.oauthMetadata),\n ]);\n }\n async getDeviceMetadata(username) {\n const authKeys = await this.getAuthKeys(username);\n const deviceKey = await this.getKeyValueStorage().getItem(authKeys.deviceKey);\n const deviceGroupKey = await this.getKeyValueStorage().getItem(authKeys.deviceGroupKey);\n const randomPassword = await this.getKeyValueStorage().getItem(authKeys.randomPasswordKey);\n return randomPassword && deviceGroupKey && deviceKey\n ? {\n deviceKey,\n deviceGroupKey,\n randomPassword,\n }\n : null;\n }\n async clearDeviceMetadata(username) {\n const authKeys = await this.getAuthKeys(username);\n await Promise.all([\n this.getKeyValueStorage().removeItem(authKeys.deviceKey),\n this.getKeyValueStorage().removeItem(authKeys.deviceGroupKey),\n this.getKeyValueStorage().removeItem(authKeys.randomPasswordKey),\n ]);\n }\n async getAuthKeys(username) {\n assertTokenProviderConfig(this.authConfig?.Cognito);\n const lastAuthUser = username ?? (await this.getLastAuthUser());\n return createKeysForAuthStorage(AUTH_KEY_PREFIX, `${this.authConfig.Cognito.userPoolClientId}.${lastAuthUser}`);\n }\n getLastAuthUserKey() {\n assertTokenProviderConfig(this.authConfig?.Cognito);\n const identifier = this.authConfig.Cognito.userPoolClientId;\n return `${AUTH_KEY_PREFIX}.${identifier}.LastAuthUser`;\n }\n async getLastAuthUser() {\n const lastAuthUser = (await this.getKeyValueStorage().getItem(this.getLastAuthUserKey())) ??\n 'username';\n return lastAuthUser;\n }\n async setOAuthMetadata(metadata) {\n const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n await this.getKeyValueStorage().setItem(oauthMetadataKey, JSON.stringify(metadata));\n }\n async getOAuthMetadata() {\n const { oauthMetadata: oauthMetadataKey } = await this.getAuthKeys();\n const oauthMetadata = await this.getKeyValueStorage().getItem(oauthMetadataKey);\n return oauthMetadata && JSON.parse(oauthMetadata);\n }\n}\nexport const createKeysForAuthStorage = (provider, identifier) => {\n return getAuthStorageKeys(AuthTokenStorageKeys)(`${provider}`, identifier);\n};\nexport function getAuthStorageKeys(authKeys) {\n const keys = Object.values({ ...authKeys });\n return (prefix, identifier) => keys.reduce((acc, authKey) => ({\n ...acc,\n [authKey]: `${prefix}.${identifier}.${authKey}`,\n }), {});\n}\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,iBAAiB,CAAC;AAC/B,IAAI,kBAAkB,GAAG;AACzB,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACnC,YAAY,MAAM,IAAI,SAAS,CAAC;AAChC,gBAAgB,IAAI,EAAE,kCAAkC;AACxD,gBAAgB,OAAO,EAAE,6CAA6C;AACtE,aAAa,CAAC;AACd;AACA,QAAQ,OAAO,IAAI,CAAC,eAAe;AACnC;AACA,IAAI,kBAAkB,CAAC,eAAe,EAAE;AACxC,QAAQ,IAAI,CAAC,eAAe,GAAG,eAAe;AAC9C;AACA,IAAI,aAAa,CAAC,UAAU,EAAE;AAC9B,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU;AACpC;AACA,IAAI,MAAM,UAAU,GAAG;AACvB;AACA;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AACrD,YAAY,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;AACnG,YAAY,IAAI,CAAC,iBAAiB,EAAE;AACpC,gBAAgB,MAAM,IAAI,SAAS,CAAC;AACpC,oBAAoB,IAAI,EAAE,yBAAyB;AACnD,oBAAoB,OAAO,EAAE,uDAAuD;AACpF,iBAAiB,CAAC;AAClB;AACA,YAAY,MAAM,WAAW,GAAG,SAAS,CAAC,iBAAiB,CAAC;AAC5D,YAAY,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;AACtF,YAAY,MAAM,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS;AACtE,YAAY,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;AAChG,gBAAgB,SAAS;AACzB,YAAY,MAAM,gBAAgB,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG;AAC1G,YAAY,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AAChE,YAAY,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;AACjG,YAAY,MAAM,MAAM,GAAG;AAC3B,gBAAgB,WAAW;AAC3B,gBAAgB,OAAO;AACvB,gBAAgB,YAAY;AAC5B,gBAAgB,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,SAAS;AAC7E,gBAAgB,UAAU;AAC1B,gBAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE;AACtD,aAAa;AACb,YAAY,IAAI,aAAa,EAAE;AAC/B,gBAAgB,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAChE;AACA,YAAY,OAAO,MAAM;AACzB;AACA,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO,IAAI;AACvB;AACA;AACA,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE;AAC9B,QAAQ,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,sBAAsB,CAAC,iBAAiB,CAAC;AAC9E,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ;AAC5C,QAAQ,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,CAAC;AACxF,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AACjD,QAAQ,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AACpG,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE;AAC5B,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAChG;AACA,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AACxE;AACA,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE;AACjC,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;AAC/F;AACA,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC7E;AACA,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE;AACnC,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE;AACjD,gBAAgB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC;AAC5G;AACA,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE;AACtD,gBAAgB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC;AACtH;AACA,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC;AACrH;AACA,QAAQ,IAAI,MAAM,CAAC,aAAa,EAAE;AAClC,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACjH;AACA,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9E;AACA,QAAQ,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5F;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AACjD;AACA,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC;AAC1B,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;AACtE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAClE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;AACvE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;AACxE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3E,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;AACxE,SAAS,CAAC;AACV;AACA,IAAI,MAAM,iBAAiB,CAAC,QAAQ,EAAE;AACtC,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,QAAQ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;AACrF,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;AAC/F,QAAQ,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAClG,QAAQ,OAAO,cAAc,IAAI,cAAc,IAAI;AACnD,cAAc;AACd,gBAAgB,SAAS;AACzB,gBAAgB,cAAc;AAC9B,gBAAgB,cAAc;AAC9B;AACA,cAAc,IAAI;AAClB;AACA,IAAI,MAAM,mBAAmB,CAAC,QAAQ,EAAE;AACxC,QAAQ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,QAAQ,MAAM,OAAO,CAAC,GAAG,CAAC;AAC1B,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;AACpE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;AACzE,YAAY,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC;AAC5E,SAAS,CAAC;AACV;AACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE;AAChC,QAAQ,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;AAC3D,QAAQ,MAAM,YAAY,GAAG,QAAQ,KAAK,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;AACvE,QAAQ,OAAO,wBAAwB,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AACvH;AACA,IAAI,kBAAkB,GAAG;AACzB,QAAQ,yBAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;AAC3D,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB;AACnE,QAAQ,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC;AAC9D;AACA,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAChG,YAAY,UAAU;AACtB,QAAQ,OAAO,YAAY;AAC3B;AACA,IAAI,MAAM,gBAAgB,CAAC,QAAQ,EAAE;AACrC,QAAQ,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAC5E,QAAQ,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC3F;AACA,IAAI,MAAM,gBAAgB,GAAG;AAC7B,QAAQ,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;AAC5E,QAAQ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvF,QAAQ,OAAO,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACzD;AACA;AACY,MAAC,wBAAwB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK;AAClE,IAAI,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;AAC9E;AACO,SAAS,kBAAkB,CAAC,QAAQ,EAAE;AAC7C,IAAI,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;AAC/C,IAAI,OAAO,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,MAAM;AAClE,QAAQ,GAAG,GAAG;AACd,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACvD,KAAK,CAAC,EAAE,EAAE,CAAC;AACX;;;;"}