@azure/msal-browser 3.11.1 → 3.14.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 (110) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +2 -1
  2. package/dist/app/IPublicClientApplication.d.ts.map +1 -1
  3. package/dist/app/IPublicClientApplication.mjs +4 -1
  4. package/dist/app/IPublicClientApplication.mjs.map +1 -1
  5. package/dist/app/PublicClientApplication.mjs +1 -1
  6. package/dist/app/PublicClientNext.mjs +1 -1
  7. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +1 -1
  8. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  9. package/dist/cache/AsyncMemoryStorage.mjs +1 -1
  10. package/dist/cache/BrowserCacheManager.d.ts +10 -2
  11. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  12. package/dist/cache/BrowserCacheManager.mjs +31 -3
  13. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  14. package/dist/cache/BrowserStorage.mjs +1 -1
  15. package/dist/cache/DatabaseStorage.mjs +1 -1
  16. package/dist/cache/MemoryStorage.mjs +1 -1
  17. package/dist/cache/TokenCache.mjs +1 -1
  18. package/dist/config/Configuration.mjs +1 -1
  19. package/dist/controllers/ControllerFactory.d.ts.map +1 -1
  20. package/dist/controllers/ControllerFactory.mjs +2 -3
  21. package/dist/controllers/ControllerFactory.mjs.map +1 -1
  22. package/dist/controllers/NestedAppAuthController.d.ts.map +1 -1
  23. package/dist/controllers/NestedAppAuthController.mjs +3 -8
  24. package/dist/controllers/NestedAppAuthController.mjs.map +1 -1
  25. package/dist/controllers/StandardController.d.ts +14 -0
  26. package/dist/controllers/StandardController.d.ts.map +1 -1
  27. package/dist/controllers/StandardController.mjs +213 -117
  28. package/dist/controllers/StandardController.mjs.map +1 -1
  29. package/dist/controllers/UnknownOperatingContextController.d.ts.map +1 -1
  30. package/dist/controllers/UnknownOperatingContextController.mjs +2 -2
  31. package/dist/controllers/UnknownOperatingContextController.mjs.map +1 -1
  32. package/dist/crypto/BrowserCrypto.mjs +1 -1
  33. package/dist/crypto/CryptoOps.mjs +1 -1
  34. package/dist/crypto/PkceGenerator.mjs +1 -1
  35. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  36. package/dist/encode/Base64Decode.mjs +1 -1
  37. package/dist/encode/Base64Encode.mjs +1 -1
  38. package/dist/error/BrowserAuthError.mjs +1 -1
  39. package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
  40. package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
  41. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  42. package/dist/error/NativeAuthError.mjs +1 -1
  43. package/dist/error/NativeAuthErrorCodes.mjs +1 -1
  44. package/dist/error/NestedAppAuthError.mjs +1 -1
  45. package/dist/event/EventHandler.mjs +1 -1
  46. package/dist/event/EventMessage.mjs +1 -1
  47. package/dist/event/EventType.mjs +1 -1
  48. package/dist/index.mjs +1 -1
  49. package/dist/interaction_client/BaseInteractionClient.mjs +1 -1
  50. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  51. package/dist/interaction_client/NativeInteractionClient.mjs +1 -1
  52. package/dist/interaction_client/PopupClient.mjs +1 -1
  53. package/dist/interaction_client/RedirectClient.d.ts +4 -5
  54. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  55. package/dist/interaction_client/RedirectClient.mjs +5 -8
  56. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  57. package/dist/interaction_client/SilentAuthCodeClient.mjs +1 -1
  58. package/dist/interaction_client/SilentCacheClient.mjs +1 -1
  59. package/dist/interaction_client/SilentIframeClient.mjs +1 -1
  60. package/dist/interaction_client/SilentRefreshClient.mjs +1 -1
  61. package/dist/interaction_client/StandardInteractionClient.mjs +1 -1
  62. package/dist/interaction_handler/InteractionHandler.mjs +1 -1
  63. package/dist/interaction_handler/RedirectHandler.mjs +1 -1
  64. package/dist/interaction_handler/SilentHandler.mjs +2 -1
  65. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  66. package/dist/naa/BridgeError.mjs +1 -1
  67. package/dist/naa/BridgeProxy.d.ts +0 -2
  68. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  69. package/dist/naa/BridgeProxy.mjs +4 -10
  70. package/dist/naa/BridgeProxy.mjs.map +1 -1
  71. package/dist/naa/BridgeStatusCode.mjs +1 -1
  72. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
  73. package/dist/navigation/NavigationClient.mjs +1 -1
  74. package/dist/network/FetchClient.mjs +1 -1
  75. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  76. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  77. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -1
  78. package/dist/operatingcontext/TeamsAppOperatingContext.mjs +10 -11
  79. package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
  80. package/dist/operatingcontext/UnknownOperatingContext.mjs +1 -1
  81. package/dist/packageMetadata.d.ts +1 -1
  82. package/dist/packageMetadata.mjs +2 -2
  83. package/dist/request/RequestHelpers.mjs +1 -1
  84. package/dist/response/ResponseHandler.mjs +1 -1
  85. package/dist/telemetry/BrowserPerformanceClient.mjs +1 -1
  86. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  87. package/dist/utils/BrowserConstants.mjs +1 -1
  88. package/dist/utils/BrowserProtocolUtils.mjs +1 -1
  89. package/dist/utils/BrowserUtils.d.ts +3 -0
  90. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  91. package/dist/utils/BrowserUtils.mjs +2 -1
  92. package/dist/utils/BrowserUtils.mjs.map +1 -1
  93. package/lib/msal-browser.cjs +486 -257
  94. package/lib/msal-browser.cjs.map +1 -1
  95. package/lib/msal-browser.js +486 -257
  96. package/lib/msal-browser.js.map +1 -1
  97. package/lib/msal-browser.min.js +68 -66
  98. package/package.json +4 -4
  99. package/src/app/IPublicClientApplication.ts +5 -0
  100. package/src/cache/BrowserCacheManager.ts +49 -1
  101. package/src/controllers/ControllerFactory.ts +1 -4
  102. package/src/controllers/NestedAppAuthController.ts +7 -6
  103. package/src/controllers/StandardController.ts +380 -263
  104. package/src/controllers/UnknownOperatingContextController.ts +3 -1
  105. package/src/interaction_client/RedirectClient.ts +6 -12
  106. package/src/interaction_handler/SilentHandler.ts +1 -0
  107. package/src/naa/BridgeProxy.ts +3 -12
  108. package/src/operatingcontext/TeamsAppOperatingContext.ts +14 -8
  109. package/src/packageMetadata.ts +1 -1
  110. package/src/utils/BrowserUtils.ts +4 -1
@@ -106,7 +106,9 @@ export class UnknownOperatingContextController implements IController {
106
106
  this.config.auth.clientId,
107
107
  this.config.cache,
108
108
  this.browserCrypto,
109
- this.logger
109
+ this.logger,
110
+ undefined,
111
+ this.performanceClient
110
112
  )
111
113
  : DEFAULT_BROWSER_CACHE_MANAGER(
112
114
  this.config.auth.clientId,
@@ -21,6 +21,7 @@ import {
21
21
  invokeAsync,
22
22
  ServerResponseType,
23
23
  UrlUtils,
24
+ InProgressPerformanceEvent,
24
25
  } from "@azure/msal-common";
25
26
  import { StandardInteractionClient } from "./StandardInteractionClient";
26
27
  import {
@@ -190,14 +191,12 @@ export class RedirectClient extends StandardInteractionClient {
190
191
  * Checks if navigateToLoginRequestUrl is set, and:
191
192
  * - if true, performs logic to cache and navigate
192
193
  * - if false, handles hash string and parses response
193
- * @param hash {string?} url hash
194
- * @param performanceClient {IPerformanceClient?}
195
- * @param correlationId {string?} correlation identifier
194
+ * @param hash {string} url hash
195
+ * @param parentMeasurement {InProgressPerformanceEvent} parent measurement
196
196
  */
197
197
  async handleRedirectPromise(
198
- hash?: string,
199
- performanceClient?: IPerformanceClient,
200
- correlationId?: string
198
+ hash: string = "",
199
+ parentMeasurement: InProgressPerformanceEvent
201
200
  ): Promise<AuthenticationResult | null> {
202
201
  const serverTelemetryManager = this.initializeServerTelemetryManager(
203
202
  ApiId.handleRedirectPromise
@@ -220,12 +219,7 @@ export class RedirectClient extends StandardInteractionClient {
220
219
  this.browserStorage.cleanRequestByInteractionType(
221
220
  InteractionType.Redirect
222
221
  );
223
- if (performanceClient && correlationId) {
224
- performanceClient?.addFields(
225
- { errorCode: "no_server_response" },
226
- correlationId
227
- );
228
- }
222
+ parentMeasurement.event.errorCode = "no_server_response";
229
223
  return null;
230
224
  }
231
225
 
@@ -195,6 +195,7 @@ function loadFrameSync(urlNavigate: string): HTMLIFrameElement {
195
195
  function createHiddenIframe(): HTMLIFrameElement {
196
196
  const authFrame = document.createElement("iframe");
197
197
 
198
+ authFrame.className = "msalSilentIframe";
198
199
  authFrame.style.visibility = "hidden";
199
200
  authFrame.style.position = "absolute";
200
201
  authFrame.style.width = authFrame.style.height = "0";
@@ -15,6 +15,7 @@ import { BridgeStatusCode } from "./BridgeStatusCode";
15
15
  import { IBridgeProxy } from "./IBridgeProxy";
16
16
  import { InitContext } from "./InitContext";
17
17
  import { TokenRequest } from "./TokenRequest";
18
+ import * as BrowserCrypto from "../crypto/BrowserCrypto";
18
19
 
19
20
  declare global {
20
21
  interface Window {
@@ -29,7 +30,6 @@ declare global {
29
30
  */
30
31
  export class BridgeProxy implements IBridgeProxy {
31
32
  static bridgeRequests: BridgeRequest[] = [];
32
- static crypto: Crypto;
33
33
  sdkName: string;
34
34
  sdkVersion: string;
35
35
  capabilities?: BridgeCapabilities;
@@ -47,13 +47,8 @@ export class BridgeProxy implements IBridgeProxy {
47
47
  if (window.nestedAppAuthBridge === undefined) {
48
48
  throw new Error("window.nestedAppAuthBridge is undefined");
49
49
  }
50
- if (window.crypto === undefined) {
51
- throw new Error("window.crypto is undefined");
52
- }
53
50
 
54
51
  try {
55
- BridgeProxy.crypto = window.crypto;
56
-
57
52
  window.nestedAppAuthBridge.addEventListener(
58
53
  "message",
59
54
  (response: AuthBridgeResponse) => {
@@ -84,7 +79,7 @@ export class BridgeProxy implements IBridgeProxy {
84
79
  const message: BridgeRequestEnvelope = {
85
80
  messageType: "NestedAppAuthRequest",
86
81
  method: "GetInitContext",
87
- requestId: BridgeProxy.getRandomId(),
82
+ requestId: BrowserCrypto.createNewGuid(),
88
83
  };
89
84
  const request: BridgeRequest = {
90
85
  requestId: message.requestId,
@@ -108,10 +103,6 @@ export class BridgeProxy implements IBridgeProxy {
108
103
  }
109
104
  }
110
105
 
111
- public static getRandomId(): string {
112
- return BridgeProxy.crypto.randomUUID();
113
- }
114
-
115
106
  /**
116
107
  * getTokenInteractive - Attempts to get a token interactively from the bridge
117
108
  * @param request A token request
@@ -164,7 +155,7 @@ export class BridgeProxy implements IBridgeProxy {
164
155
  const message: BridgeRequestEnvelope = {
165
156
  messageType: "NestedAppAuthRequest",
166
157
  method: method,
167
- requestId: BridgeProxy.getRandomId(),
158
+ requestId: BrowserCrypto.createNewGuid(),
168
159
  ...requestParams,
169
160
  };
170
161
 
@@ -61,6 +61,11 @@ export class TeamsAppOperatingContext extends BaseOperatingContext {
61
61
  * TODO: Add implementation to check for presence of inject Nested App Auth Bridge JavaScript interface
62
62
  *
63
63
  */
64
+
65
+ if (!this.getConfig().auth.supportsNestedAppAuth) {
66
+ return false;
67
+ }
68
+
64
69
  try {
65
70
  if (typeof window !== "undefined") {
66
71
  const bridgeProxy: IBridgeProxy = await BridgeProxy.create();
@@ -74,18 +79,19 @@ export class TeamsAppOperatingContext extends BaseOperatingContext {
74
79
  this.activeAccount =
75
80
  await bridgeProxy.getActiveAccount();
76
81
  }
77
- } catch (e) {
78
- this.activeAccount = undefined;
82
+ } catch {
83
+ // Ignore errors
79
84
  }
80
85
  this.bridgeProxy = bridgeProxy;
81
86
  this.available = bridgeProxy !== undefined;
82
- } else {
83
- this.available = false;
84
87
  }
85
- } catch (e) {
86
- this.available = false;
87
- } finally {
88
- return this.available;
88
+ } catch (ex) {
89
+ this.logger.infoPii(
90
+ `Could not initialize Nested App Auth bridge (${ex})`
91
+ );
89
92
  }
93
+
94
+ this.logger.info(`Nested App Auth Bridge available: ${this.available}`);
95
+ return this.available;
90
96
  }
91
97
  }
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-browser";
3
- export const version = "3.11.1";
3
+ export const version = "3.14.0";
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { UrlString } from "@azure/msal-common";
6
+ import { UrlString, invoke, invokeAsync } from "@azure/msal-common";
7
7
  import {
8
8
  createBrowserAuthError,
9
9
  BrowserAuthErrorCodes,
@@ -206,3 +206,6 @@ export function preconnect(authority: string): void {
206
206
  export function createGuid(): string {
207
207
  return BrowserCrypto.createNewGuid();
208
208
  }
209
+
210
+ export { invoke };
211
+ export { invokeAsync };