@azure/msal-browser 3.0.2 → 3.2.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 (280) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +2 -0
  2. package/dist/app/IPublicClientApplication.d.ts.map +1 -1
  3. package/dist/app/IPublicClientApplication.mjs +22 -18
  4. package/dist/app/IPublicClientApplication.mjs.map +1 -1
  5. package/dist/app/PublicClientApplication.d.ts +20 -6
  6. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  7. package/dist/app/PublicClientApplication.mjs +24 -7
  8. package/dist/app/PublicClientApplication.mjs.map +1 -1
  9. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +3 -4
  10. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -1
  11. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +17 -16
  12. package/dist/broker/nativeBroker/NativeMessageHandler.mjs.map +1 -1
  13. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +8 -0
  14. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map +1 -0
  15. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +16 -0
  16. package/dist/broker/nativeBroker/NativeStatusCodes.mjs.map +1 -0
  17. package/dist/cache/AsyncMemoryStorage.mjs +4 -3
  18. package/dist/cache/AsyncMemoryStorage.mjs.map +1 -1
  19. package/dist/cache/BrowserCacheManager.d.ts +10 -3
  20. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  21. package/dist/cache/BrowserCacheManager.mjs +58 -29
  22. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  23. package/dist/cache/BrowserStorage.d.ts.map +1 -1
  24. package/dist/cache/BrowserStorage.mjs +7 -9
  25. package/dist/cache/BrowserStorage.mjs.map +1 -1
  26. package/dist/cache/CryptoKeyStore.mjs +1 -1
  27. package/dist/cache/CryptoKeyStore.mjs.map +1 -1
  28. package/dist/cache/DatabaseStorage.d.ts.map +1 -1
  29. package/dist/cache/DatabaseStorage.mjs +9 -8
  30. package/dist/cache/DatabaseStorage.mjs.map +1 -1
  31. package/dist/cache/MemoryStorage.mjs +1 -1
  32. package/dist/cache/MemoryStorage.mjs.map +1 -1
  33. package/dist/cache/TokenCache.d.ts.map +1 -1
  34. package/dist/cache/TokenCache.mjs +30 -30
  35. package/dist/cache/TokenCache.mjs.map +1 -1
  36. package/dist/config/Configuration.d.ts +1 -0
  37. package/dist/config/Configuration.d.ts.map +1 -1
  38. package/dist/config/Configuration.mjs +12 -16
  39. package/dist/config/Configuration.mjs.map +1 -1
  40. package/dist/controllers/ControllerFactory.mjs +1 -1
  41. package/dist/controllers/ControllerFactory.mjs.map +1 -1
  42. package/dist/controllers/IController.d.ts +5 -28
  43. package/dist/controllers/IController.d.ts.map +1 -1
  44. package/dist/controllers/StandardController.d.ts +17 -31
  45. package/dist/controllers/StandardController.d.ts.map +1 -1
  46. package/dist/controllers/StandardController.mjs +78 -83
  47. package/dist/controllers/StandardController.mjs.map +1 -1
  48. package/dist/crypto/BrowserCrypto.d.ts +44 -49
  49. package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
  50. package/dist/crypto/BrowserCrypto.mjs +78 -77
  51. package/dist/crypto/BrowserCrypto.mjs.map +1 -1
  52. package/dist/crypto/CryptoOps.d.ts +1 -10
  53. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  54. package/dist/crypto/CryptoOps.mjs +23 -34
  55. package/dist/crypto/CryptoOps.mjs.map +1 -1
  56. package/dist/crypto/PkceGenerator.d.ts +6 -22
  57. package/dist/crypto/PkceGenerator.d.ts.map +1 -1
  58. package/dist/crypto/PkceGenerator.mjs +48 -49
  59. package/dist/crypto/PkceGenerator.mjs.map +1 -1
  60. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  61. package/dist/crypto/SignedHttpRequest.mjs.map +1 -1
  62. package/dist/encode/Base64Decode.d.ts +6 -19
  63. package/dist/encode/Base64Decode.d.ts.map +1 -1
  64. package/dist/encode/Base64Decode.mjs +31 -68
  65. package/dist/encode/Base64Decode.mjs.map +1 -1
  66. package/dist/encode/Base64Encode.d.ts +15 -27
  67. package/dist/encode/Base64Encode.d.ts.map +1 -1
  68. package/dist/encode/Base64Encode.mjs +36 -75
  69. package/dist/encode/Base64Encode.mjs.map +1 -1
  70. package/dist/error/BrowserAuthError.d.ts +63 -195
  71. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  72. package/dist/error/BrowserAuthError.mjs +159 -381
  73. package/dist/error/BrowserAuthError.mjs.map +1 -1
  74. package/dist/error/BrowserAuthErrorCodes.d.ts +46 -0
  75. package/dist/error/BrowserAuthErrorCodes.d.ts.map +1 -0
  76. package/dist/error/BrowserAuthErrorCodes.mjs +54 -0
  77. package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -0
  78. package/dist/error/BrowserConfigurationAuthError.d.ts +9 -46
  79. package/dist/error/BrowserConfigurationAuthError.d.ts.map +1 -1
  80. package/dist/error/BrowserConfigurationAuthError.mjs +20 -73
  81. package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
  82. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +4 -0
  83. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map +1 -0
  84. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +12 -0
  85. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map +1 -0
  86. package/dist/error/NativeAuthError.d.ts +17 -45
  87. package/dist/error/NativeAuthError.d.ts.map +1 -1
  88. package/dist/error/NativeAuthError.mjs +49 -79
  89. package/dist/error/NativeAuthError.mjs.map +1 -1
  90. package/dist/error/NativeAuthErrorCodes.d.ts +3 -0
  91. package/dist/error/NativeAuthErrorCodes.d.ts.map +1 -0
  92. package/dist/error/NativeAuthErrorCodes.mjs +11 -0
  93. package/dist/error/NativeAuthErrorCodes.mjs.map +1 -0
  94. package/dist/event/EventHandler.d.ts.map +1 -1
  95. package/dist/event/EventHandler.mjs +3 -2
  96. package/dist/event/EventHandler.mjs.map +1 -1
  97. package/dist/event/EventMessage.mjs +1 -1
  98. package/dist/event/EventMessage.mjs.map +1 -1
  99. package/dist/event/EventType.mjs +1 -1
  100. package/dist/event/EventType.mjs.map +1 -1
  101. package/dist/index.d.ts +6 -6
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.mjs +8 -4
  104. package/dist/index.mjs.map +1 -1
  105. package/dist/interaction_client/BaseInteractionClient.d.ts +2 -1
  106. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  107. package/dist/interaction_client/BaseInteractionClient.mjs +7 -8
  108. package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
  109. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  110. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map +1 -1
  111. package/dist/interaction_client/NativeInteractionClient.d.ts +4 -10
  112. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  113. package/dist/interaction_client/NativeInteractionClient.mjs +32 -38
  114. package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
  115. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  116. package/dist/interaction_client/PopupClient.mjs +16 -15
  117. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  118. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  119. package/dist/interaction_client/RedirectClient.mjs +7 -6
  120. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  121. package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
  122. package/dist/interaction_client/SilentAuthCodeClient.mjs +9 -11
  123. package/dist/interaction_client/SilentAuthCodeClient.mjs.map +1 -1
  124. package/dist/interaction_client/SilentCacheClient.d.ts +4 -2
  125. package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
  126. package/dist/interaction_client/SilentCacheClient.mjs +19 -25
  127. package/dist/interaction_client/SilentCacheClient.mjs.map +1 -1
  128. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  129. package/dist/interaction_client/SilentIframeClient.mjs +20 -47
  130. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  131. package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
  132. package/dist/interaction_client/SilentRefreshClient.mjs +11 -20
  133. package/dist/interaction_client/SilentRefreshClient.mjs.map +1 -1
  134. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  135. package/dist/interaction_client/StandardInteractionClient.mjs +18 -38
  136. package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
  137. package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
  138. package/dist/interaction_handler/InteractionHandler.mjs +13 -16
  139. package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
  140. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  141. package/dist/interaction_handler/RedirectHandler.mjs +12 -11
  142. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  143. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  144. package/dist/interaction_handler/SilentHandler.mjs +11 -11
  145. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  146. package/dist/navigation/NavigationClient.mjs +1 -1
  147. package/dist/navigation/NavigationClient.mjs.map +1 -1
  148. package/dist/network/FetchClient.d.ts.map +1 -1
  149. package/dist/network/FetchClient.mjs +9 -8
  150. package/dist/network/FetchClient.mjs.map +1 -1
  151. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  152. package/dist/operatingcontext/BaseOperatingContext.mjs.map +1 -1
  153. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  154. package/dist/operatingcontext/StandardOperatingContext.mjs.map +1 -1
  155. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +1 -1
  156. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  157. package/dist/packageMetadata.d.ts +1 -1
  158. package/dist/packageMetadata.mjs +2 -2
  159. package/dist/packageMetadata.mjs.map +1 -1
  160. package/dist/request/ClearCacheRequest.d.ts +11 -0
  161. package/dist/request/ClearCacheRequest.d.ts.map +1 -0
  162. package/dist/telemetry/BrowserPerformanceClient.d.ts +2 -4
  163. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  164. package/dist/telemetry/BrowserPerformanceClient.mjs +2 -6
  165. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  166. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  167. package/dist/telemetry/BrowserPerformanceMeasurement.mjs.map +1 -1
  168. package/dist/utils/BrowserConstants.mjs +1 -1
  169. package/dist/utils/BrowserConstants.mjs.map +1 -1
  170. package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
  171. package/dist/utils/BrowserProtocolUtils.mjs +4 -4
  172. package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
  173. package/dist/utils/BrowserStringUtils.mjs +1 -1
  174. package/dist/utils/BrowserStringUtils.mjs.map +1 -1
  175. package/dist/utils/BrowserUtils.d.ts +0 -9
  176. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  177. package/dist/utils/BrowserUtils.mjs +8 -33
  178. package/dist/utils/BrowserUtils.mjs.map +1 -1
  179. package/lib/msal-browser.cjs +8729 -9566
  180. package/lib/msal-browser.cjs.map +1 -1
  181. package/lib/msal-browser.js +8729 -9566
  182. package/lib/msal-browser.js.map +1 -1
  183. package/lib/msal-browser.min.js +68 -62
  184. package/package.json +7 -5
  185. package/src/app/IPublicClientApplication.ts +236 -0
  186. package/src/app/PublicClientApplication.ts +417 -0
  187. package/src/broker/nativeBroker/NativeMessageHandler.ts +416 -0
  188. package/src/broker/nativeBroker/NativeRequest.ts +52 -0
  189. package/src/broker/nativeBroker/NativeResponse.ts +56 -0
  190. package/src/broker/nativeBroker/NativeStatusCodes.ts +13 -0
  191. package/src/cache/AsyncMemoryStorage.ts +158 -0
  192. package/src/cache/BrowserCacheManager.ts +2009 -0
  193. package/src/cache/BrowserStorage.ts +52 -0
  194. package/src/cache/CryptoKeyStore.ts +63 -0
  195. package/src/cache/DatabaseStorage.ts +287 -0
  196. package/src/cache/IAsyncMemoryStorage.ts +36 -0
  197. package/src/cache/ITokenCache.ts +21 -0
  198. package/src/cache/IWindowStorage.ts +36 -0
  199. package/src/cache/MemoryStorage.ts +42 -0
  200. package/src/cache/TokenCache.ts +484 -0
  201. package/src/config/Configuration.ts +383 -0
  202. package/src/controllers/ControllerFactory.ts +55 -0
  203. package/src/controllers/IController.ts +134 -0
  204. package/src/controllers/StandardController.ts +2170 -0
  205. package/src/crypto/BrowserCrypto.ts +151 -0
  206. package/src/crypto/CryptoOps.ts +235 -0
  207. package/src/crypto/PkceGenerator.ts +115 -0
  208. package/src/crypto/SignedHttpRequest.ts +76 -0
  209. package/src/encode/Base64Decode.ts +46 -0
  210. package/src/encode/Base64Encode.ts +52 -0
  211. package/src/error/BrowserAuthError.ts +352 -0
  212. package/src/error/BrowserAuthErrorCodes.ts +57 -0
  213. package/src/error/BrowserConfigurationAuthError.ts +64 -0
  214. package/src/error/BrowserConfigurationAuthErrorCodes.ts +9 -0
  215. package/src/error/NativeAuthError.ts +113 -0
  216. package/src/error/NativeAuthErrorCodes.ts +7 -0
  217. package/src/event/EventHandler.ts +177 -0
  218. package/src/event/EventMessage.ts +125 -0
  219. package/src/event/EventType.ts +33 -0
  220. package/src/index.ts +157 -0
  221. package/src/interaction_client/BaseInteractionClient.ts +307 -0
  222. package/src/interaction_client/HybridSpaAuthorizationCodeClient.ts +16 -0
  223. package/src/interaction_client/NativeInteractionClient.ts +925 -0
  224. package/src/interaction_client/PopupClient.ts +926 -0
  225. package/src/interaction_client/RedirectClient.ts +616 -0
  226. package/src/interaction_client/SilentAuthCodeClient.ts +165 -0
  227. package/src/interaction_client/SilentCacheClient.ts +125 -0
  228. package/src/interaction_client/SilentIframeClient.ts +301 -0
  229. package/src/interaction_client/SilentRefreshClient.ts +118 -0
  230. package/src/interaction_client/StandardInteractionClient.ts +450 -0
  231. package/src/interaction_handler/InteractionHandler.ts +251 -0
  232. package/src/interaction_handler/RedirectHandler.ts +229 -0
  233. package/src/interaction_handler/SilentHandler.ts +269 -0
  234. package/src/navigation/INavigationClient.ts +23 -0
  235. package/src/navigation/NavigationClient.ts +55 -0
  236. package/src/navigation/NavigationOptions.ts +18 -0
  237. package/src/network/FetchClient.ts +130 -0
  238. package/src/operatingcontext/BaseOperatingContext.ts +82 -0
  239. package/src/operatingcontext/StandardOperatingContext.ts +49 -0
  240. package/src/operatingcontext/TeamsAppOperatingContext.ts +48 -0
  241. package/src/packageMetadata.ts +3 -0
  242. package/src/request/AuthorizationCodeRequest.ts +19 -0
  243. package/src/request/AuthorizationUrlRequest.ts +17 -0
  244. package/src/request/ClearCacheRequest.ts +16 -0
  245. package/src/request/EndSessionPopupRequest.ts +26 -0
  246. package/src/request/EndSessionRequest.ts +23 -0
  247. package/src/request/PopupRequest.ts +51 -0
  248. package/src/request/PopupWindowAttributes.ts +22 -0
  249. package/src/request/RedirectRequest.ts +51 -0
  250. package/src/request/SilentRequest.ts +49 -0
  251. package/src/request/SsoSilentRequest.ts +44 -0
  252. package/src/response/AuthenticationResult.ts +13 -0
  253. package/src/telemetry/BrowserPerformanceClient.ts +226 -0
  254. package/src/telemetry/BrowserPerformanceMeasurement.ts +144 -0
  255. package/src/utils/BrowserConstants.ts +241 -0
  256. package/src/utils/BrowserProtocolUtils.ts +58 -0
  257. package/src/utils/BrowserStringUtils.ts +143 -0
  258. package/src/utils/BrowserUtils.ts +156 -0
  259. package/dist/crypto/GuidGenerator.d.ts +0 -13
  260. package/dist/crypto/GuidGenerator.d.ts.map +0 -1
  261. package/dist/crypto/GuidGenerator.mjs +0 -104
  262. package/dist/crypto/GuidGenerator.mjs.map +0 -1
  263. package/dist/crypto/ISubtleCrypto.d.ts +0 -10
  264. package/dist/crypto/ISubtleCrypto.d.ts.map +0 -1
  265. package/dist/crypto/ModernBrowserCrypto.d.ts +0 -10
  266. package/dist/crypto/ModernBrowserCrypto.d.ts.map +0 -1
  267. package/dist/crypto/ModernBrowserCrypto.mjs +0 -31
  268. package/dist/crypto/ModernBrowserCrypto.mjs.map +0 -1
  269. package/dist/internals.d.ts +0 -23
  270. package/dist/internals.d.ts.map +0 -1
  271. package/dist/internals.mjs +0 -28
  272. package/dist/internals.mjs.map +0 -1
  273. package/dist/network/XhrClient.d.ts +0 -41
  274. package/dist/network/XhrClient.d.ts.map +0 -1
  275. package/dist/network/XhrClient.mjs +0 -125
  276. package/dist/network/XhrClient.mjs.map +0 -1
  277. package/dist/utils/MathUtils.d.ts +0 -12
  278. package/dist/utils/MathUtils.d.ts.map +0 -1
  279. package/dist/utils/MathUtils.mjs +0 -26
  280. package/dist/utils/MathUtils.mjs.map +0 -1
@@ -0,0 +1,307 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ ICrypto,
8
+ INetworkModule,
9
+ Logger,
10
+ AccountInfo,
11
+ AccountEntity,
12
+ BaseAuthRequest,
13
+ AuthenticationScheme,
14
+ UrlString,
15
+ ServerTelemetryManager,
16
+ ServerTelemetryRequest,
17
+ createClientConfigurationError,
18
+ ClientConfigurationErrorCodes,
19
+ Authority,
20
+ AuthorityOptions,
21
+ AuthorityFactory,
22
+ IPerformanceClient,
23
+ PerformanceEvents,
24
+ StringUtils,
25
+ } from "@azure/msal-common";
26
+ import { BrowserConfiguration } from "../config/Configuration";
27
+ import { BrowserCacheManager } from "../cache/BrowserCacheManager";
28
+ import { EventHandler } from "../event/EventHandler";
29
+ import { EndSessionRequest } from "../request/EndSessionRequest";
30
+ import { RedirectRequest } from "../request/RedirectRequest";
31
+ import { PopupRequest } from "../request/PopupRequest";
32
+ import { SsoSilentRequest } from "../request/SsoSilentRequest";
33
+ import { version } from "../packageMetadata";
34
+ import { BrowserConstants } from "../utils/BrowserConstants";
35
+ import { BrowserUtils } from "../utils/BrowserUtils";
36
+ import { INavigationClient } from "../navigation/INavigationClient";
37
+ import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler";
38
+ import { AuthenticationResult } from "../response/AuthenticationResult";
39
+ import { ClearCacheRequest } from "../request/ClearCacheRequest";
40
+ import { createNewGuid } from "../crypto/BrowserCrypto";
41
+
42
+ export abstract class BaseInteractionClient {
43
+ protected config: BrowserConfiguration;
44
+ protected browserStorage: BrowserCacheManager;
45
+ protected browserCrypto: ICrypto;
46
+ protected networkClient: INetworkModule;
47
+ protected logger: Logger;
48
+ protected eventHandler: EventHandler;
49
+ protected navigationClient: INavigationClient;
50
+ protected nativeMessageHandler: NativeMessageHandler | undefined;
51
+ protected correlationId: string;
52
+ protected performanceClient: IPerformanceClient;
53
+
54
+ constructor(
55
+ config: BrowserConfiguration,
56
+ storageImpl: BrowserCacheManager,
57
+ browserCrypto: ICrypto,
58
+ logger: Logger,
59
+ eventHandler: EventHandler,
60
+ navigationClient: INavigationClient,
61
+ performanceClient: IPerformanceClient,
62
+ nativeMessageHandler?: NativeMessageHandler,
63
+ correlationId?: string
64
+ ) {
65
+ this.config = config;
66
+ this.browserStorage = storageImpl;
67
+ this.browserCrypto = browserCrypto;
68
+ this.networkClient = this.config.system.networkClient;
69
+ this.eventHandler = eventHandler;
70
+ this.navigationClient = navigationClient;
71
+ this.nativeMessageHandler = nativeMessageHandler;
72
+ this.correlationId = correlationId || createNewGuid();
73
+ this.logger = logger.clone(
74
+ BrowserConstants.MSAL_SKU,
75
+ version,
76
+ this.correlationId
77
+ );
78
+ this.performanceClient = performanceClient;
79
+ }
80
+
81
+ abstract acquireToken(
82
+ request: RedirectRequest | PopupRequest | SsoSilentRequest
83
+ ): Promise<AuthenticationResult | void>;
84
+
85
+ abstract logout(
86
+ request: EndSessionRequest | ClearCacheRequest | undefined
87
+ ): Promise<void>;
88
+
89
+ protected async clearCacheOnLogout(
90
+ account?: AccountInfo | null
91
+ ): Promise<void> {
92
+ if (account) {
93
+ if (
94
+ AccountEntity.accountInfoIsEqual(
95
+ account,
96
+ this.browserStorage.getActiveAccount(),
97
+ false
98
+ )
99
+ ) {
100
+ this.logger.verbose("Setting active account to null");
101
+ this.browserStorage.setActiveAccount(null);
102
+ }
103
+ // Clear given account.
104
+ try {
105
+ await this.browserStorage.removeAccount(
106
+ AccountEntity.generateAccountCacheKey(account)
107
+ );
108
+ this.logger.verbose(
109
+ "Cleared cache items belonging to the account provided in the logout request."
110
+ );
111
+ } catch (error) {
112
+ this.logger.error(
113
+ "Account provided in logout request was not found. Local cache unchanged."
114
+ );
115
+ }
116
+ } else {
117
+ try {
118
+ this.logger.verbose(
119
+ "No account provided in logout request, clearing all cache items.",
120
+ this.correlationId
121
+ );
122
+ // Clear all accounts and tokens
123
+ await this.browserStorage.clear();
124
+ // Clear any stray keys from IndexedDB
125
+ await this.browserCrypto.clearKeystore();
126
+ } catch (e) {
127
+ this.logger.error(
128
+ "Attempted to clear all MSAL cache items and failed. Local cache unchanged."
129
+ );
130
+ }
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Initializer function for all request APIs
136
+ * @param request
137
+ */
138
+ protected async initializeBaseRequest(
139
+ request: Partial<BaseAuthRequest>,
140
+ account?: AccountInfo
141
+ ): Promise<BaseAuthRequest> {
142
+ this.performanceClient.addQueueMeasurement(
143
+ PerformanceEvents.InitializeBaseRequest,
144
+ request.correlationId
145
+ );
146
+ const authority = request.authority || this.config.auth.authority;
147
+
148
+ if (account) {
149
+ await this.validateRequestAuthority(authority, account);
150
+ }
151
+
152
+ const scopes = [...((request && request.scopes) || [])];
153
+
154
+ const validatedRequest: BaseAuthRequest = {
155
+ ...request,
156
+ correlationId: this.correlationId,
157
+ authority,
158
+ scopes,
159
+ };
160
+
161
+ // Set authenticationScheme to BEARER if not explicitly set in the request
162
+ if (!validatedRequest.authenticationScheme) {
163
+ validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;
164
+ this.logger.verbose(
165
+ 'Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request'
166
+ );
167
+ } else {
168
+ if (
169
+ validatedRequest.authenticationScheme ===
170
+ AuthenticationScheme.SSH
171
+ ) {
172
+ if (!request.sshJwk) {
173
+ throw createClientConfigurationError(
174
+ ClientConfigurationErrorCodes.missingSshJwk
175
+ );
176
+ }
177
+ if (!request.sshKid) {
178
+ throw createClientConfigurationError(
179
+ ClientConfigurationErrorCodes.missingSshKid
180
+ );
181
+ }
182
+ }
183
+ this.logger.verbose(
184
+ `Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request`
185
+ );
186
+ }
187
+
188
+ // Set requested claims hash if claims-based caching is enabled and claims were requested
189
+ if (
190
+ this.config.cache.claimsBasedCachingEnabled &&
191
+ request.claims &&
192
+ // Checks for empty stringified object "{}" which doesn't qualify as requested claims
193
+ !StringUtils.isEmptyObj(request.claims)
194
+ ) {
195
+ validatedRequest.requestedClaimsHash =
196
+ await this.browserCrypto.hashString(request.claims);
197
+ }
198
+
199
+ return validatedRequest;
200
+ }
201
+
202
+ /**
203
+ *
204
+ * Use to get the redirect uri configured in MSAL or null.
205
+ * @param requestRedirectUri
206
+ * @returns Redirect URL
207
+ *
208
+ */
209
+ getRedirectUri(requestRedirectUri?: string): string {
210
+ this.logger.verbose("getRedirectUri called");
211
+ const redirectUri =
212
+ requestRedirectUri ||
213
+ this.config.auth.redirectUri ||
214
+ BrowserUtils.getCurrentUri();
215
+ return UrlString.getAbsoluteUrl(
216
+ redirectUri,
217
+ BrowserUtils.getCurrentUri()
218
+ );
219
+ }
220
+
221
+ /*
222
+ * If authority provided in the request does not match environment/authority specified
223
+ * in the account or MSAL config, we throw an error.
224
+ */
225
+ async validateRequestAuthority(
226
+ authority: string,
227
+ account: AccountInfo
228
+ ): Promise<void> {
229
+ const discoveredAuthority = await this.getDiscoveredAuthority(
230
+ authority
231
+ );
232
+
233
+ if (!discoveredAuthority.isAlias(account.environment)) {
234
+ throw createClientConfigurationError(
235
+ ClientConfigurationErrorCodes.authorityMismatch
236
+ );
237
+ }
238
+ }
239
+
240
+ /**
241
+ *
242
+ * @param apiId
243
+ * @param correlationId
244
+ * @param forceRefresh
245
+ */
246
+ protected initializeServerTelemetryManager(
247
+ apiId: number,
248
+ forceRefresh?: boolean
249
+ ): ServerTelemetryManager {
250
+ this.logger.verbose("initializeServerTelemetryManager called");
251
+ const telemetryPayload: ServerTelemetryRequest = {
252
+ clientId: this.config.auth.clientId,
253
+ correlationId: this.correlationId,
254
+ apiId: apiId,
255
+ forceRefresh: forceRefresh || false,
256
+ wrapperSKU: this.browserStorage.getWrapperMetadata()[0],
257
+ wrapperVer: this.browserStorage.getWrapperMetadata()[1],
258
+ };
259
+
260
+ return new ServerTelemetryManager(
261
+ telemetryPayload,
262
+ this.browserStorage
263
+ );
264
+ }
265
+
266
+ /**
267
+ * Used to get a discovered version of the default authority.
268
+ * @param requestAuthority
269
+ * @param requestCorrelationId
270
+ */
271
+ protected async getDiscoveredAuthority(
272
+ requestAuthority?: string
273
+ ): Promise<Authority> {
274
+ this.logger.verbose("getDiscoveredAuthority called");
275
+ const authorityOptions: AuthorityOptions = {
276
+ protocolMode: this.config.auth.protocolMode,
277
+ OIDCOptions: this.config.auth.OIDCOptions,
278
+ knownAuthorities: this.config.auth.knownAuthorities,
279
+ cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
280
+ authorityMetadata: this.config.auth.authorityMetadata,
281
+ };
282
+
283
+ if (requestAuthority) {
284
+ this.logger.verbose(
285
+ "Creating discovered authority with request authority"
286
+ );
287
+ return await AuthorityFactory.createDiscoveredInstance(
288
+ requestAuthority,
289
+ this.config.system.networkClient,
290
+ this.browserStorage,
291
+ authorityOptions,
292
+ this.logger
293
+ );
294
+ }
295
+
296
+ this.logger.verbose(
297
+ "Creating discovered authority with configured authority"
298
+ );
299
+ return await AuthorityFactory.createDiscoveredInstance(
300
+ this.config.auth.authority,
301
+ this.config.system.networkClient,
302
+ this.browserStorage,
303
+ authorityOptions,
304
+ this.logger
305
+ );
306
+ }
307
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ AuthorizationCodeClient,
8
+ ClientConfiguration,
9
+ } from "@azure/msal-common";
10
+
11
+ export class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {
12
+ constructor(config: ClientConfiguration) {
13
+ super(config);
14
+ this.includeRedirectUri = false;
15
+ }
16
+ }