@azure/msal-browser 3.4.0 → 3.5.1-beta.0

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 (231) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +51 -51
  2. package/dist/app/IPublicClientApplication.mjs +102 -102
  3. package/dist/app/PublicClientApplication.d.ts +268 -268
  4. package/dist/app/PublicClientApplication.mjs +333 -333
  5. package/dist/app/PublicClientNext.d.ts +273 -273
  6. package/dist/app/PublicClientNext.mjs +351 -351
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
  8. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -44
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
  12. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
  13. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  14. package/dist/cache/AsyncMemoryStorage.mjs +132 -132
  15. package/dist/cache/BrowserCacheManager.d.ts +383 -383
  16. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  17. package/dist/cache/BrowserCacheManager.mjs +1264 -1264
  18. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  19. package/dist/cache/BrowserStorage.d.ts +11 -11
  20. package/dist/cache/BrowserStorage.mjs +32 -32
  21. package/dist/cache/CryptoKeyStore.d.ts +18 -18
  22. package/dist/cache/CryptoKeyStore.mjs +40 -40
  23. package/dist/cache/DatabaseStorage.d.ts +56 -56
  24. package/dist/cache/DatabaseStorage.mjs +190 -190
  25. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  26. package/dist/cache/ITokenCache.d.ts +11 -11
  27. package/dist/cache/IWindowStorage.d.ts +27 -27
  28. package/dist/cache/MemoryStorage.d.ts +11 -11
  29. package/dist/cache/MemoryStorage.mjs +31 -31
  30. package/dist/cache/TokenCache.d.ts +77 -77
  31. package/dist/cache/TokenCache.mjs +224 -224
  32. package/dist/config/Configuration.d.ts +206 -206
  33. package/dist/config/Configuration.mjs +128 -128
  34. package/dist/controllers/ControllerFactory.d.ts +4 -4
  35. package/dist/controllers/ControllerFactory.mjs +29 -29
  36. package/dist/controllers/IController.d.ts +61 -61
  37. package/dist/controllers/NestedAppAuthController.d.ts +95 -95
  38. package/dist/controllers/NestedAppAuthController.d.ts.map +1 -1
  39. package/dist/controllers/NestedAppAuthController.mjs +335 -333
  40. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  41. package/dist/controllers/StandardController.d.ts +407 -407
  42. package/dist/controllers/StandardController.d.ts.map +1 -1
  43. package/dist/controllers/StandardController.mjs +1294 -1291
  44. package/dist/controllers/StandardController.mjs.map +1 -1
  45. package/dist/controllers/UnknownOperatingContextController.d.ts +87 -87
  46. package/dist/controllers/UnknownOperatingContextController.mjs +264 -264
  47. package/dist/crypto/BrowserCrypto.d.ts +44 -44
  48. package/dist/crypto/BrowserCrypto.mjs +93 -93
  49. package/dist/crypto/CryptoOps.d.ts +63 -63
  50. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  51. package/dist/crypto/CryptoOps.mjs +145 -144
  52. package/dist/crypto/CryptoOps.mjs.map +1 -1
  53. package/dist/crypto/PkceGenerator.d.ts +8 -8
  54. package/dist/crypto/PkceGenerator.mjs +54 -54
  55. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  56. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  57. package/dist/encode/Base64Decode.d.ts +9 -9
  58. package/dist/encode/Base64Decode.mjs +36 -36
  59. package/dist/encode/Base64Encode.d.ts +19 -19
  60. package/dist/encode/Base64Encode.mjs +43 -43
  61. package/dist/error/BrowserAuthError.d.ts +250 -250
  62. package/dist/error/BrowserAuthError.mjs +258 -258
  63. package/dist/error/BrowserAuthErrorCodes.d.ts +45 -45
  64. package/dist/error/BrowserAuthErrorCodes.mjs +49 -49
  65. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  66. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  67. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  68. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  69. package/dist/error/NativeAuthError.d.ts +29 -29
  70. package/dist/error/NativeAuthError.mjs +60 -60
  71. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  72. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  73. package/dist/error/NestedAppAuthError.d.ts +14 -14
  74. package/dist/error/NestedAppAuthError.mjs +23 -23
  75. package/dist/event/EventHandler.d.ts +41 -41
  76. package/dist/event/EventHandler.mjs +119 -119
  77. package/dist/event/EventMessage.d.ts +25 -25
  78. package/dist/event/EventMessage.mjs +68 -68
  79. package/dist/event/EventType.d.ts +28 -28
  80. package/dist/event/EventType.mjs +31 -31
  81. package/dist/index.d.ts +39 -39
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.mjs +2 -2
  84. package/dist/interaction_client/BaseInteractionClient.d.ts +54 -55
  85. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  86. package/dist/interaction_client/BaseInteractionClient.mjs +152 -153
  87. package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
  88. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  89. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  90. package/dist/interaction_client/NativeInteractionClient.d.ts +140 -140
  91. package/dist/interaction_client/NativeInteractionClient.mjs +548 -548
  92. package/dist/interaction_client/PopupClient.d.ts +105 -115
  93. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  94. package/dist/interaction_client/PopupClient.mjs +435 -505
  95. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  96. package/dist/interaction_client/RedirectClient.d.ts +49 -49
  97. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  98. package/dist/interaction_client/RedirectClient.mjs +314 -297
  99. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  100. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  101. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  102. package/dist/interaction_client/SilentCacheClient.d.ts +24 -24
  103. package/dist/interaction_client/SilentCacheClient.mjs +61 -61
  104. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  105. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  106. package/dist/interaction_client/SilentIframeClient.mjs +99 -108
  107. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  108. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  109. package/dist/interaction_client/SilentRefreshClient.mjs +43 -43
  110. package/dist/interaction_client/StandardInteractionClient.d.ts +54 -59
  111. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  112. package/dist/interaction_client/StandardInteractionClient.mjs +222 -244
  113. package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
  114. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  115. package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
  116. package/dist/interaction_handler/InteractionHandler.mjs +94 -98
  117. package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
  118. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  119. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  120. package/dist/interaction_handler/RedirectHandler.mjs +135 -139
  121. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  122. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  123. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  124. package/dist/interaction_handler/SilentHandler.mjs +134 -128
  125. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  126. package/dist/naa/AccountInfo.d.ts +11 -12
  127. package/dist/naa/AccountInfo.d.ts.map +1 -1
  128. package/dist/naa/AccountRequests.d.ts +9 -9
  129. package/dist/naa/AuthBridge.d.ts +5 -5
  130. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  131. package/dist/naa/BridgeError.d.ts +9 -9
  132. package/dist/naa/BridgeError.d.ts.map +1 -1
  133. package/dist/naa/BridgeError.mjs +7 -7
  134. package/dist/naa/BridgeError.mjs.map +1 -1
  135. package/dist/naa/BridgeProxy.d.ts +72 -71
  136. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  137. package/dist/naa/BridgeProxy.mjs +152 -149
  138. package/dist/naa/BridgeProxy.mjs.map +1 -1
  139. package/dist/naa/BridgeRequest.d.ts +6 -6
  140. package/dist/naa/BridgeRequestEnvelope.d.ts +13 -13
  141. package/dist/naa/BridgeResponseEnvelope.d.ts +10 -10
  142. package/dist/naa/BridgeStatusCode.d.ts +10 -10
  143. package/dist/naa/BridgeStatusCode.mjs +15 -15
  144. package/dist/naa/IBridgeProxy.d.ts +12 -10
  145. package/dist/naa/IBridgeProxy.d.ts.map +1 -1
  146. package/dist/naa/InitializeBridgeResponse.d.ts +6 -6
  147. package/dist/naa/InitializeBridgeResponse.d.ts.map +1 -1
  148. package/dist/naa/TokenRequest.d.ts +19 -21
  149. package/dist/naa/TokenRequest.d.ts.map +1 -1
  150. package/dist/naa/TokenResponse.d.ts +15 -16
  151. package/dist/naa/TokenResponse.d.ts.map +1 -1
  152. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +23 -25
  153. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +1 -1
  154. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +142 -170
  155. package/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +1 -1
  156. package/dist/navigation/INavigationClient.d.ts +16 -16
  157. package/dist/navigation/NavigationClient.d.ts +22 -22
  158. package/dist/navigation/NavigationClient.mjs +40 -40
  159. package/dist/navigation/NavigationOptions.d.ts +12 -12
  160. package/dist/network/FetchClient.d.ts +26 -26
  161. package/dist/network/FetchClient.mjs +99 -99
  162. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  163. package/dist/operatingcontext/BaseOperatingContext.mjs +44 -44
  164. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  165. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  166. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +32 -32
  167. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
  168. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +85 -82
  169. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  170. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  171. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  172. package/dist/packageMetadata.d.ts +2 -2
  173. package/dist/packageMetadata.mjs +4 -4
  174. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  175. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  176. package/dist/request/ClearCacheRequest.d.ts +10 -10
  177. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  178. package/dist/request/EndSessionRequest.d.ts +15 -15
  179. package/dist/request/PopupRequest.d.ts +34 -34
  180. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  181. package/dist/request/RedirectRequest.d.ts +35 -35
  182. package/dist/request/SilentRequest.d.ts +32 -32
  183. package/dist/request/SsoSilentRequest.d.ts +29 -29
  184. package/dist/response/AuthenticationResult.d.ts +4 -4
  185. package/dist/response/ResponseHandler.d.ts +8 -0
  186. package/dist/response/ResponseHandler.d.ts.map +1 -0
  187. package/dist/response/ResponseHandler.mjs +46 -0
  188. package/dist/response/ResponseHandler.mjs.map +1 -0
  189. package/dist/telemetry/BrowserPerformanceClient.d.ts +36 -36
  190. package/dist/telemetry/BrowserPerformanceClient.mjs +125 -125
  191. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  192. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  193. package/dist/utils/BrowserConstants.d.ts +176 -176
  194. package/dist/utils/BrowserConstants.mjs +204 -204
  195. package/dist/utils/BrowserProtocolUtils.d.ts +11 -18
  196. package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
  197. package/dist/utils/BrowserProtocolUtils.mjs +23 -36
  198. package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
  199. package/dist/utils/BrowserUtils.d.ts +56 -56
  200. package/dist/utils/BrowserUtils.mjs +125 -125
  201. package/lib/msal-browser.cjs +17926 -18062
  202. package/lib/msal-browser.cjs.map +1 -1
  203. package/lib/msal-browser.js +17926 -18062
  204. package/lib/msal-browser.js.map +1 -1
  205. package/lib/msal-browser.min.js +66 -65
  206. package/package.json +102 -102
  207. package/src/cache/BrowserCacheManager.ts +7 -10
  208. package/src/controllers/NestedAppAuthController.ts +8 -3
  209. package/src/controllers/StandardController.ts +31 -40
  210. package/src/crypto/CryptoOps.ts +5 -3
  211. package/src/index.ts +1 -0
  212. package/src/interaction_client/BaseInteractionClient.ts +1 -2
  213. package/src/interaction_client/PopupClient.ts +34 -137
  214. package/src/interaction_client/RedirectClient.ts +71 -55
  215. package/src/interaction_client/SilentIframeClient.ts +16 -27
  216. package/src/interaction_client/StandardInteractionClient.ts +2 -48
  217. package/src/interaction_handler/InteractionHandler.ts +5 -8
  218. package/src/interaction_handler/RedirectHandler.ts +4 -8
  219. package/src/interaction_handler/SilentHandler.ts +12 -5
  220. package/src/naa/AccountInfo.ts +3 -4
  221. package/src/naa/BridgeError.ts +4 -4
  222. package/src/naa/BridgeProxy.ts +6 -2
  223. package/src/naa/IBridgeProxy.ts +2 -0
  224. package/src/naa/InitializeBridgeResponse.ts +1 -1
  225. package/src/naa/TokenRequest.ts +0 -2
  226. package/src/naa/TokenResponse.ts +1 -2
  227. package/src/naa/mapping/NestedAppAuthAdapter.ts +72 -80
  228. package/src/operatingcontext/TeamsAppOperatingContext.ts +4 -1
  229. package/src/packageMetadata.ts +1 -1
  230. package/src/response/ResponseHandler.ts +73 -0
  231. package/src/utils/BrowserProtocolUtils.ts +17 -36
@@ -1,78 +1,78 @@
1
- import { ICrypto, Logger, ExternalTokenResponse } from "@azure/msal-common";
2
- import { BrowserConfiguration } from "../config/Configuration";
3
- import { SilentRequest } from "../request/SilentRequest";
4
- import { BrowserCacheManager } from "./BrowserCacheManager";
5
- import { ITokenCache } from "./ITokenCache";
6
- import { AuthenticationResult } from "../response/AuthenticationResult";
7
- export type LoadTokenOptions = {
8
- clientInfo?: string;
9
- expiresOn?: number;
10
- extendedExpiresOn?: number;
11
- };
12
- /**
13
- * Token cache manager
14
- */
15
- export declare class TokenCache implements ITokenCache {
16
- isBrowserEnvironment: boolean;
17
- protected config: BrowserConfiguration;
18
- private storage;
19
- private logger;
20
- private cryptoObj;
21
- constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto);
22
- /**
23
- * API to load tokens to msal-browser cache.
24
- * @param request
25
- * @param response
26
- * @param options
27
- * @returns `AuthenticationResult` for the response that was loaded.
28
- */
29
- loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult;
30
- /**
31
- * Helper function to load account to msal-browser cache
32
- * @param idToken
33
- * @param environment
34
- * @param clientInfo
35
- * @param authorityType
36
- * @param requestHomeAccountId
37
- * @returns `AccountEntity`
38
- */
39
- private loadAccount;
40
- /**
41
- * Helper function to load id tokens to msal-browser cache
42
- * @param idToken
43
- * @param homeAccountId
44
- * @param environment
45
- * @param tenantId
46
- * @returns `IdTokenEntity`
47
- */
48
- private loadIdToken;
49
- /**
50
- * Helper function to load access tokens to msal-browser cache
51
- * @param request
52
- * @param response
53
- * @param homeAccountId
54
- * @param environment
55
- * @param tenantId
56
- * @returns `AccessTokenEntity`
57
- */
58
- private loadAccessToken;
59
- /**
60
- * Helper function to load refresh tokens to msal-browser cache
61
- * @param request
62
- * @param response
63
- * @param homeAccountId
64
- * @param environment
65
- * @returns `RefreshTokenEntity`
66
- */
67
- private loadRefreshToken;
68
- /**
69
- * Helper function to generate an `AuthenticationResult` for the result.
70
- * @param request
71
- * @param idTokenObj
72
- * @param cacheRecord
73
- * @param authority
74
- * @returns `AuthenticationResult`
75
- */
76
- private generateAuthenticationResult;
77
- }
1
+ import { ICrypto, Logger, ExternalTokenResponse } from "@azure/msal-common";
2
+ import { BrowserConfiguration } from "../config/Configuration";
3
+ import { SilentRequest } from "../request/SilentRequest";
4
+ import { BrowserCacheManager } from "./BrowserCacheManager";
5
+ import { ITokenCache } from "./ITokenCache";
6
+ import { AuthenticationResult } from "../response/AuthenticationResult";
7
+ export type LoadTokenOptions = {
8
+ clientInfo?: string;
9
+ expiresOn?: number;
10
+ extendedExpiresOn?: number;
11
+ };
12
+ /**
13
+ * Token cache manager
14
+ */
15
+ export declare class TokenCache implements ITokenCache {
16
+ isBrowserEnvironment: boolean;
17
+ protected config: BrowserConfiguration;
18
+ private storage;
19
+ private logger;
20
+ private cryptoObj;
21
+ constructor(configuration: BrowserConfiguration, storage: BrowserCacheManager, logger: Logger, cryptoObj: ICrypto);
22
+ /**
23
+ * API to load tokens to msal-browser cache.
24
+ * @param request
25
+ * @param response
26
+ * @param options
27
+ * @returns `AuthenticationResult` for the response that was loaded.
28
+ */
29
+ loadExternalTokens(request: SilentRequest, response: ExternalTokenResponse, options: LoadTokenOptions): AuthenticationResult;
30
+ /**
31
+ * Helper function to load account to msal-browser cache
32
+ * @param idToken
33
+ * @param environment
34
+ * @param clientInfo
35
+ * @param authorityType
36
+ * @param requestHomeAccountId
37
+ * @returns `AccountEntity`
38
+ */
39
+ private loadAccount;
40
+ /**
41
+ * Helper function to load id tokens to msal-browser cache
42
+ * @param idToken
43
+ * @param homeAccountId
44
+ * @param environment
45
+ * @param tenantId
46
+ * @returns `IdTokenEntity`
47
+ */
48
+ private loadIdToken;
49
+ /**
50
+ * Helper function to load access tokens to msal-browser cache
51
+ * @param request
52
+ * @param response
53
+ * @param homeAccountId
54
+ * @param environment
55
+ * @param tenantId
56
+ * @returns `AccessTokenEntity`
57
+ */
58
+ private loadAccessToken;
59
+ /**
60
+ * Helper function to load refresh tokens to msal-browser cache
61
+ * @param request
62
+ * @param response
63
+ * @param homeAccountId
64
+ * @param environment
65
+ * @returns `RefreshTokenEntity`
66
+ */
67
+ private loadRefreshToken;
68
+ /**
69
+ * Helper function to generate an `AuthenticationResult` for the result.
70
+ * @param request
71
+ * @param idTokenObj
72
+ * @param cacheRecord
73
+ * @param authority
74
+ * @returns `AuthenticationResult`
75
+ */
76
+ private generateAuthenticationResult;
77
+ }
78
78
  //# sourceMappingURL=TokenCache.d.ts.map
@@ -1,233 +1,233 @@
1
- /*! @azure/msal-browser v3.4.0 2023-10-30 */
1
+ /*! @azure/msal-browser v3.5.1-beta.0 2023-11-14 */
2
2
  'use strict';
3
3
  import { AuthToken, AccountEntity, CacheRecord, Authority, CacheHelpers, ScopeSet, Constants } from '@azure/msal-common';
4
4
  import { createBrowserAuthError } from '../error/BrowserAuthError.mjs';
5
5
  import { base64Decode } from '../encode/Base64Decode.mjs';
6
6
  import { unableToLoadToken } from '../error/BrowserAuthErrorCodes.mjs';
7
7
 
8
- /*
9
- * Copyright (c) Microsoft Corporation. All rights reserved.
10
- * Licensed under the MIT License.
11
- */
12
- /**
13
- * Token cache manager
14
- */
15
- class TokenCache {
16
- constructor(configuration, storage, logger, cryptoObj) {
17
- this.isBrowserEnvironment = typeof window !== "undefined";
18
- this.config = configuration;
19
- this.storage = storage;
20
- this.logger = logger;
21
- this.cryptoObj = cryptoObj;
22
- }
23
- // Move getAllAccounts here and cache utility APIs
24
- /**
25
- * API to load tokens to msal-browser cache.
26
- * @param request
27
- * @param response
28
- * @param options
29
- * @returns `AuthenticationResult` for the response that was loaded.
30
- */
31
- loadExternalTokens(request, response, options) {
32
- this.logger.info("TokenCache - loadExternalTokens called");
33
- if (!response.id_token) {
34
- throw createBrowserAuthError(unableToLoadToken);
35
- }
36
- const idTokenClaims = AuthToken.extractTokenClaims(response.id_token, base64Decode);
37
- let cacheRecord;
38
- let authority;
39
- let cacheRecordAccount;
40
- if (request.account) {
41
- cacheRecordAccount = AccountEntity.createFromAccountInfo(request.account);
42
- cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));
43
- }
44
- else if (request.authority) {
45
- const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);
46
- const authorityOptions = {
47
- protocolMode: this.config.auth.protocolMode,
48
- knownAuthorities: this.config.auth.knownAuthorities,
49
- cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
50
- authorityMetadata: this.config.auth.authorityMetadata,
51
- skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
52
- };
53
- authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);
54
- // "clientInfo" from options takes precedence over "clientInfo" in response
55
- if (options.clientInfo) {
56
- this.logger.trace("TokenCache - homeAccountId from options");
57
- cacheRecordAccount = this.loadAccount(idTokenClaims, authority, options.clientInfo);
58
- cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
59
- }
60
- else if (response.client_info) {
61
- this.logger.trace("TokenCache - homeAccountId from response");
62
- cacheRecordAccount = this.loadAccount(idTokenClaims, authority, response.client_info);
63
- cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
64
- }
65
- else {
66
- throw createBrowserAuthError(unableToLoadToken);
67
- }
68
- }
69
- else {
70
- throw createBrowserAuthError(unableToLoadToken);
71
- }
72
- return this.generateAuthenticationResult(request, idTokenClaims, cacheRecord, cacheRecordAccount, authority);
73
- }
74
- /**
75
- * Helper function to load account to msal-browser cache
76
- * @param idToken
77
- * @param environment
78
- * @param clientInfo
79
- * @param authorityType
80
- * @param requestHomeAccountId
81
- * @returns `AccountEntity`
82
- */
83
- loadAccount(idTokenClaims, authority, clientInfo, requestHomeAccountId) {
84
- let homeAccountId;
85
- if (requestHomeAccountId) {
86
- homeAccountId = requestHomeAccountId;
87
- }
88
- else if (authority.authorityType !== undefined && clientInfo) {
89
- homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);
90
- }
91
- if (!homeAccountId) {
92
- throw createBrowserAuthError(unableToLoadToken);
93
- }
94
- const accountEntity = AccountEntity.createAccount({
95
- homeAccountId,
96
- idTokenClaims: idTokenClaims,
97
- clientInfo,
98
- environment: authority.hostnameAndPort,
99
- }, authority);
100
- if (this.isBrowserEnvironment) {
101
- this.logger.verbose("TokenCache - loading account");
102
- this.storage.setAccount(accountEntity);
103
- return accountEntity;
104
- }
105
- else {
106
- throw createBrowserAuthError(unableToLoadToken);
107
- }
108
- }
109
- /**
110
- * Helper function to load id tokens to msal-browser cache
111
- * @param idToken
112
- * @param homeAccountId
113
- * @param environment
114
- * @param tenantId
115
- * @returns `IdTokenEntity`
116
- */
117
- loadIdToken(idToken, homeAccountId, environment, tenantId) {
118
- const idTokenEntity = CacheHelpers.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);
119
- if (this.isBrowserEnvironment) {
120
- this.logger.verbose("TokenCache - loading id token");
121
- this.storage.setIdTokenCredential(idTokenEntity);
122
- return idTokenEntity;
123
- }
124
- else {
125
- throw createBrowserAuthError(unableToLoadToken);
126
- }
127
- }
128
- /**
129
- * Helper function to load access tokens to msal-browser cache
130
- * @param request
131
- * @param response
132
- * @param homeAccountId
133
- * @param environment
134
- * @param tenantId
135
- * @returns `AccessTokenEntity`
136
- */
137
- loadAccessToken(request, response, homeAccountId, environment, tenantId, options) {
138
- if (!response.access_token) {
139
- this.logger.verbose("TokenCache - No access token provided for caching");
140
- return null;
141
- }
142
- if (!response.expires_in) {
143
- throw createBrowserAuthError(unableToLoadToken);
144
- }
145
- if (!options.extendedExpiresOn) {
146
- throw createBrowserAuthError(unableToLoadToken);
147
- }
148
- const scopes = new ScopeSet(request.scopes).printScopes();
149
- const expiresOn = options.expiresOn ||
150
- response.expires_in + new Date().getTime() / 1000;
151
- const extendedExpiresOn = options.extendedExpiresOn;
152
- const accessTokenEntity = CacheHelpers.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, base64Decode);
153
- if (this.isBrowserEnvironment) {
154
- this.logger.verbose("TokenCache - loading access token");
155
- this.storage.setAccessTokenCredential(accessTokenEntity);
156
- return accessTokenEntity;
157
- }
158
- else {
159
- throw createBrowserAuthError(unableToLoadToken);
160
- }
161
- }
162
- /**
163
- * Helper function to load refresh tokens to msal-browser cache
164
- * @param request
165
- * @param response
166
- * @param homeAccountId
167
- * @param environment
168
- * @returns `RefreshTokenEntity`
169
- */
170
- loadRefreshToken(request, response, homeAccountId, environment) {
171
- if (!response.refresh_token) {
172
- this.logger.verbose("TokenCache - No refresh token provided for caching");
173
- return null;
174
- }
175
- const refreshTokenEntity = CacheHelpers.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);
176
- if (this.isBrowserEnvironment) {
177
- this.logger.verbose("TokenCache - loading refresh token");
178
- this.storage.setRefreshTokenCredential(refreshTokenEntity);
179
- return refreshTokenEntity;
180
- }
181
- else {
182
- throw createBrowserAuthError(unableToLoadToken);
183
- }
184
- }
185
- /**
186
- * Helper function to generate an `AuthenticationResult` for the result.
187
- * @param request
188
- * @param idTokenObj
189
- * @param cacheRecord
190
- * @param authority
191
- * @returns `AuthenticationResult`
192
- */
193
- generateAuthenticationResult(request, idTokenClaims, cacheRecord, accountEntity, authority) {
194
- let accessToken = Constants.EMPTY_STRING;
195
- let responseScopes = [];
196
- let expiresOn = null;
197
- let extExpiresOn;
198
- if (cacheRecord?.accessToken) {
199
- accessToken = cacheRecord.accessToken.secret;
200
- responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
201
- expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
202
- extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
203
- }
204
- const uid = idTokenClaims.oid || idTokenClaims.sub || Constants.EMPTY_STRING;
205
- const tid = idTokenClaims.tid || Constants.EMPTY_STRING;
206
- return {
207
- authority: authority
208
- ? authority.canonicalAuthority
209
- : Constants.EMPTY_STRING,
210
- uniqueId: uid,
211
- tenantId: tid,
212
- scopes: responseScopes,
213
- account: accountEntity.getAccountInfo(),
214
- idToken: cacheRecord.idToken?.secret || "",
215
- idTokenClaims: idTokenClaims || {},
216
- accessToken: accessToken,
217
- fromCache: true,
218
- expiresOn: expiresOn,
219
- correlationId: request.correlationId || Constants.EMPTY_STRING,
220
- requestId: Constants.EMPTY_STRING,
221
- extExpiresOn: extExpiresOn,
222
- familyId: Constants.EMPTY_STRING,
223
- tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,
224
- state: Constants.EMPTY_STRING,
225
- cloudGraphHostName: accountEntity.cloudGraphHostName || Constants.EMPTY_STRING,
226
- msGraphHost: accountEntity.msGraphHost || Constants.EMPTY_STRING,
227
- code: undefined,
228
- fromNativeBroker: false,
229
- };
230
- }
8
+ /*
9
+ * Copyright (c) Microsoft Corporation. All rights reserved.
10
+ * Licensed under the MIT License.
11
+ */
12
+ /**
13
+ * Token cache manager
14
+ */
15
+ class TokenCache {
16
+ constructor(configuration, storage, logger, cryptoObj) {
17
+ this.isBrowserEnvironment = typeof window !== "undefined";
18
+ this.config = configuration;
19
+ this.storage = storage;
20
+ this.logger = logger;
21
+ this.cryptoObj = cryptoObj;
22
+ }
23
+ // Move getAllAccounts here and cache utility APIs
24
+ /**
25
+ * API to load tokens to msal-browser cache.
26
+ * @param request
27
+ * @param response
28
+ * @param options
29
+ * @returns `AuthenticationResult` for the response that was loaded.
30
+ */
31
+ loadExternalTokens(request, response, options) {
32
+ this.logger.info("TokenCache - loadExternalTokens called");
33
+ if (!response.id_token) {
34
+ throw createBrowserAuthError(unableToLoadToken);
35
+ }
36
+ const idTokenClaims = AuthToken.extractTokenClaims(response.id_token, base64Decode);
37
+ let cacheRecord;
38
+ let authority;
39
+ let cacheRecordAccount;
40
+ if (request.account) {
41
+ cacheRecordAccount = AccountEntity.createFromAccountInfo(request.account);
42
+ cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment, request.account.tenantId, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, request.account.environment));
43
+ }
44
+ else if (request.authority) {
45
+ const authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);
46
+ const authorityOptions = {
47
+ protocolMode: this.config.auth.protocolMode,
48
+ knownAuthorities: this.config.auth.knownAuthorities,
49
+ cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
50
+ authorityMetadata: this.config.auth.authorityMetadata,
51
+ skipAuthorityMetadataCache: this.config.auth.skipAuthorityMetadataCache,
52
+ };
53
+ authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions, this.logger);
54
+ // "clientInfo" from options takes precedence over "clientInfo" in response
55
+ if (options.clientInfo) {
56
+ this.logger.trace("TokenCache - homeAccountId from options");
57
+ cacheRecordAccount = this.loadAccount(idTokenClaims, authority, options.clientInfo);
58
+ cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
59
+ }
60
+ else if (response.client_info) {
61
+ this.logger.trace("TokenCache - homeAccountId from response");
62
+ cacheRecordAccount = this.loadAccount(idTokenClaims, authority, response.client_info);
63
+ cacheRecord = new CacheRecord(cacheRecordAccount, this.loadIdToken(response.id_token, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant), this.loadAccessToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort, authority.tenant, options), this.loadRefreshToken(request, response, cacheRecordAccount.homeAccountId, authority.hostnameAndPort));
64
+ }
65
+ else {
66
+ throw createBrowserAuthError(unableToLoadToken);
67
+ }
68
+ }
69
+ else {
70
+ throw createBrowserAuthError(unableToLoadToken);
71
+ }
72
+ return this.generateAuthenticationResult(request, idTokenClaims, cacheRecord, cacheRecordAccount, authority);
73
+ }
74
+ /**
75
+ * Helper function to load account to msal-browser cache
76
+ * @param idToken
77
+ * @param environment
78
+ * @param clientInfo
79
+ * @param authorityType
80
+ * @param requestHomeAccountId
81
+ * @returns `AccountEntity`
82
+ */
83
+ loadAccount(idTokenClaims, authority, clientInfo, requestHomeAccountId) {
84
+ let homeAccountId;
85
+ if (requestHomeAccountId) {
86
+ homeAccountId = requestHomeAccountId;
87
+ }
88
+ else if (authority.authorityType !== undefined && clientInfo) {
89
+ homeAccountId = AccountEntity.generateHomeAccountId(clientInfo, authority.authorityType, this.logger, this.cryptoObj, idTokenClaims);
90
+ }
91
+ if (!homeAccountId) {
92
+ throw createBrowserAuthError(unableToLoadToken);
93
+ }
94
+ const accountEntity = AccountEntity.createAccount({
95
+ homeAccountId,
96
+ idTokenClaims: idTokenClaims,
97
+ clientInfo,
98
+ environment: authority.hostnameAndPort,
99
+ }, authority);
100
+ if (this.isBrowserEnvironment) {
101
+ this.logger.verbose("TokenCache - loading account");
102
+ this.storage.setAccount(accountEntity);
103
+ return accountEntity;
104
+ }
105
+ else {
106
+ throw createBrowserAuthError(unableToLoadToken);
107
+ }
108
+ }
109
+ /**
110
+ * Helper function to load id tokens to msal-browser cache
111
+ * @param idToken
112
+ * @param homeAccountId
113
+ * @param environment
114
+ * @param tenantId
115
+ * @returns `IdTokenEntity`
116
+ */
117
+ loadIdToken(idToken, homeAccountId, environment, tenantId) {
118
+ const idTokenEntity = CacheHelpers.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);
119
+ if (this.isBrowserEnvironment) {
120
+ this.logger.verbose("TokenCache - loading id token");
121
+ this.storage.setIdTokenCredential(idTokenEntity);
122
+ return idTokenEntity;
123
+ }
124
+ else {
125
+ throw createBrowserAuthError(unableToLoadToken);
126
+ }
127
+ }
128
+ /**
129
+ * Helper function to load access tokens to msal-browser cache
130
+ * @param request
131
+ * @param response
132
+ * @param homeAccountId
133
+ * @param environment
134
+ * @param tenantId
135
+ * @returns `AccessTokenEntity`
136
+ */
137
+ loadAccessToken(request, response, homeAccountId, environment, tenantId, options) {
138
+ if (!response.access_token) {
139
+ this.logger.verbose("TokenCache - No access token provided for caching");
140
+ return null;
141
+ }
142
+ if (!response.expires_in) {
143
+ throw createBrowserAuthError(unableToLoadToken);
144
+ }
145
+ if (!options.extendedExpiresOn) {
146
+ throw createBrowserAuthError(unableToLoadToken);
147
+ }
148
+ const scopes = new ScopeSet(request.scopes).printScopes();
149
+ const expiresOn = options.expiresOn ||
150
+ response.expires_in + new Date().getTime() / 1000;
151
+ const extendedExpiresOn = options.extendedExpiresOn;
152
+ const accessTokenEntity = CacheHelpers.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, base64Decode);
153
+ if (this.isBrowserEnvironment) {
154
+ this.logger.verbose("TokenCache - loading access token");
155
+ this.storage.setAccessTokenCredential(accessTokenEntity);
156
+ return accessTokenEntity;
157
+ }
158
+ else {
159
+ throw createBrowserAuthError(unableToLoadToken);
160
+ }
161
+ }
162
+ /**
163
+ * Helper function to load refresh tokens to msal-browser cache
164
+ * @param request
165
+ * @param response
166
+ * @param homeAccountId
167
+ * @param environment
168
+ * @returns `RefreshTokenEntity`
169
+ */
170
+ loadRefreshToken(request, response, homeAccountId, environment) {
171
+ if (!response.refresh_token) {
172
+ this.logger.verbose("TokenCache - No refresh token provided for caching");
173
+ return null;
174
+ }
175
+ const refreshTokenEntity = CacheHelpers.createRefreshTokenEntity(homeAccountId, environment, response.refresh_token, this.config.auth.clientId);
176
+ if (this.isBrowserEnvironment) {
177
+ this.logger.verbose("TokenCache - loading refresh token");
178
+ this.storage.setRefreshTokenCredential(refreshTokenEntity);
179
+ return refreshTokenEntity;
180
+ }
181
+ else {
182
+ throw createBrowserAuthError(unableToLoadToken);
183
+ }
184
+ }
185
+ /**
186
+ * Helper function to generate an `AuthenticationResult` for the result.
187
+ * @param request
188
+ * @param idTokenObj
189
+ * @param cacheRecord
190
+ * @param authority
191
+ * @returns `AuthenticationResult`
192
+ */
193
+ generateAuthenticationResult(request, idTokenClaims, cacheRecord, accountEntity, authority) {
194
+ let accessToken = Constants.EMPTY_STRING;
195
+ let responseScopes = [];
196
+ let expiresOn = null;
197
+ let extExpiresOn;
198
+ if (cacheRecord?.accessToken) {
199
+ accessToken = cacheRecord.accessToken.secret;
200
+ responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
201
+ expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
202
+ extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
203
+ }
204
+ const uid = idTokenClaims.oid || idTokenClaims.sub || Constants.EMPTY_STRING;
205
+ const tid = idTokenClaims.tid || Constants.EMPTY_STRING;
206
+ return {
207
+ authority: authority
208
+ ? authority.canonicalAuthority
209
+ : Constants.EMPTY_STRING,
210
+ uniqueId: uid,
211
+ tenantId: tid,
212
+ scopes: responseScopes,
213
+ account: accountEntity.getAccountInfo(),
214
+ idToken: cacheRecord.idToken?.secret || "",
215
+ idTokenClaims: idTokenClaims || {},
216
+ accessToken: accessToken,
217
+ fromCache: true,
218
+ expiresOn: expiresOn,
219
+ correlationId: request.correlationId || Constants.EMPTY_STRING,
220
+ requestId: Constants.EMPTY_STRING,
221
+ extExpiresOn: extExpiresOn,
222
+ familyId: Constants.EMPTY_STRING,
223
+ tokenType: cacheRecord?.accessToken?.tokenType || Constants.EMPTY_STRING,
224
+ state: Constants.EMPTY_STRING,
225
+ cloudGraphHostName: accountEntity.cloudGraphHostName || Constants.EMPTY_STRING,
226
+ msGraphHost: accountEntity.msGraphHost || Constants.EMPTY_STRING,
227
+ code: undefined,
228
+ fromNativeBroker: false,
229
+ };
230
+ }
231
231
  }
232
232
 
233
233
  export { TokenCache };