@azure/msal-browser 3.5.0 → 3.5.1-beta.1

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 (195) 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.mjs +1262 -1262
  17. package/dist/cache/BrowserStorage.d.ts +11 -11
  18. package/dist/cache/BrowserStorage.mjs +32 -32
  19. package/dist/cache/CryptoKeyStore.d.ts +18 -18
  20. package/dist/cache/CryptoKeyStore.mjs +40 -40
  21. package/dist/cache/DatabaseStorage.d.ts +56 -56
  22. package/dist/cache/DatabaseStorage.mjs +190 -190
  23. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  24. package/dist/cache/ITokenCache.d.ts +11 -11
  25. package/dist/cache/IWindowStorage.d.ts +27 -27
  26. package/dist/cache/MemoryStorage.d.ts +11 -11
  27. package/dist/cache/MemoryStorage.mjs +31 -31
  28. package/dist/cache/TokenCache.d.ts +77 -77
  29. package/dist/cache/TokenCache.mjs +224 -224
  30. package/dist/config/Configuration.d.ts +206 -206
  31. package/dist/config/Configuration.mjs +128 -128
  32. package/dist/controllers/ControllerFactory.d.ts +4 -4
  33. package/dist/controllers/ControllerFactory.mjs +29 -29
  34. package/dist/controllers/IController.d.ts +61 -61
  35. package/dist/controllers/NestedAppAuthController.d.ts +95 -95
  36. package/dist/controllers/NestedAppAuthController.d.ts.map +1 -1
  37. package/dist/controllers/NestedAppAuthController.mjs +335 -333
  38. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  39. package/dist/controllers/StandardController.d.ts +407 -407
  40. package/dist/controllers/StandardController.d.ts.map +1 -1
  41. package/dist/controllers/StandardController.mjs +1293 -1291
  42. package/dist/controllers/StandardController.mjs.map +1 -1
  43. package/dist/controllers/UnknownOperatingContextController.d.ts +87 -87
  44. package/dist/controllers/UnknownOperatingContextController.mjs +264 -264
  45. package/dist/crypto/BrowserCrypto.d.ts +44 -44
  46. package/dist/crypto/BrowserCrypto.mjs +93 -93
  47. package/dist/crypto/CryptoOps.d.ts +63 -63
  48. package/dist/crypto/CryptoOps.mjs +145 -145
  49. package/dist/crypto/PkceGenerator.d.ts +8 -8
  50. package/dist/crypto/PkceGenerator.mjs +54 -54
  51. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  52. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  53. package/dist/encode/Base64Decode.d.ts +9 -9
  54. package/dist/encode/Base64Decode.mjs +36 -36
  55. package/dist/encode/Base64Encode.d.ts +19 -19
  56. package/dist/encode/Base64Encode.mjs +43 -43
  57. package/dist/error/BrowserAuthError.d.ts +250 -250
  58. package/dist/error/BrowserAuthError.mjs +258 -258
  59. package/dist/error/BrowserAuthErrorCodes.d.ts +45 -45
  60. package/dist/error/BrowserAuthErrorCodes.mjs +49 -49
  61. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  62. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  63. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  64. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  65. package/dist/error/NativeAuthError.d.ts +29 -29
  66. package/dist/error/NativeAuthError.mjs +60 -60
  67. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  68. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  69. package/dist/error/NestedAppAuthError.d.ts +14 -14
  70. package/dist/error/NestedAppAuthError.mjs +23 -23
  71. package/dist/event/EventHandler.d.ts +41 -41
  72. package/dist/event/EventHandler.mjs +119 -119
  73. package/dist/event/EventMessage.d.ts +25 -25
  74. package/dist/event/EventMessage.mjs +68 -68
  75. package/dist/event/EventType.d.ts +28 -28
  76. package/dist/event/EventType.mjs +31 -31
  77. package/dist/index.d.ts +39 -39
  78. package/dist/index.mjs +1 -1
  79. package/dist/interaction_client/BaseInteractionClient.d.ts +54 -54
  80. package/dist/interaction_client/BaseInteractionClient.mjs +152 -152
  81. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  82. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  83. package/dist/interaction_client/NativeInteractionClient.d.ts +140 -140
  84. package/dist/interaction_client/NativeInteractionClient.mjs +548 -548
  85. package/dist/interaction_client/PopupClient.d.ts +105 -105
  86. package/dist/interaction_client/PopupClient.mjs +432 -432
  87. package/dist/interaction_client/RedirectClient.d.ts +49 -49
  88. package/dist/interaction_client/RedirectClient.mjs +311 -311
  89. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  90. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  91. package/dist/interaction_client/SilentCacheClient.d.ts +24 -24
  92. package/dist/interaction_client/SilentCacheClient.mjs +61 -61
  93. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  94. package/dist/interaction_client/SilentIframeClient.mjs +96 -96
  95. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  96. package/dist/interaction_client/SilentRefreshClient.mjs +43 -43
  97. package/dist/interaction_client/StandardInteractionClient.d.ts +54 -54
  98. package/dist/interaction_client/StandardInteractionClient.mjs +222 -222
  99. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  100. package/dist/interaction_handler/InteractionHandler.mjs +93 -93
  101. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  102. package/dist/interaction_handler/RedirectHandler.mjs +134 -134
  103. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  104. package/dist/interaction_handler/SilentHandler.mjs +133 -133
  105. package/dist/naa/AccountInfo.d.ts +11 -12
  106. package/dist/naa/AccountInfo.d.ts.map +1 -1
  107. package/dist/naa/AccountRequests.d.ts +9 -9
  108. package/dist/naa/AuthBridge.d.ts +5 -5
  109. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  110. package/dist/naa/BridgeError.d.ts +9 -9
  111. package/dist/naa/BridgeError.d.ts.map +1 -1
  112. package/dist/naa/BridgeError.mjs +7 -7
  113. package/dist/naa/BridgeError.mjs.map +1 -1
  114. package/dist/naa/BridgeProxy.d.ts +72 -71
  115. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  116. package/dist/naa/BridgeProxy.mjs +152 -149
  117. package/dist/naa/BridgeProxy.mjs.map +1 -1
  118. package/dist/naa/BridgeRequest.d.ts +6 -6
  119. package/dist/naa/BridgeRequestEnvelope.d.ts +13 -13
  120. package/dist/naa/BridgeResponseEnvelope.d.ts +10 -10
  121. package/dist/naa/BridgeStatusCode.d.ts +10 -10
  122. package/dist/naa/BridgeStatusCode.mjs +15 -15
  123. package/dist/naa/IBridgeProxy.d.ts +12 -10
  124. package/dist/naa/IBridgeProxy.d.ts.map +1 -1
  125. package/dist/naa/InitializeBridgeResponse.d.ts +6 -6
  126. package/dist/naa/InitializeBridgeResponse.d.ts.map +1 -1
  127. package/dist/naa/TokenRequest.d.ts +19 -21
  128. package/dist/naa/TokenRequest.d.ts.map +1 -1
  129. package/dist/naa/TokenResponse.d.ts +15 -16
  130. package/dist/naa/TokenResponse.d.ts.map +1 -1
  131. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +23 -25
  132. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts.map +1 -1
  133. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +142 -170
  134. package/dist/naa/mapping/NestedAppAuthAdapter.mjs.map +1 -1
  135. package/dist/navigation/INavigationClient.d.ts +16 -16
  136. package/dist/navigation/NavigationClient.d.ts +22 -22
  137. package/dist/navigation/NavigationClient.mjs +40 -40
  138. package/dist/navigation/NavigationOptions.d.ts +12 -12
  139. package/dist/network/FetchClient.d.ts +26 -26
  140. package/dist/network/FetchClient.mjs +99 -99
  141. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  142. package/dist/operatingcontext/BaseOperatingContext.mjs +44 -44
  143. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  144. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  145. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +32 -32
  146. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
  147. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +85 -82
  148. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  149. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  150. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  151. package/dist/packageMetadata.d.ts +2 -2
  152. package/dist/packageMetadata.d.ts.map +1 -1
  153. package/dist/packageMetadata.mjs +4 -4
  154. package/dist/packageMetadata.mjs.map +1 -1
  155. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  156. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  157. package/dist/request/ClearCacheRequest.d.ts +10 -10
  158. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  159. package/dist/request/EndSessionRequest.d.ts +15 -15
  160. package/dist/request/PopupRequest.d.ts +34 -34
  161. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  162. package/dist/request/RedirectRequest.d.ts +35 -35
  163. package/dist/request/SilentRequest.d.ts +32 -32
  164. package/dist/request/SsoSilentRequest.d.ts +29 -29
  165. package/dist/response/AuthenticationResult.d.ts +4 -4
  166. package/dist/response/ResponseHandler.d.ts +7 -7
  167. package/dist/response/ResponseHandler.mjs +36 -36
  168. package/dist/telemetry/BrowserPerformanceClient.d.ts +36 -36
  169. package/dist/telemetry/BrowserPerformanceClient.mjs +125 -125
  170. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  171. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  172. package/dist/utils/BrowserConstants.d.ts +176 -176
  173. package/dist/utils/BrowserConstants.mjs +204 -204
  174. package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
  175. package/dist/utils/BrowserProtocolUtils.mjs +21 -21
  176. package/dist/utils/BrowserUtils.d.ts +56 -56
  177. package/dist/utils/BrowserUtils.mjs +125 -125
  178. package/lib/msal-browser.cjs +17922 -17928
  179. package/lib/msal-browser.cjs.map +1 -1
  180. package/lib/msal-browser.js +17922 -17928
  181. package/lib/msal-browser.js.map +1 -1
  182. package/lib/msal-browser.min.js +59 -59
  183. package/package.json +102 -102
  184. package/src/controllers/NestedAppAuthController.ts +8 -3
  185. package/src/controllers/StandardController.ts +3 -1
  186. package/src/naa/AccountInfo.ts +3 -4
  187. package/src/naa/BridgeError.ts +4 -4
  188. package/src/naa/BridgeProxy.ts +6 -2
  189. package/src/naa/IBridgeProxy.ts +2 -0
  190. package/src/naa/InitializeBridgeResponse.ts +1 -1
  191. package/src/naa/TokenRequest.ts +0 -2
  192. package/src/naa/TokenResponse.ts +1 -2
  193. package/src/naa/mapping/NestedAppAuthAdapter.ts +72 -80
  194. package/src/operatingcontext/TeamsAppOperatingContext.ts +4 -1
  195. package/src/packageMetadata.ts +1 -1
@@ -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.5.0 2023-11-07 */
1
+ /*! @azure/msal-browser v3.5.1-beta.1 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 };