@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +213 -213
  3. package/dist/app/IPublicClientApplication.d.ts +45 -45
  4. package/dist/app/IPublicClientApplication.js +96 -96
  5. package/dist/app/PublicClientApplication.d.ts +244 -244
  6. package/dist/app/PublicClientApplication.js +307 -307
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
  8. package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  12. package/dist/cache/AsyncMemoryStorage.js +132 -132
  13. package/dist/cache/BrowserCacheManager.d.ts +377 -377
  14. package/dist/cache/BrowserCacheManager.js +1276 -1276
  15. package/dist/cache/BrowserStorage.d.ts +11 -11
  16. package/dist/cache/BrowserStorage.js +35 -35
  17. package/dist/cache/CryptoKeyStore.d.ts +17 -17
  18. package/dist/cache/CryptoKeyStore.js +41 -41
  19. package/dist/cache/DatabaseStorage.d.ts +56 -56
  20. package/dist/cache/DatabaseStorage.js +190 -190
  21. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  22. package/dist/cache/ITokenCache.d.ts +10 -10
  23. package/dist/cache/IWindowStorage.d.ts +27 -27
  24. package/dist/cache/MemoryStorage.d.ts +11 -11
  25. package/dist/cache/MemoryStorage.js +31 -31
  26. package/dist/cache/TokenCache.d.ts +76 -76
  27. package/dist/cache/TokenCache.js +225 -225
  28. package/dist/config/Configuration.d.ts +203 -203
  29. package/dist/config/Configuration.js +101 -101
  30. package/dist/controllers/ControllerFactory.d.ts +9 -9
  31. package/dist/controllers/ControllerFactory.js +37 -37
  32. package/dist/controllers/IController.d.ts +66 -66
  33. package/dist/controllers/StandardController.d.ts +413 -413
  34. package/dist/controllers/StandardController.js +1272 -1272
  35. package/dist/crypto/BrowserCrypto.d.ts +61 -61
  36. package/dist/crypto/BrowserCrypto.js +131 -131
  37. package/dist/crypto/CryptoOps.d.ts +73 -73
  38. package/dist/crypto/CryptoOps.js +150 -150
  39. package/dist/crypto/GuidGenerator.d.ts +12 -12
  40. package/dist/crypto/GuidGenerator.js +96 -96
  41. package/dist/crypto/ISubtleCrypto.d.ts +9 -9
  42. package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
  43. package/dist/crypto/ModernBrowserCrypto.js +24 -24
  44. package/dist/crypto/MsBrowserCrypto.d.ts +9 -9
  45. package/dist/crypto/MsBrowserCrypto.js +79 -79
  46. package/dist/crypto/MsrBrowserCrypto.d.ts +17 -17
  47. package/dist/crypto/MsrBrowserCrypto.js +28 -28
  48. package/dist/crypto/PkceGenerator.d.ts +24 -24
  49. package/dist/crypto/PkceGenerator.js +58 -58
  50. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  51. package/dist/crypto/SignedHttpRequest.js +39 -39
  52. package/dist/encode/Base64Decode.d.ts +22 -22
  53. package/dist/encode/Base64Decode.js +73 -73
  54. package/dist/encode/Base64Encode.d.ts +31 -31
  55. package/dist/encode/Base64Encode.js +79 -79
  56. package/dist/error/BrowserAuthError.d.ts +382 -382
  57. package/dist/error/BrowserAuthError.js +483 -483
  58. package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
  59. package/dist/error/BrowserConfigurationAuthError.js +96 -96
  60. package/dist/error/NativeAuthError.d.ts +56 -56
  61. package/dist/error/NativeAuthError.js +88 -88
  62. package/dist/event/EventHandler.d.ts +41 -41
  63. package/dist/event/EventHandler.js +119 -119
  64. package/dist/event/EventMessage.d.ts +25 -25
  65. package/dist/event/EventMessage.js +67 -67
  66. package/dist/event/EventType.d.ts +26 -26
  67. package/dist/event/EventType.js +31 -31
  68. package/dist/index.d.ts +35 -35
  69. package/dist/index.js +1 -1
  70. package/dist/interaction_client/BaseInteractionClient.d.ts +52 -52
  71. package/dist/interaction_client/BaseInteractionClient.js +138 -138
  72. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  73. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
  74. package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
  75. package/dist/interaction_client/NativeInteractionClient.js +516 -516
  76. package/dist/interaction_client/PopupClient.d.ts +111 -111
  77. package/dist/interaction_client/PopupClient.js +476 -476
  78. package/dist/interaction_client/RedirectClient.d.ts +48 -48
  79. package/dist/interaction_client/RedirectClient.js +290 -290
  80. package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
  81. package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
  82. package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
  83. package/dist/interaction_client/SilentCacheClient.js +67 -67
  84. package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
  85. package/dist/interaction_client/SilentIframeClient.js +127 -127
  86. package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
  87. package/dist/interaction_client/SilentRefreshClient.js +62 -62
  88. package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
  89. package/dist/interaction_client/StandardInteractionClient.js +259 -259
  90. package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
  91. package/dist/interaction_handler/InteractionHandler.js +127 -127
  92. package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
  93. package/dist/interaction_handler/RedirectHandler.js +118 -118
  94. package/dist/interaction_handler/SilentHandler.d.ts +47 -47
  95. package/dist/interaction_handler/SilentHandler.js +162 -162
  96. package/dist/internals.d.ts +23 -23
  97. package/dist/internals.js +4 -4
  98. package/dist/navigation/INavigationClient.d.ts +16 -16
  99. package/dist/navigation/NavigationClient.d.ts +22 -22
  100. package/dist/navigation/NavigationClient.js +40 -40
  101. package/dist/navigation/NavigationOptions.d.ts +12 -12
  102. package/dist/network/FetchClient.d.ts +26 -26
  103. package/dist/network/FetchClient.js +99 -99
  104. package/dist/network/XhrClient.d.ts +40 -40
  105. package/dist/network/XhrClient.js +117 -117
  106. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  107. package/dist/operatingcontext/BaseOperatingContext.js +44 -44
  108. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  109. package/dist/operatingcontext/StandardOperatingContext.js +43 -43
  110. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
  111. package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
  112. package/dist/packageMetadata.d.ts +2 -2
  113. package/dist/packageMetadata.js +4 -4
  114. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  115. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  116. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  117. package/dist/request/EndSessionRequest.d.ts +15 -15
  118. package/dist/request/PopupRequest.d.ts +32 -32
  119. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  120. package/dist/request/RedirectRequest.d.ts +33 -33
  121. package/dist/request/SilentRequest.d.ts +30 -30
  122. package/dist/request/SsoSilentRequest.d.ts +26 -26
  123. package/dist/telemetry/BrowserPerformanceClient.d.ts +38 -38
  124. package/dist/telemetry/BrowserPerformanceClient.js +124 -124
  125. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  126. package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
  127. package/dist/utils/BrowserConstants.d.ts +166 -166
  128. package/dist/utils/BrowserConstants.js +214 -214
  129. package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
  130. package/dist/utils/BrowserProtocolUtils.js +34 -34
  131. package/dist/utils/BrowserStringUtils.d.ts +26 -26
  132. package/dist/utils/BrowserStringUtils.js +149 -149
  133. package/dist/utils/BrowserUtils.d.ts +65 -65
  134. package/dist/utils/BrowserUtils.js +138 -138
  135. package/dist/utils/MathUtils.d.ts +11 -11
  136. package/dist/utils/MathUtils.js +21 -21
  137. package/lib/msal-browser.cjs.js +18383 -0
  138. package/lib/msal-browser.cjs.js.map +1 -0
  139. package/lib/msal-browser.js +18389 -0
  140. package/lib/msal-browser.js.map +1 -0
  141. package/lib/msal-browser.min.js +74 -0
  142. package/package.json +97 -95
@@ -1,378 +1,378 @@
1
- import { CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, Logger, AuthorityMetadataEntity, AccountInfo, ValidCredentialType, TokenKeys, CredentialType } from "@azure/msal-common";
2
- import { CacheOptions } from "../config/Configuration";
3
- import { BrowserCacheLocation, InteractionType } from "../utils/BrowserConstants";
4
- import { MemoryStorage } from "./MemoryStorage";
5
- import { IWindowStorage } from "./IWindowStorage";
6
- import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest";
7
- /**
8
- * This class implements the cache storage interface for MSAL through browser local or session storage.
9
- * Cookies are only used if storeAuthStateInCookie is true, and are only used for
10
- * parameters such as state and nonce, generally.
11
- */
12
- export declare class BrowserCacheManager extends CacheManager {
13
- protected cacheConfig: Required<CacheOptions>;
14
- protected browserStorage: IWindowStorage<string>;
15
- protected internalStorage: MemoryStorage<string>;
16
- protected temporaryCacheStorage: IWindowStorage<string>;
17
- protected logger: Logger;
18
- protected readonly COOKIE_LIFE_MULTIPLIER: number;
19
- constructor(clientId: string, cacheConfig: Required<CacheOptions>, cryptoImpl: ICrypto, logger: Logger);
20
- /**
21
- * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.
22
- * @param cacheLocation
23
- */
24
- protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string>;
25
- /**
26
- * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured temporaryCacheLocation.
27
- * @param temporaryCacheLocation
28
- * @param cacheLocation
29
- */
30
- protected setupTemporaryCacheStorage(temporaryCacheLocation: BrowserCacheLocation | string, cacheLocation: BrowserCacheLocation | string): IWindowStorage<string>;
31
- /**
32
- * Migrate all old cache entries to new schema. No rollback supported.
33
- * @param storeAuthStateInCookie
34
- */
35
- protected migrateCacheEntries(): void;
36
- /**
37
- * Utility function to help with migration.
38
- * @param newKey
39
- * @param value
40
- * @param storeAuthStateInCookie
41
- */
42
- protected migrateCacheEntry(newKey: string, value: string | null): void;
43
- /**
44
- * Searches all cache entries for MSAL accounts and creates the account key map
45
- * This is used to migrate users from older versions of MSAL which did not create the map.
46
- * @returns
47
- */
48
- private createKeyMaps;
49
- /**
50
- * Parses passed value as JSON object, JSON.parse() will throw an error.
51
- * @param input
52
- */
53
- protected validateAndParseJson(jsonValue: string): object | null;
54
- /**
55
- * fetches the entry from the browser storage based off the key
56
- * @param key
57
- */
58
- getItem(key: string): string | null;
59
- /**
60
- * sets the entry in the browser storage
61
- * @param key
62
- * @param value
63
- */
64
- setItem(key: string, value: string): void;
65
- /**
66
- * fetch the account entity from the platform cache
67
- * @param accountKey
68
- */
69
- getAccount(accountKey: string): AccountEntity | null;
70
- /**
71
- * set account entity in the platform cache
72
- * @param key
73
- * @param value
74
- */
75
- setAccount(account: AccountEntity): void;
76
- /**
77
- * Returns the array of account keys currently cached
78
- * @returns
79
- */
80
- getAccountKeys(): Array<string>;
81
- /**
82
- * Add a new account to the key map
83
- * @param key
84
- */
85
- addAccountKeyToMap(key: string): void;
86
- /**
87
- * Remove an account from the key map
88
- * @param key
89
- */
90
- removeAccountKeyFromMap(key: string): void;
91
- /**
92
- * Extends inherited removeAccount function to include removal of the account key from the map
93
- * @param key
94
- */
95
- removeAccount(key: string): Promise<void>;
96
- /**
97
- * Removes given idToken from the cache and from the key map
98
- * @param key
99
- */
100
- removeIdToken(key: string): void;
101
- /**
102
- * Removes given accessToken from the cache and from the key map
103
- * @param key
104
- */
105
- removeAccessToken(key: string): Promise<void>;
106
- /**
107
- * Removes given refreshToken from the cache and from the key map
108
- * @param key
109
- */
110
- removeRefreshToken(key: string): void;
111
- /**
112
- * Gets the keys for the cached tokens associated with this clientId
113
- * @returns
114
- */
115
- getTokenKeys(): TokenKeys;
116
- /**
117
- * Adds the given key to the token key map
118
- * @param key
119
- * @param type
120
- */
121
- addTokenKey(key: string, type: CredentialType): void;
122
- /**
123
- * Removes the given key from the token key map
124
- * @param key
125
- * @param type
126
- */
127
- removeTokenKey(key: string, type: CredentialType): void;
128
- /**
129
- * generates idToken entity from a string
130
- * @param idTokenKey
131
- */
132
- getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;
133
- /**
134
- * set IdToken credential to the platform cache
135
- * @param idToken
136
- */
137
- setIdTokenCredential(idToken: IdTokenEntity): void;
138
- /**
139
- * generates accessToken entity from a string
140
- * @param key
141
- */
142
- getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;
143
- /**
144
- * set accessToken credential to the platform cache
145
- * @param accessToken
146
- */
147
- setAccessTokenCredential(accessToken: AccessTokenEntity): void;
148
- /**
149
- * generates refreshToken entity from a string
150
- * @param refreshTokenKey
151
- */
152
- getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;
153
- /**
154
- * set refreshToken credential to the platform cache
155
- * @param refreshToken
156
- */
157
- setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;
158
- /**
159
- * fetch appMetadata entity from the platform cache
160
- * @param appMetadataKey
161
- */
162
- getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;
163
- /**
164
- * set appMetadata entity to the platform cache
165
- * @param appMetadata
166
- */
167
- setAppMetadata(appMetadata: AppMetadataEntity): void;
168
- /**
169
- * fetch server telemetry entity from the platform cache
170
- * @param serverTelemetryKey
171
- */
172
- getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;
173
- /**
174
- * set server telemetry entity to the platform cache
175
- * @param serverTelemetryKey
176
- * @param serverTelemetry
177
- */
178
- setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;
179
- /**
180
- *
181
- */
182
- getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;
183
- /**
184
- *
185
- */
186
- getAuthorityMetadataKeys(): Array<string>;
187
- /**
188
- * Sets wrapper metadata in memory
189
- * @param wrapperSKU
190
- * @param wrapperVersion
191
- */
192
- setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void;
193
- /**
194
- * Returns wrapper metadata from in-memory storage
195
- */
196
- getWrapperMetadata(): [string, string];
197
- /**
198
- *
199
- * @param entity
200
- */
201
- setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void;
202
- /**
203
- * Gets the active account
204
- */
205
- getActiveAccount(): AccountInfo | null;
206
- /**
207
- * Sets the active account's localAccountId in cache
208
- * @param account
209
- */
210
- setActiveAccount(account: AccountInfo | null): void;
211
- /**
212
- * Gets a list of accounts that match all of the filters provided
213
- * @param account
214
- */
215
- getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, "idTokenClaims" | "name">>): AccountInfo[];
216
- /**
217
- * Checks the cache for accounts matching loginHint or SID
218
- * @param loginHint
219
- * @param sid
220
- */
221
- getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null;
222
- /**
223
- * fetch throttling entity from the platform cache
224
- * @param throttlingCacheKey
225
- */
226
- getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;
227
- /**
228
- * set throttling entity to the platform cache
229
- * @param throttlingCacheKey
230
- * @param throttlingCache
231
- */
232
- setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;
233
- /**
234
- * Gets cache item with given key.
235
- * Will retrieve from cookies if storeAuthStateInCookie is set to true.
236
- * @param key
237
- */
238
- getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null;
239
- /**
240
- * Sets the cache item with the key and value given.
241
- * Stores in cookie if storeAuthStateInCookie is set to true.
242
- * This can cause cookie overflow if used incorrectly.
243
- * @param key
244
- * @param value
245
- */
246
- setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void;
247
- /**
248
- * Removes the cache item with the given key.
249
- * Will also clear the cookie item if storeAuthStateInCookie is set to true.
250
- * @param key
251
- */
252
- removeItem(key: string): void;
253
- /**
254
- * Checks whether key is in cache.
255
- * @param key
256
- */
257
- containsKey(key: string): boolean;
258
- /**
259
- * Gets all keys in window.
260
- */
261
- getKeys(): string[];
262
- /**
263
- * Clears all cache entries created by MSAL.
264
- */
265
- clear(): Promise<void>;
266
- /**
267
- * Add value to cookies
268
- * @param cookieName
269
- * @param cookieValue
270
- * @param expires
271
- */
272
- setItemCookie(cookieName: string, cookieValue: string, expires?: number): void;
273
- /**
274
- * Get one item by key from cookies
275
- * @param cookieName
276
- */
277
- getItemCookie(cookieName: string): string;
278
- /**
279
- * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.
280
- */
281
- clearMsalCookies(): void;
282
- /**
283
- * Clear an item in the cookies by key
284
- * @param cookieName
285
- */
286
- clearItemCookie(cookieName: string): void;
287
- /**
288
- * Get cookie expiration time
289
- * @param cookieLifeDays
290
- */
291
- getCookieExpirationTime(cookieLifeDays: number): string;
292
- /**
293
- * Gets the cache object referenced by the browser
294
- */
295
- getCache(): object;
296
- /**
297
- * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser
298
- */
299
- setCache(): void;
300
- /**
301
- * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)
302
- * @param key
303
- * @param addInstanceId
304
- */
305
- generateCacheKey(key: string): string;
306
- /**
307
- * Create authorityKey to cache authority
308
- * @param state
309
- */
310
- generateAuthorityKey(stateString: string): string;
311
- /**
312
- * Create Nonce key to cache nonce
313
- * @param state
314
- */
315
- generateNonceKey(stateString: string): string;
316
- /**
317
- * Creates full cache key for the request state
318
- * @param stateString State string for the request
319
- */
320
- generateStateKey(stateString: string): string;
321
- /**
322
- * Gets the cached authority based on the cached state. Returns empty if no cached state found.
323
- */
324
- getCachedAuthority(cachedState: string): string | null;
325
- /**
326
- * Updates account, authority, and state in cache
327
- * @param serverAuthenticationRequest
328
- * @param account
329
- */
330
- updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void;
331
- /**
332
- * Reset all temporary cache items
333
- * @param state
334
- */
335
- resetRequestCache(state: string): void;
336
- /**
337
- * Removes temporary cache for the provided state
338
- * @param stateString
339
- */
340
- cleanRequestByState(stateString: string): void;
341
- /**
342
- * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state
343
- * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.
344
- * @param interactionType
345
- */
346
- cleanRequestByInteractionType(interactionType: InteractionType): void;
347
- cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void;
348
- /**
349
- * Gets the token exchange parameters from the cache. Throws an error if nothing is found.
350
- */
351
- getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest;
352
- /**
353
- * Gets cached native request for redirect flows
354
- */
355
- getCachedNativeRequest(): NativeTokenRequest | null;
356
- isInteractionInProgress(matchClientId?: boolean): boolean;
357
- getInteractionInProgress(): string | null;
358
- setInteractionInProgress(inProgress: boolean): void;
359
- /**
360
- * Returns username retrieved from ADAL or MSAL v1 idToken
361
- */
362
- getLegacyLoginHint(): string | null;
363
- /**
364
- * Updates a credential's cache key if the current cache key is outdated
365
- */
366
- updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;
367
- /**
368
- * Returns application id as redirect context during AcquireTokenRedirect flow.
369
- */
370
- getRedirectRequestContext(): string | null;
371
- /**
372
- * Sets application id as the redirect context during AcquireTokenRedirect flow.
373
- * @param value
374
- */
375
- setRedirectRequestContext(value: string): void;
376
- }
377
- export declare const DEFAULT_BROWSER_CACHE_MANAGER: (clientId: string, logger: Logger) => BrowserCacheManager;
1
+ import { CommonAuthorizationCodeRequest, ICrypto, AccountEntity, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, CacheManager, ServerTelemetryEntity, ThrottlingEntity, Logger, AuthorityMetadataEntity, AccountInfo, ValidCredentialType, TokenKeys, CredentialType } from "@azure/msal-common";
2
+ import { CacheOptions } from "../config/Configuration";
3
+ import { BrowserCacheLocation, InteractionType } from "../utils/BrowserConstants";
4
+ import { MemoryStorage } from "./MemoryStorage";
5
+ import { IWindowStorage } from "./IWindowStorage";
6
+ import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest";
7
+ /**
8
+ * This class implements the cache storage interface for MSAL through browser local or session storage.
9
+ * Cookies are only used if storeAuthStateInCookie is true, and are only used for
10
+ * parameters such as state and nonce, generally.
11
+ */
12
+ export declare class BrowserCacheManager extends CacheManager {
13
+ protected cacheConfig: Required<CacheOptions>;
14
+ protected browserStorage: IWindowStorage<string>;
15
+ protected internalStorage: MemoryStorage<string>;
16
+ protected temporaryCacheStorage: IWindowStorage<string>;
17
+ protected logger: Logger;
18
+ protected readonly COOKIE_LIFE_MULTIPLIER: number;
19
+ constructor(clientId: string, cacheConfig: Required<CacheOptions>, cryptoImpl: ICrypto, logger: Logger);
20
+ /**
21
+ * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.
22
+ * @param cacheLocation
23
+ */
24
+ protected setupBrowserStorage(cacheLocation: BrowserCacheLocation | string): IWindowStorage<string>;
25
+ /**
26
+ * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured temporaryCacheLocation.
27
+ * @param temporaryCacheLocation
28
+ * @param cacheLocation
29
+ */
30
+ protected setupTemporaryCacheStorage(temporaryCacheLocation: BrowserCacheLocation | string, cacheLocation: BrowserCacheLocation | string): IWindowStorage<string>;
31
+ /**
32
+ * Migrate all old cache entries to new schema. No rollback supported.
33
+ * @param storeAuthStateInCookie
34
+ */
35
+ protected migrateCacheEntries(): void;
36
+ /**
37
+ * Utility function to help with migration.
38
+ * @param newKey
39
+ * @param value
40
+ * @param storeAuthStateInCookie
41
+ */
42
+ protected migrateCacheEntry(newKey: string, value: string | null): void;
43
+ /**
44
+ * Searches all cache entries for MSAL accounts and creates the account key map
45
+ * This is used to migrate users from older versions of MSAL which did not create the map.
46
+ * @returns
47
+ */
48
+ private createKeyMaps;
49
+ /**
50
+ * Parses passed value as JSON object, JSON.parse() will throw an error.
51
+ * @param input
52
+ */
53
+ protected validateAndParseJson(jsonValue: string): object | null;
54
+ /**
55
+ * fetches the entry from the browser storage based off the key
56
+ * @param key
57
+ */
58
+ getItem(key: string): string | null;
59
+ /**
60
+ * sets the entry in the browser storage
61
+ * @param key
62
+ * @param value
63
+ */
64
+ setItem(key: string, value: string): void;
65
+ /**
66
+ * fetch the account entity from the platform cache
67
+ * @param accountKey
68
+ */
69
+ getAccount(accountKey: string): AccountEntity | null;
70
+ /**
71
+ * set account entity in the platform cache
72
+ * @param key
73
+ * @param value
74
+ */
75
+ setAccount(account: AccountEntity): void;
76
+ /**
77
+ * Returns the array of account keys currently cached
78
+ * @returns
79
+ */
80
+ getAccountKeys(): Array<string>;
81
+ /**
82
+ * Add a new account to the key map
83
+ * @param key
84
+ */
85
+ addAccountKeyToMap(key: string): void;
86
+ /**
87
+ * Remove an account from the key map
88
+ * @param key
89
+ */
90
+ removeAccountKeyFromMap(key: string): void;
91
+ /**
92
+ * Extends inherited removeAccount function to include removal of the account key from the map
93
+ * @param key
94
+ */
95
+ removeAccount(key: string): Promise<void>;
96
+ /**
97
+ * Removes given idToken from the cache and from the key map
98
+ * @param key
99
+ */
100
+ removeIdToken(key: string): void;
101
+ /**
102
+ * Removes given accessToken from the cache and from the key map
103
+ * @param key
104
+ */
105
+ removeAccessToken(key: string): Promise<void>;
106
+ /**
107
+ * Removes given refreshToken from the cache and from the key map
108
+ * @param key
109
+ */
110
+ removeRefreshToken(key: string): void;
111
+ /**
112
+ * Gets the keys for the cached tokens associated with this clientId
113
+ * @returns
114
+ */
115
+ getTokenKeys(): TokenKeys;
116
+ /**
117
+ * Adds the given key to the token key map
118
+ * @param key
119
+ * @param type
120
+ */
121
+ addTokenKey(key: string, type: CredentialType): void;
122
+ /**
123
+ * Removes the given key from the token key map
124
+ * @param key
125
+ * @param type
126
+ */
127
+ removeTokenKey(key: string, type: CredentialType): void;
128
+ /**
129
+ * generates idToken entity from a string
130
+ * @param idTokenKey
131
+ */
132
+ getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;
133
+ /**
134
+ * set IdToken credential to the platform cache
135
+ * @param idToken
136
+ */
137
+ setIdTokenCredential(idToken: IdTokenEntity): void;
138
+ /**
139
+ * generates accessToken entity from a string
140
+ * @param key
141
+ */
142
+ getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null;
143
+ /**
144
+ * set accessToken credential to the platform cache
145
+ * @param accessToken
146
+ */
147
+ setAccessTokenCredential(accessToken: AccessTokenEntity): void;
148
+ /**
149
+ * generates refreshToken entity from a string
150
+ * @param refreshTokenKey
151
+ */
152
+ getRefreshTokenCredential(refreshTokenKey: string): RefreshTokenEntity | null;
153
+ /**
154
+ * set refreshToken credential to the platform cache
155
+ * @param refreshToken
156
+ */
157
+ setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;
158
+ /**
159
+ * fetch appMetadata entity from the platform cache
160
+ * @param appMetadataKey
161
+ */
162
+ getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;
163
+ /**
164
+ * set appMetadata entity to the platform cache
165
+ * @param appMetadata
166
+ */
167
+ setAppMetadata(appMetadata: AppMetadataEntity): void;
168
+ /**
169
+ * fetch server telemetry entity from the platform cache
170
+ * @param serverTelemetryKey
171
+ */
172
+ getServerTelemetry(serverTelemetryKey: string): ServerTelemetryEntity | null;
173
+ /**
174
+ * set server telemetry entity to the platform cache
175
+ * @param serverTelemetryKey
176
+ * @param serverTelemetry
177
+ */
178
+ setServerTelemetry(serverTelemetryKey: string, serverTelemetry: ServerTelemetryEntity): void;
179
+ /**
180
+ *
181
+ */
182
+ getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;
183
+ /**
184
+ *
185
+ */
186
+ getAuthorityMetadataKeys(): Array<string>;
187
+ /**
188
+ * Sets wrapper metadata in memory
189
+ * @param wrapperSKU
190
+ * @param wrapperVersion
191
+ */
192
+ setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void;
193
+ /**
194
+ * Returns wrapper metadata from in-memory storage
195
+ */
196
+ getWrapperMetadata(): [string, string];
197
+ /**
198
+ *
199
+ * @param entity
200
+ */
201
+ setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void;
202
+ /**
203
+ * Gets the active account
204
+ */
205
+ getActiveAccount(): AccountInfo | null;
206
+ /**
207
+ * Sets the active account's localAccountId in cache
208
+ * @param account
209
+ */
210
+ setActiveAccount(account: AccountInfo | null): void;
211
+ /**
212
+ * Gets a list of accounts that match all of the filters provided
213
+ * @param account
214
+ */
215
+ getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, "idTokenClaims" | "name">>): AccountInfo[];
216
+ /**
217
+ * Checks the cache for accounts matching loginHint or SID
218
+ * @param loginHint
219
+ * @param sid
220
+ */
221
+ getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null;
222
+ /**
223
+ * fetch throttling entity from the platform cache
224
+ * @param throttlingCacheKey
225
+ */
226
+ getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null;
227
+ /**
228
+ * set throttling entity to the platform cache
229
+ * @param throttlingCacheKey
230
+ * @param throttlingCache
231
+ */
232
+ setThrottlingCache(throttlingCacheKey: string, throttlingCache: ThrottlingEntity): void;
233
+ /**
234
+ * Gets cache item with given key.
235
+ * Will retrieve from cookies if storeAuthStateInCookie is set to true.
236
+ * @param key
237
+ */
238
+ getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null;
239
+ /**
240
+ * Sets the cache item with the key and value given.
241
+ * Stores in cookie if storeAuthStateInCookie is set to true.
242
+ * This can cause cookie overflow if used incorrectly.
243
+ * @param key
244
+ * @param value
245
+ */
246
+ setTemporaryCache(cacheKey: string, value: string, generateKey?: boolean): void;
247
+ /**
248
+ * Removes the cache item with the given key.
249
+ * Will also clear the cookie item if storeAuthStateInCookie is set to true.
250
+ * @param key
251
+ */
252
+ removeItem(key: string): void;
253
+ /**
254
+ * Checks whether key is in cache.
255
+ * @param key
256
+ */
257
+ containsKey(key: string): boolean;
258
+ /**
259
+ * Gets all keys in window.
260
+ */
261
+ getKeys(): string[];
262
+ /**
263
+ * Clears all cache entries created by MSAL.
264
+ */
265
+ clear(): Promise<void>;
266
+ /**
267
+ * Add value to cookies
268
+ * @param cookieName
269
+ * @param cookieValue
270
+ * @param expires
271
+ */
272
+ setItemCookie(cookieName: string, cookieValue: string, expires?: number): void;
273
+ /**
274
+ * Get one item by key from cookies
275
+ * @param cookieName
276
+ */
277
+ getItemCookie(cookieName: string): string;
278
+ /**
279
+ * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.
280
+ */
281
+ clearMsalCookies(): void;
282
+ /**
283
+ * Clear an item in the cookies by key
284
+ * @param cookieName
285
+ */
286
+ clearItemCookie(cookieName: string): void;
287
+ /**
288
+ * Get cookie expiration time
289
+ * @param cookieLifeDays
290
+ */
291
+ getCookieExpirationTime(cookieLifeDays: number): string;
292
+ /**
293
+ * Gets the cache object referenced by the browser
294
+ */
295
+ getCache(): object;
296
+ /**
297
+ * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser
298
+ */
299
+ setCache(): void;
300
+ /**
301
+ * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)
302
+ * @param key
303
+ * @param addInstanceId
304
+ */
305
+ generateCacheKey(key: string): string;
306
+ /**
307
+ * Create authorityKey to cache authority
308
+ * @param state
309
+ */
310
+ generateAuthorityKey(stateString: string): string;
311
+ /**
312
+ * Create Nonce key to cache nonce
313
+ * @param state
314
+ */
315
+ generateNonceKey(stateString: string): string;
316
+ /**
317
+ * Creates full cache key for the request state
318
+ * @param stateString State string for the request
319
+ */
320
+ generateStateKey(stateString: string): string;
321
+ /**
322
+ * Gets the cached authority based on the cached state. Returns empty if no cached state found.
323
+ */
324
+ getCachedAuthority(cachedState: string): string | null;
325
+ /**
326
+ * Updates account, authority, and state in cache
327
+ * @param serverAuthenticationRequest
328
+ * @param account
329
+ */
330
+ updateCacheEntries(state: string, nonce: string, authorityInstance: string, loginHint: string, account: AccountInfo | null): void;
331
+ /**
332
+ * Reset all temporary cache items
333
+ * @param state
334
+ */
335
+ resetRequestCache(state: string): void;
336
+ /**
337
+ * Removes temporary cache for the provided state
338
+ * @param stateString
339
+ */
340
+ cleanRequestByState(stateString: string): void;
341
+ /**
342
+ * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state
343
+ * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.
344
+ * @param interactionType
345
+ */
346
+ cleanRequestByInteractionType(interactionType: InteractionType): void;
347
+ cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest, browserCrypto: ICrypto): void;
348
+ /**
349
+ * Gets the token exchange parameters from the cache. Throws an error if nothing is found.
350
+ */
351
+ getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest;
352
+ /**
353
+ * Gets cached native request for redirect flows
354
+ */
355
+ getCachedNativeRequest(): NativeTokenRequest | null;
356
+ isInteractionInProgress(matchClientId?: boolean): boolean;
357
+ getInteractionInProgress(): string | null;
358
+ setInteractionInProgress(inProgress: boolean): void;
359
+ /**
360
+ * Returns username retrieved from ADAL or MSAL v1 idToken
361
+ */
362
+ getLegacyLoginHint(): string | null;
363
+ /**
364
+ * Updates a credential's cache key if the current cache key is outdated
365
+ */
366
+ updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;
367
+ /**
368
+ * Returns application id as redirect context during AcquireTokenRedirect flow.
369
+ */
370
+ getRedirectRequestContext(): string | null;
371
+ /**
372
+ * Sets application id as the redirect context during AcquireTokenRedirect flow.
373
+ * @param value
374
+ */
375
+ setRedirectRequestContext(value: string): void;
376
+ }
377
+ export declare const DEFAULT_BROWSER_CACHE_MANAGER: (clientId: string, logger: Logger) => BrowserCacheManager;
378
378
  //# sourceMappingURL=BrowserCacheManager.d.ts.map