@azure/msal-browser 5.6.1 → 5.6.3

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 (396) hide show
  1. package/dist/app/IPublicClientApplication.mjs +1 -1
  2. package/dist/app/PublicClientApplication.mjs +1 -1
  3. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  4. package/dist/broker/nativeBroker/PlatformAuthDOMHandler.mjs +1 -1
  5. package/dist/broker/nativeBroker/PlatformAuthExtensionHandler.mjs +1 -1
  6. package/dist/broker/nativeBroker/PlatformAuthProvider.mjs +1 -1
  7. package/dist/cache/AccountManager.mjs +1 -1
  8. package/dist/cache/AsyncMemoryStorage.mjs +1 -1
  9. package/dist/cache/BrowserCacheManager.mjs +1 -1
  10. package/dist/cache/CacheHelpers.mjs +1 -1
  11. package/dist/cache/CacheKeys.mjs +1 -1
  12. package/dist/cache/CookieStorage.mjs +1 -1
  13. package/dist/cache/DatabaseStorage.mjs +1 -1
  14. package/dist/cache/EncryptedData.mjs +1 -1
  15. package/dist/cache/LocalStorage.mjs +1 -1
  16. package/dist/cache/MemoryStorage.mjs +1 -1
  17. package/dist/cache/SessionStorage.mjs +1 -1
  18. package/dist/cache/TokenCache.d.ts.map +1 -1
  19. package/dist/cache/TokenCache.mjs +9 -9
  20. package/dist/cache/TokenCache.mjs.map +1 -1
  21. package/dist/config/Configuration.d.ts +13 -1
  22. package/dist/config/Configuration.d.ts.map +1 -1
  23. package/dist/config/Configuration.mjs +9 -2
  24. package/dist/config/Configuration.mjs.map +1 -1
  25. package/dist/controllers/NestedAppAuthController.mjs +1 -1
  26. package/dist/controllers/StandardController.d.ts +4 -2
  27. package/dist/controllers/StandardController.d.ts.map +1 -1
  28. package/dist/controllers/StandardController.mjs +56 -19
  29. package/dist/controllers/StandardController.mjs.map +1 -1
  30. package/dist/crypto/BrowserCrypto.mjs +1 -1
  31. package/dist/crypto/CryptoOps.mjs +1 -1
  32. package/dist/crypto/PkceGenerator.mjs +1 -1
  33. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  34. package/dist/custom-auth-path/app/PublicClientApplication.mjs +1 -1
  35. package/dist/custom-auth-path/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  36. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthDOMHandler.mjs +1 -1
  37. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthExtensionHandler.mjs +1 -1
  38. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthProvider.mjs +1 -1
  39. package/dist/custom-auth-path/cache/AccountManager.mjs +1 -1
  40. package/dist/custom-auth-path/cache/AsyncMemoryStorage.mjs +1 -1
  41. package/dist/custom-auth-path/cache/BrowserCacheManager.mjs +1 -1
  42. package/dist/custom-auth-path/cache/CacheHelpers.mjs +1 -1
  43. package/dist/custom-auth-path/cache/CacheKeys.mjs +1 -1
  44. package/dist/custom-auth-path/cache/CookieStorage.mjs +1 -1
  45. package/dist/custom-auth-path/cache/DatabaseStorage.mjs +1 -1
  46. package/dist/custom-auth-path/cache/EncryptedData.mjs +1 -1
  47. package/dist/custom-auth-path/cache/LocalStorage.mjs +1 -1
  48. package/dist/custom-auth-path/cache/MemoryStorage.mjs +1 -1
  49. package/dist/custom-auth-path/cache/SessionStorage.mjs +1 -1
  50. package/dist/custom-auth-path/cache/TokenCache.d.ts.map +1 -1
  51. package/dist/custom-auth-path/config/Configuration.d.ts +13 -1
  52. package/dist/custom-auth-path/config/Configuration.d.ts.map +1 -1
  53. package/dist/custom-auth-path/config/Configuration.mjs +9 -2
  54. package/dist/custom-auth-path/config/Configuration.mjs.map +1 -1
  55. package/dist/custom-auth-path/controllers/StandardController.d.ts +4 -2
  56. package/dist/custom-auth-path/controllers/StandardController.d.ts.map +1 -1
  57. package/dist/custom-auth-path/controllers/StandardController.mjs +56 -19
  58. package/dist/custom-auth-path/controllers/StandardController.mjs.map +1 -1
  59. package/dist/custom-auth-path/crypto/BrowserCrypto.mjs +1 -1
  60. package/dist/custom-auth-path/crypto/CryptoOps.mjs +1 -1
  61. package/dist/custom-auth-path/crypto/PkceGenerator.mjs +1 -1
  62. package/dist/custom-auth-path/custom_auth/CustomAuthConstants.d.ts +1 -1
  63. package/dist/custom-auth-path/custom_auth/CustomAuthConstants.mjs +1 -1
  64. package/dist/custom-auth-path/custom_auth/CustomAuthPublicClientApplication.mjs +1 -1
  65. package/dist/custom-auth-path/custom_auth/controller/CustomAuthStandardController.mjs +1 -1
  66. package/dist/custom-auth-path/custom_auth/core/CustomAuthAuthority.mjs +1 -1
  67. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowErrorBase.mjs +1 -1
  68. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowResultBase.mjs +1 -1
  69. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowState.mjs +1 -1
  70. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowStateTypes.mjs +1 -1
  71. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/error_type/AuthMethodRegistrationError.mjs +1 -1
  72. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/result/AuthMethodRegistrationChallengeMethodResult.mjs +1 -1
  73. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/result/AuthMethodRegistrationSubmitChallengeResult.mjs +1 -1
  74. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationCompletedState.mjs +1 -1
  75. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationFailedState.mjs +1 -1
  76. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationState.mjs +1 -1
  77. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/error_type/MfaError.mjs +1 -1
  78. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/result/MfaRequestChallengeResult.mjs +1 -1
  79. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/result/MfaSubmitChallengeResult.mjs +1 -1
  80. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaCompletedState.mjs +1 -1
  81. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaFailedState.mjs +1 -1
  82. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaState.mjs +1 -1
  83. package/dist/custom-auth-path/custom_auth/core/error/CustomAuthApiError.mjs +1 -1
  84. package/dist/custom-auth-path/custom_auth/core/error/CustomAuthError.mjs +1 -1
  85. package/dist/custom-auth-path/custom_auth/core/error/HttpError.mjs +1 -1
  86. package/dist/custom-auth-path/custom_auth/core/error/HttpErrorCodes.mjs +1 -1
  87. package/dist/custom-auth-path/custom_auth/core/error/InvalidArgumentError.mjs +1 -1
  88. package/dist/custom-auth-path/custom_auth/core/error/InvalidConfigurationError.mjs +1 -1
  89. package/dist/custom-auth-path/custom_auth/core/error/InvalidConfigurationErrorCodes.mjs +1 -1
  90. package/dist/custom-auth-path/custom_auth/core/error/MethodNotImplementedError.mjs +1 -1
  91. package/dist/custom-auth-path/custom_auth/core/error/MsalCustomAuthError.mjs +1 -1
  92. package/dist/custom-auth-path/custom_auth/core/error/NoCachedAccountFoundError.mjs +1 -1
  93. package/dist/custom-auth-path/custom_auth/core/error/ParsedUrlError.mjs +1 -1
  94. package/dist/custom-auth-path/custom_auth/core/error/ParsedUrlErrorCodes.mjs +1 -1
  95. package/dist/custom-auth-path/custom_auth/core/error/UnexpectedError.mjs +1 -1
  96. package/dist/custom-auth-path/custom_auth/core/error/UnsupportedEnvironmentError.mjs +1 -1
  97. package/dist/custom-auth-path/custom_auth/core/error/UserAccountAttributeError.mjs +1 -1
  98. package/dist/custom-auth-path/custom_auth/core/error/UserAlreadySignedInError.mjs +1 -1
  99. package/dist/custom-auth-path/custom_auth/core/interaction_client/CustomAuthInteractionClientBase.mjs +1 -1
  100. package/dist/custom-auth-path/custom_auth/core/interaction_client/CustomAuthInterationClientFactory.mjs +1 -1
  101. package/dist/custom-auth-path/custom_auth/core/interaction_client/jit/JitClient.mjs +1 -1
  102. package/dist/custom-auth-path/custom_auth/core/interaction_client/jit/result/JitActionResult.mjs +1 -1
  103. package/dist/custom-auth-path/custom_auth/core/interaction_client/mfa/MfaClient.mjs +1 -1
  104. package/dist/custom-auth-path/custom_auth/core/interaction_client/mfa/result/MfaActionResult.mjs +1 -1
  105. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/BaseApiClient.mjs +1 -1
  106. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/CustomAuthApiClient.mjs +1 -1
  107. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/CustomAuthApiEndpoint.mjs +1 -1
  108. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/RegisterApiClient.mjs +1 -1
  109. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/ResetPasswordApiClient.mjs +1 -1
  110. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/SignInApiClient.mjs +1 -1
  111. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/SignupApiClient.mjs +1 -1
  112. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/types/ApiErrorCodes.mjs +1 -1
  113. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/types/ApiSuberrors.mjs +1 -1
  114. package/dist/custom-auth-path/custom_auth/core/network_client/http_client/FetchHttpClient.mjs +1 -1
  115. package/dist/custom-auth-path/custom_auth/core/network_client/http_client/IHttpClient.mjs +1 -1
  116. package/dist/custom-auth-path/custom_auth/core/telemetry/PublicApiId.mjs +1 -1
  117. package/dist/custom-auth-path/custom_auth/core/utils/ArgumentValidator.mjs +1 -1
  118. package/dist/custom-auth-path/custom_auth/core/utils/UrlUtils.mjs +1 -1
  119. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/CustomAuthAccountData.mjs +1 -1
  120. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/error_type/GetAccountError.mjs +1 -1
  121. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/GetAccessTokenResult.mjs +1 -1
  122. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/GetAccountResult.mjs +1 -1
  123. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/SignOutResult.mjs +1 -1
  124. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/GetAccessTokenState.mjs +1 -1
  125. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/GetAccountState.mjs +1 -1
  126. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/SignOutState.mjs +1 -1
  127. package/dist/custom-auth-path/custom_auth/get_account/interaction_client/CustomAuthSilentCacheClient.mjs +1 -1
  128. package/dist/custom-auth-path/custom_auth/index.mjs +1 -1
  129. package/dist/custom-auth-path/custom_auth/operating_context/CustomAuthOperatingContext.mjs +1 -1
  130. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/error_type/ResetPasswordError.mjs +1 -1
  131. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordResendCodeResult.mjs +1 -1
  132. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordStartResult.mjs +1 -1
  133. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordSubmitCodeResult.mjs +1 -1
  134. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordSubmitPasswordResult.mjs +1 -1
  135. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordCodeRequiredState.mjs +1 -1
  136. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordCompletedState.mjs +1 -1
  137. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordFailedState.mjs +1 -1
  138. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordPasswordRequiredState.mjs +1 -1
  139. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordState.mjs +1 -1
  140. package/dist/custom-auth-path/custom_auth/reset_password/interaction_client/ResetPasswordClient.mjs +1 -1
  141. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/SignInScenario.mjs +1 -1
  142. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/error_type/SignInError.mjs +1 -1
  143. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInResendCodeResult.mjs +1 -1
  144. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInResult.mjs +1 -1
  145. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInSubmitCodeResult.mjs +1 -1
  146. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInSubmitPasswordResult.mjs +1 -1
  147. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInCodeRequiredState.mjs +1 -1
  148. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInCompletedState.mjs +1 -1
  149. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInContinuationState.mjs +1 -1
  150. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInFailedState.mjs +1 -1
  151. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInPasswordRequiredState.mjs +1 -1
  152. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInState.mjs +1 -1
  153. package/dist/custom-auth-path/custom_auth/sign_in/interaction_client/SignInClient.mjs +1 -1
  154. package/dist/custom-auth-path/custom_auth/sign_in/interaction_client/result/SignInActionResult.mjs +1 -1
  155. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/error_type/SignUpError.mjs +1 -1
  156. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpResendCodeResult.mjs +1 -1
  157. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpResult.mjs +1 -1
  158. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitAttributesResult.mjs +1 -1
  159. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitCodeResult.mjs +1 -1
  160. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitPasswordResult.mjs +1 -1
  161. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpAttributesRequiredState.mjs +1 -1
  162. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpCodeRequiredState.mjs +1 -1
  163. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpCompletedState.mjs +1 -1
  164. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpFailedState.mjs +1 -1
  165. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpPasswordRequiredState.mjs +1 -1
  166. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpState.mjs +1 -1
  167. package/dist/custom-auth-path/custom_auth/sign_up/interaction_client/SignUpClient.mjs +1 -1
  168. package/dist/custom-auth-path/custom_auth/sign_up/interaction_client/result/SignUpActionResult.mjs +1 -1
  169. package/dist/custom-auth-path/encode/Base64Decode.mjs +1 -1
  170. package/dist/custom-auth-path/encode/Base64Encode.mjs +1 -1
  171. package/dist/custom-auth-path/error/BrowserAuthError.mjs +1 -1
  172. package/dist/custom-auth-path/error/BrowserAuthErrorCodes.mjs +1 -1
  173. package/dist/custom-auth-path/error/BrowserConfigurationAuthError.mjs +1 -1
  174. package/dist/custom-auth-path/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  175. package/dist/custom-auth-path/error/NativeAuthError.mjs +1 -1
  176. package/dist/custom-auth-path/error/NativeAuthErrorCodes.mjs +1 -1
  177. package/dist/custom-auth-path/event/EventHandler.mjs +1 -1
  178. package/dist/custom-auth-path/event/EventType.mjs +1 -1
  179. package/dist/custom-auth-path/index.d.ts +1 -1
  180. package/dist/custom-auth-path/index.d.ts.map +1 -1
  181. package/dist/custom-auth-path/interaction_client/BaseInteractionClient.mjs +1 -1
  182. package/dist/custom-auth-path/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  183. package/dist/custom-auth-path/interaction_client/PlatformAuthInteractionClient.d.ts +10 -10
  184. package/dist/custom-auth-path/interaction_client/PlatformAuthInteractionClient.d.ts.map +1 -1
  185. package/dist/custom-auth-path/interaction_client/PlatformAuthInteractionClient.mjs +8 -8
  186. package/dist/custom-auth-path/interaction_client/PlatformAuthInteractionClient.mjs.map +1 -1
  187. package/dist/custom-auth-path/interaction_client/PopupClient.mjs +1 -1
  188. package/dist/custom-auth-path/interaction_client/RedirectClient.mjs +1 -1
  189. package/dist/custom-auth-path/interaction_client/SilentAuthCodeClient.mjs +1 -1
  190. package/dist/custom-auth-path/interaction_client/SilentCacheClient.mjs +1 -1
  191. package/dist/custom-auth-path/interaction_client/SilentIframeClient.d.ts.map +1 -1
  192. package/dist/custom-auth-path/interaction_client/SilentIframeClient.mjs +21 -8
  193. package/dist/custom-auth-path/interaction_client/SilentIframeClient.mjs.map +1 -1
  194. package/dist/custom-auth-path/interaction_client/SilentRefreshClient.mjs +1 -1
  195. package/dist/custom-auth-path/interaction_client/StandardInteractionClient.mjs +1 -1
  196. package/dist/custom-auth-path/interaction_handler/InteractionHandler.mjs +1 -1
  197. package/dist/custom-auth-path/interaction_handler/SilentHandler.d.ts +6 -0
  198. package/dist/custom-auth-path/interaction_handler/SilentHandler.d.ts.map +1 -1
  199. package/dist/custom-auth-path/interaction_handler/SilentHandler.mjs +12 -2
  200. package/dist/custom-auth-path/interaction_handler/SilentHandler.mjs.map +1 -1
  201. package/dist/custom-auth-path/log-strings-mapping.json +23 -3
  202. package/dist/custom-auth-path/navigation/NavigationClient.mjs +1 -1
  203. package/dist/custom-auth-path/network/FetchClient.mjs +1 -1
  204. package/dist/custom-auth-path/operatingcontext/BaseOperatingContext.mjs +1 -1
  205. package/dist/custom-auth-path/operatingcontext/StandardOperatingContext.mjs +1 -1
  206. package/dist/custom-auth-path/packageMetadata.d.ts +1 -1
  207. package/dist/custom-auth-path/packageMetadata.mjs +2 -2
  208. package/dist/custom-auth-path/protocol/Authorize.mjs +1 -1
  209. package/dist/custom-auth-path/redirect_bridge/index.d.ts.map +1 -1
  210. package/dist/custom-auth-path/request/RequestHelpers.mjs +1 -1
  211. package/dist/custom-auth-path/response/ResponseHandler.mjs +1 -1
  212. package/dist/custom-auth-path/telemetry/BrowserPerformanceClient.d.ts +1 -0
  213. package/dist/custom-auth-path/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  214. package/dist/custom-auth-path/telemetry/BrowserPerformanceEvents.d.ts +5 -0
  215. package/dist/custom-auth-path/telemetry/BrowserPerformanceEvents.d.ts.map +1 -1
  216. package/dist/custom-auth-path/telemetry/BrowserPerformanceEvents.mjs +9 -3
  217. package/dist/custom-auth-path/telemetry/BrowserPerformanceEvents.mjs.map +1 -1
  218. package/dist/custom-auth-path/telemetry/BrowserRootPerformanceEvents.mjs +1 -1
  219. package/dist/custom-auth-path/utils/BrowserConstants.mjs +1 -1
  220. package/dist/custom-auth-path/utils/BrowserProtocolUtils.mjs +1 -1
  221. package/dist/custom-auth-path/utils/BrowserUtils.d.ts +2 -2
  222. package/dist/custom-auth-path/utils/BrowserUtils.d.ts.map +1 -1
  223. package/dist/custom-auth-path/utils/BrowserUtils.mjs +27 -3
  224. package/dist/custom-auth-path/utils/BrowserUtils.mjs.map +1 -1
  225. package/dist/custom-auth-path/utils/Helpers.mjs +1 -1
  226. package/dist/custom-auth-path/utils/MsalFrameStatsUtils.mjs +1 -1
  227. package/dist/custom_auth/CustomAuthConstants.d.ts +1 -1
  228. package/dist/encode/Base64Decode.mjs +1 -1
  229. package/dist/encode/Base64Encode.mjs +1 -1
  230. package/dist/error/BrowserAuthError.mjs +1 -1
  231. package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
  232. package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
  233. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  234. package/dist/error/NativeAuthError.mjs +1 -1
  235. package/dist/error/NativeAuthErrorCodes.mjs +1 -1
  236. package/dist/error/NestedAppAuthError.mjs +1 -1
  237. package/dist/event/EventHandler.mjs +1 -1
  238. package/dist/event/EventMessage.mjs +1 -1
  239. package/dist/event/EventType.mjs +1 -1
  240. package/dist/index.d.ts +1 -1
  241. package/dist/index.d.ts.map +1 -1
  242. package/dist/index.mjs +1 -1
  243. package/dist/index.mjs.map +1 -1
  244. package/dist/interaction_client/BaseInteractionClient.mjs +1 -1
  245. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  246. package/dist/interaction_client/PlatformAuthInteractionClient.d.ts +10 -10
  247. package/dist/interaction_client/PlatformAuthInteractionClient.d.ts.map +1 -1
  248. package/dist/interaction_client/PlatformAuthInteractionClient.mjs +8 -8
  249. package/dist/interaction_client/PlatformAuthInteractionClient.mjs.map +1 -1
  250. package/dist/interaction_client/PopupClient.mjs +1 -1
  251. package/dist/interaction_client/RedirectClient.mjs +1 -1
  252. package/dist/interaction_client/SilentAuthCodeClient.mjs +1 -1
  253. package/dist/interaction_client/SilentCacheClient.mjs +1 -1
  254. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  255. package/dist/interaction_client/SilentIframeClient.mjs +21 -8
  256. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  257. package/dist/interaction_client/SilentRefreshClient.mjs +1 -1
  258. package/dist/interaction_client/StandardInteractionClient.mjs +1 -1
  259. package/dist/interaction_handler/InteractionHandler.mjs +1 -1
  260. package/dist/interaction_handler/SilentHandler.d.ts +6 -0
  261. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  262. package/dist/interaction_handler/SilentHandler.mjs +12 -2
  263. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  264. package/dist/log-strings-mapping.json +31 -11
  265. package/dist/naa/BridgeError.mjs +1 -1
  266. package/dist/naa/BridgeProxy.mjs +1 -1
  267. package/dist/naa/BridgeStatusCode.mjs +1 -1
  268. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
  269. package/dist/navigation/NavigationClient.mjs +1 -1
  270. package/dist/network/FetchClient.mjs +1 -1
  271. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  272. package/dist/operatingcontext/NestedAppOperatingContext.mjs +1 -1
  273. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  274. package/dist/packageMetadata.d.ts +1 -1
  275. package/dist/packageMetadata.mjs +2 -2
  276. package/dist/protocol/Authorize.mjs +1 -1
  277. package/dist/redirect-bridge/cache/CacheKeys.mjs +1 -1
  278. package/dist/redirect-bridge/cache/TokenCache.d.ts.map +1 -1
  279. package/dist/redirect-bridge/config/Configuration.d.ts +13 -1
  280. package/dist/redirect-bridge/config/Configuration.d.ts.map +1 -1
  281. package/dist/redirect-bridge/config/Configuration.mjs +1 -1
  282. package/dist/redirect-bridge/controllers/StandardController.d.ts +4 -2
  283. package/dist/redirect-bridge/controllers/StandardController.d.ts.map +1 -1
  284. package/dist/redirect-bridge/custom_auth/CustomAuthConstants.d.ts +1 -1
  285. package/dist/redirect-bridge/encode/Base64Decode.mjs +1 -1
  286. package/dist/redirect-bridge/error/BrowserAuthError.mjs +1 -1
  287. package/dist/redirect-bridge/error/BrowserAuthErrorCodes.mjs +1 -1
  288. package/dist/redirect-bridge/index.d.ts +1 -1
  289. package/dist/redirect-bridge/index.d.ts.map +1 -1
  290. package/dist/redirect-bridge/interaction_client/PlatformAuthInteractionClient.d.ts +10 -10
  291. package/dist/redirect-bridge/interaction_client/PlatformAuthInteractionClient.d.ts.map +1 -1
  292. package/dist/redirect-bridge/interaction_client/SilentIframeClient.d.ts.map +1 -1
  293. package/dist/redirect-bridge/interaction_handler/SilentHandler.d.ts +6 -0
  294. package/dist/redirect-bridge/interaction_handler/SilentHandler.d.ts.map +1 -1
  295. package/dist/redirect-bridge/navigation/NavigationClient.mjs +1 -1
  296. package/dist/redirect-bridge/packageMetadata.d.ts +1 -1
  297. package/dist/redirect-bridge/redirect_bridge/index.d.ts.map +1 -1
  298. package/dist/redirect-bridge/redirect_bridge/index.mjs +43 -24
  299. package/dist/redirect-bridge/redirect_bridge/index.mjs.map +1 -1
  300. package/dist/redirect-bridge/telemetry/BrowserPerformanceClient.d.ts +1 -0
  301. package/dist/redirect-bridge/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  302. package/dist/redirect-bridge/telemetry/BrowserPerformanceEvents.d.ts +5 -0
  303. package/dist/redirect-bridge/telemetry/BrowserPerformanceEvents.d.ts.map +1 -1
  304. package/dist/redirect-bridge/utils/BrowserConstants.mjs +1 -1
  305. package/dist/redirect-bridge/utils/BrowserUtils.d.ts +2 -2
  306. package/dist/redirect-bridge/utils/BrowserUtils.d.ts.map +1 -1
  307. package/dist/redirect-bridge/utils/BrowserUtils.mjs +1 -1
  308. package/dist/redirect-bridge/utils/BrowserUtils.mjs.map +1 -1
  309. package/dist/redirect_bridge/index.d.ts.map +1 -1
  310. package/dist/request/RequestHelpers.mjs +1 -1
  311. package/dist/response/ResponseHandler.mjs +1 -1
  312. package/dist/telemetry/BrowserPerformanceClient.d.ts +1 -0
  313. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  314. package/dist/telemetry/BrowserPerformanceClient.mjs +6 -1
  315. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  316. package/dist/telemetry/BrowserPerformanceEvents.d.ts +5 -0
  317. package/dist/telemetry/BrowserPerformanceEvents.d.ts.map +1 -1
  318. package/dist/telemetry/BrowserPerformanceEvents.mjs +9 -3
  319. package/dist/telemetry/BrowserPerformanceEvents.mjs.map +1 -1
  320. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  321. package/dist/telemetry/BrowserRootPerformanceEvents.mjs +1 -1
  322. package/dist/utils/BrowserConstants.mjs +1 -1
  323. package/dist/utils/BrowserProtocolUtils.mjs +1 -1
  324. package/dist/utils/BrowserUtils.d.ts +2 -2
  325. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  326. package/dist/utils/BrowserUtils.mjs +27 -3
  327. package/dist/utils/BrowserUtils.mjs.map +1 -1
  328. package/dist/utils/Helpers.mjs +1 -1
  329. package/dist/utils/MsalFrameStatsUtils.mjs +1 -1
  330. package/lib/custom-auth-path/log-strings-mapping.json +23 -3
  331. package/lib/custom-auth-path/msal-custom-auth.cjs +649 -546
  332. package/lib/custom-auth-path/msal-custom-auth.cjs.map +1 -1
  333. package/lib/custom-auth-path/types/cache/TokenCache.d.ts.map +1 -1
  334. package/lib/custom-auth-path/types/config/Configuration.d.ts +13 -1
  335. package/lib/custom-auth-path/types/config/Configuration.d.ts.map +1 -1
  336. package/lib/custom-auth-path/types/controllers/StandardController.d.ts +4 -2
  337. package/lib/custom-auth-path/types/controllers/StandardController.d.ts.map +1 -1
  338. package/lib/custom-auth-path/types/custom_auth/CustomAuthConstants.d.ts +1 -1
  339. package/lib/custom-auth-path/types/index.d.ts +1 -1
  340. package/lib/custom-auth-path/types/index.d.ts.map +1 -1
  341. package/lib/custom-auth-path/types/interaction_client/PlatformAuthInteractionClient.d.ts +10 -10
  342. package/lib/custom-auth-path/types/interaction_client/PlatformAuthInteractionClient.d.ts.map +1 -1
  343. package/lib/custom-auth-path/types/interaction_client/SilentIframeClient.d.ts.map +1 -1
  344. package/lib/custom-auth-path/types/interaction_handler/SilentHandler.d.ts +6 -0
  345. package/lib/custom-auth-path/types/interaction_handler/SilentHandler.d.ts.map +1 -1
  346. package/lib/custom-auth-path/types/packageMetadata.d.ts +1 -1
  347. package/lib/custom-auth-path/types/redirect_bridge/index.d.ts.map +1 -1
  348. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceClient.d.ts +1 -0
  349. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  350. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceEvents.d.ts +5 -0
  351. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceEvents.d.ts.map +1 -1
  352. package/lib/custom-auth-path/types/utils/BrowserUtils.d.ts +2 -2
  353. package/lib/custom-auth-path/types/utils/BrowserUtils.d.ts.map +1 -1
  354. package/lib/log-strings-mapping.json +31 -11
  355. package/lib/msal-browser.cjs +794 -685
  356. package/lib/msal-browser.cjs.map +1 -1
  357. package/lib/msal-browser.js +794 -685
  358. package/lib/msal-browser.js.map +1 -1
  359. package/lib/msal-browser.min.js +2 -2
  360. package/lib/redirect-bridge/msal-redirect-bridge.js +52 -33
  361. package/lib/redirect-bridge/msal-redirect-bridge.js.map +1 -1
  362. package/lib/redirect-bridge/msal-redirect-bridge.min.js +2 -2
  363. package/lib/types/cache/TokenCache.d.ts.map +1 -1
  364. package/lib/types/config/Configuration.d.ts +13 -1
  365. package/lib/types/config/Configuration.d.ts.map +1 -1
  366. package/lib/types/controllers/StandardController.d.ts +4 -2
  367. package/lib/types/controllers/StandardController.d.ts.map +1 -1
  368. package/lib/types/custom_auth/CustomAuthConstants.d.ts +1 -1
  369. package/lib/types/index.d.ts +1 -1
  370. package/lib/types/index.d.ts.map +1 -1
  371. package/lib/types/interaction_client/PlatformAuthInteractionClient.d.ts +10 -10
  372. package/lib/types/interaction_client/PlatformAuthInteractionClient.d.ts.map +1 -1
  373. package/lib/types/interaction_client/SilentIframeClient.d.ts.map +1 -1
  374. package/lib/types/interaction_handler/SilentHandler.d.ts +6 -0
  375. package/lib/types/interaction_handler/SilentHandler.d.ts.map +1 -1
  376. package/lib/types/packageMetadata.d.ts +1 -1
  377. package/lib/types/redirect_bridge/index.d.ts.map +1 -1
  378. package/lib/types/telemetry/BrowserPerformanceClient.d.ts +1 -0
  379. package/lib/types/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  380. package/lib/types/telemetry/BrowserPerformanceEvents.d.ts +5 -0
  381. package/lib/types/telemetry/BrowserPerformanceEvents.d.ts.map +1 -1
  382. package/lib/types/utils/BrowserUtils.d.ts +2 -2
  383. package/lib/types/utils/BrowserUtils.d.ts.map +1 -1
  384. package/package.json +2 -2
  385. package/src/cache/TokenCache.ts +27 -24
  386. package/src/config/Configuration.ts +22 -0
  387. package/src/controllers/StandardController.ts +84 -35
  388. package/src/index.ts +1 -0
  389. package/src/interaction_client/PlatformAuthInteractionClient.ts +55 -53
  390. package/src/interaction_client/SilentIframeClient.ts +55 -29
  391. package/src/interaction_handler/SilentHandler.ts +11 -0
  392. package/src/packageMetadata.ts +1 -1
  393. package/src/redirect_bridge/index.ts +47 -25
  394. package/src/telemetry/BrowserPerformanceClient.ts +6 -0
  395. package/src/telemetry/BrowserPerformanceEvents.ts +6 -0
  396. package/src/utils/BrowserUtils.ts +36 -4
@@ -4,80 +4,80 @@
4
4
  */
5
5
 
6
6
  import {
7
- Logger,
8
- ICrypto,
9
- AuthToken,
7
+ AADServerParamKeys,
8
+ AccessTokenEntity,
10
9
  AccountEntity,
10
+ AccountEntityUtils,
11
+ AccountInfo,
12
+ AuthError,
13
+ AuthToken,
11
14
  AuthorityType,
12
- ScopeSet,
13
- TimeUtils,
14
- UrlString,
15
- PopTokenGenerator,
16
- SignedHttpRequestParameters,
15
+ CacheHelpers,
16
+ ClientAuthErrorCodes,
17
+ CommonSilentFlowRequest,
18
+ Constants,
19
+ ICrypto,
17
20
  IPerformanceClient,
18
21
  IdTokenEntity,
19
- AccessTokenEntity,
20
- AuthError,
21
- CommonSilentFlowRequest,
22
- AccountInfo,
23
- AADServerParamKeys,
22
+ InProgressPerformanceEvent,
23
+ Logger,
24
+ PerformanceEvents,
25
+ PopTokenGenerator,
26
+ ScopeSet,
27
+ ServerTelemetryManager,
28
+ SignedHttpRequestParameters,
29
+ TimeUtils,
24
30
  TokenClaims,
31
+ UrlString,
32
+ buildAccountToCache,
25
33
  createClientAuthError,
26
- ClientAuthErrorCodes,
27
34
  invokeAsync,
28
35
  updateAccountTenantProfileData,
29
- CacheHelpers,
30
- buildAccountToCache,
31
- InProgressPerformanceEvent,
32
- ServerTelemetryManager,
33
- AccountEntityUtils,
34
- Constants,
35
- PerformanceEvents,
36
36
  } from "@azure/msal-common/browser";
37
- import {
38
- BaseInteractionClient,
39
- getDiscoveredAuthority,
40
- getRedirectUri,
41
- initializeServerTelemetryManager,
42
- } from "./BaseInteractionClient.js";
43
- import * as BrowserPerformanceEvents from "../telemetry/BrowserPerformanceEvents.js";
44
- import { BrowserConfiguration } from "../config/Configuration.js";
45
- import { BrowserCacheManager } from "../cache/BrowserCacheManager.js";
46
- import { EventHandler } from "../event/EventHandler.js";
47
- import { PopupRequest } from "../request/PopupRequest.js";
48
- import { SilentRequest } from "../request/SilentRequest.js";
49
- import { SsoSilentRequest } from "../request/SsoSilentRequest.js";
50
- import {
51
- ApiId,
52
- TemporaryCacheKeys,
53
- PlatformAuthConstants,
54
- BrowserConstants,
55
- CacheLookupPolicy,
56
- } from "../utils/BrowserConstants.js";
37
+ import { IPlatformAuthHandler } from "../broker/nativeBroker/IPlatformAuthHandler.js";
57
38
  import { PlatformAuthRequest } from "../broker/nativeBroker/PlatformAuthRequest.js";
58
39
  import {
59
40
  MATS,
60
41
  PlatformAuthResponse,
61
42
  } from "../broker/nativeBroker/PlatformAuthResponse.js";
43
+ import { BrowserCacheManager } from "../cache/BrowserCacheManager.js";
44
+ import { BrowserConfiguration } from "../config/Configuration.js";
45
+ import { base64Decode } from "../encode/Base64Decode.js";
46
+ import {
47
+ BrowserAuthErrorCodes,
48
+ createBrowserAuthError,
49
+ } from "../error/BrowserAuthError.js";
62
50
  import {
63
51
  NativeAuthError,
64
52
  NativeAuthErrorCodes,
65
53
  createNativeAuthError,
66
54
  isFatalNativeAuthError,
67
55
  } from "../error/NativeAuthError.js";
68
- import { RedirectRequest } from "../request/RedirectRequest.js";
69
- import { NavigationOptions } from "../navigation/NavigationOptions.js";
56
+ import { EventHandler } from "../event/EventHandler.js";
70
57
  import { INavigationClient } from "../navigation/INavigationClient.js";
71
- import {
72
- createBrowserAuthError,
73
- BrowserAuthErrorCodes,
74
- } from "../error/BrowserAuthError.js";
75
- import { SilentCacheClient } from "./SilentCacheClient.js";
76
- import { AuthenticationResult } from "../response/AuthenticationResult.js";
77
- import { base64Decode } from "../encode/Base64Decode.js";
58
+ import { NavigationOptions } from "../navigation/NavigationOptions.js";
78
59
  import { version } from "../packageMetadata.js";
79
- import { IPlatformAuthHandler } from "../broker/nativeBroker/IPlatformAuthHandler.js";
80
60
  import { HandleRedirectPromiseOptions } from "../request/HandleRedirectPromiseOptions.js";
61
+ import { PopupRequest } from "../request/PopupRequest.js";
62
+ import { RedirectRequest } from "../request/RedirectRequest.js";
63
+ import { SilentRequest } from "../request/SilentRequest.js";
64
+ import { SsoSilentRequest } from "../request/SsoSilentRequest.js";
65
+ import { AuthenticationResult } from "../response/AuthenticationResult.js";
66
+ import * as BrowserPerformanceEvents from "../telemetry/BrowserPerformanceEvents.js";
67
+ import {
68
+ ApiId,
69
+ BrowserConstants,
70
+ CacheLookupPolicy,
71
+ PlatformAuthConstants,
72
+ TemporaryCacheKeys,
73
+ } from "../utils/BrowserConstants.js";
74
+ import {
75
+ BaseInteractionClient,
76
+ getDiscoveredAuthority,
77
+ getRedirectUri,
78
+ initializeServerTelemetryManager,
79
+ } from "./BaseInteractionClient.js";
80
+ import { SilentCacheClient } from "./SilentCacheClient.js";
81
81
 
82
82
  export class PlatformAuthInteractionClient extends BaseInteractionClient {
83
83
  protected apiId: ApiId;
@@ -542,10 +542,12 @@ export class PlatformAuthInteractionClient extends BaseInteractionClient {
542
542
  this.correlationId,
543
543
  idTokenClaims,
544
544
  response.client_info,
545
- undefined, // environment
545
+ authority.getPreferredCache(), // environment
546
546
  idTokenClaims.tid,
547
547
  undefined, // auth code payload
548
- response.account.id
548
+ response.account.id,
549
+ this.logger,
550
+ this.performanceClient
549
551
  );
550
552
 
551
553
  // Ensure expires_in is in number format
@@ -38,6 +38,7 @@ import {
38
38
  initiateCodeRequest,
39
39
  initiateCodeFlowWithPost,
40
40
  initiateEarRequest,
41
+ removeHiddenIframe,
41
42
  } from "../interaction_handler/SilentHandler.js";
42
43
  import { SsoSilentRequest } from "../request/SsoSilentRequest.js";
43
44
  import { AuthenticationResult } from "../response/AuthenticationResult.js";
@@ -276,7 +277,7 @@ export class SilentIframeClient extends StandardInteractionClient {
276
277
  earJwk: earJwk,
277
278
  codeChallenge: pkceCodes.challenge,
278
279
  };
279
- await invokeAsync(
280
+ const iframe = await invokeAsync(
280
281
  initiateEarRequest,
281
282
  BrowserPerformanceEvents.SilentHandlerInitiateAuthRequest,
282
283
  this.logger,
@@ -291,19 +292,31 @@ export class SilentIframeClient extends StandardInteractionClient {
291
292
  );
292
293
 
293
294
  const responseType = this.config.auth.OIDCOptions.responseMode;
294
- const responseString = await invokeAsync(
295
- BrowserUtils.waitForBridgeResponse,
296
- BrowserPerformanceEvents.SilentHandlerMonitorIframeForHash,
297
- this.logger,
298
- this.performanceClient,
299
- correlationId
300
- )(
301
- this.config.system.iframeBridgeTimeout,
302
- this.logger,
303
- this.browserCrypto,
304
- request,
305
- this.performanceClient
306
- );
295
+ let responseString: string;
296
+ try {
297
+ responseString = await invokeAsync(
298
+ BrowserUtils.waitForBridgeResponse,
299
+ BrowserPerformanceEvents.SilentHandlerMonitorIframeForHash,
300
+ this.logger,
301
+ this.performanceClient,
302
+ correlationId
303
+ )(
304
+ this.config.system.iframeBridgeTimeout,
305
+ this.logger,
306
+ this.browserCrypto,
307
+ request,
308
+ this.performanceClient,
309
+ this.config.experimental
310
+ );
311
+ } finally {
312
+ invoke(
313
+ removeHiddenIframe,
314
+ BrowserPerformanceEvents.RemoveHiddenIframe,
315
+ this.logger,
316
+ this.performanceClient,
317
+ correlationId
318
+ )(iframe);
319
+ }
307
320
 
308
321
  const serverParams = invoke(
309
322
  ResponseHandler.deserializeResponse,
@@ -415,8 +428,9 @@ export class SilentIframeClient extends StandardInteractionClient {
415
428
  codeChallenge: pkceCodes.challenge,
416
429
  };
417
430
 
431
+ let iframe: HTMLIFrameElement;
418
432
  if (request.httpMethod === Constants.HttpMethod.POST) {
419
- await invokeAsync(
433
+ iframe = await invokeAsync(
420
434
  initiateCodeFlowWithPost,
421
435
  BrowserPerformanceEvents.SilentHandlerInitiateAuthRequest,
422
436
  this.logger,
@@ -446,7 +460,7 @@ export class SilentIframeClient extends StandardInteractionClient {
446
460
  );
447
461
 
448
462
  // Get the frame handle for the silent request
449
- await invokeAsync(
463
+ iframe = await invokeAsync(
450
464
  initiateCodeRequest,
451
465
  BrowserPerformanceEvents.SilentHandlerInitiateAuthRequest,
452
466
  this.logger,
@@ -457,19 +471,31 @@ export class SilentIframeClient extends StandardInteractionClient {
457
471
 
458
472
  const responseType = this.config.auth.OIDCOptions.responseMode;
459
473
  // Wait for response from the redirect bridge.
460
- const responseString = await invokeAsync(
461
- BrowserUtils.waitForBridgeResponse,
462
- BrowserPerformanceEvents.SilentHandlerMonitorIframeForHash,
463
- this.logger,
464
- this.performanceClient,
465
- correlationId
466
- )(
467
- this.config.system.iframeBridgeTimeout,
468
- this.logger,
469
- this.browserCrypto,
470
- request,
471
- this.performanceClient
472
- );
474
+ let responseString: string;
475
+ try {
476
+ responseString = await invokeAsync(
477
+ BrowserUtils.waitForBridgeResponse,
478
+ BrowserPerformanceEvents.SilentHandlerMonitorIframeForHash,
479
+ this.logger,
480
+ this.performanceClient,
481
+ correlationId
482
+ )(
483
+ this.config.system.iframeBridgeTimeout,
484
+ this.logger,
485
+ this.browserCrypto,
486
+ request,
487
+ this.performanceClient,
488
+ this.config.experimental
489
+ );
490
+ } finally {
491
+ invoke(
492
+ removeHiddenIframe,
493
+ BrowserPerformanceEvents.RemoveHiddenIframe,
494
+ this.logger,
495
+ this.performanceClient,
496
+ correlationId
497
+ )(iframe);
498
+ }
473
499
 
474
500
  const serverParams = invoke(
475
501
  ResponseHandler.deserializeResponse,
@@ -127,3 +127,14 @@ function createHiddenIframe(): HTMLIFrameElement {
127
127
 
128
128
  return authFrame;
129
129
  }
130
+
131
+ /**
132
+ * @hidden
133
+ * Removes a hidden iframe from `document.body` if it is a direct child.
134
+ * @param iframe - The iframe element to remove.
135
+ */
136
+ export function removeHiddenIframe(iframe: HTMLIFrameElement): void {
137
+ if (document.body === iframe.parentNode) {
138
+ document.body.removeChild(iframe);
139
+ }
140
+ }
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-browser";
3
- export const version = "5.6.1";
3
+ export const version = "5.6.3";
@@ -66,39 +66,61 @@ export async function broadcastResponseToMainFrame(
66
66
  };
67
67
 
68
68
  let navigateToUrl = "";
69
+ let clientId = "";
69
70
  const interactionKey = `${PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;
71
+ /*
72
+ * Retrieve the clientId and original navigation URL from
73
+ * sessionStorage. If sessionStorage access or JSON.parse fails,
74
+ * we fall back to URL-based navigation below.
75
+ */
70
76
  try {
71
- /*
72
- * Retrieve the original navigation URL from sessionStorage
73
- */
74
- const { clientId } = JSON.parse(
75
- window.sessionStorage.getItem(interactionKey) || ""
76
- );
77
+ const rawInteractionStatus =
78
+ window.sessionStorage.getItem(interactionKey);
79
+ const interactionStatus = JSON.parse(rawInteractionStatus || "");
80
+ clientId = interactionStatus.clientId || "";
81
+
77
82
  if (clientId) {
78
- const cacheKey = `${PREFIX}.${clientId}.${TemporaryCacheKeys.ORIGIN_URI}`;
79
- navigateToUrl = window.sessionStorage.getItem(cacheKey) || "";
83
+ const originKey = `${PREFIX}.${clientId}.${TemporaryCacheKeys.ORIGIN_URI}`;
84
+ navigateToUrl = window.sessionStorage.getItem(originKey) || "";
80
85
  }
81
- } catch (e) {
82
- // SessionStorage access may fail in some contexts, use default
86
+ } catch {
87
+ // sessionStorage access or JSON.parse failed
83
88
  }
84
89
 
85
- // Reconstruct full URL with auth response (preserve original format)
86
- let fullUrlResponse = "";
87
- if (hasResponseInHash && hasResponseInQuery) {
88
- // Hybrid format
89
- fullUrlResponse = `${urlQuery}${urlHash}`;
90
- } else if (hasResponseInHash) {
91
- // Hash only
92
- fullUrlResponse = urlHash;
93
- } else {
94
- // Query only
95
- fullUrlResponse = urlQuery;
90
+ /*
91
+ * Cache the auth response payload in sessionStorage under the URL_HASH
92
+ * key, then navigate directly to the origin URL. This replicates what
93
+ * RedirectClient.handleRedirectPromise does when the current page is
94
+ * not the loginRequestUrl: it caches the response and navigates.
95
+ *
96
+ * On the target page, handleRedirectPromise will find no response in
97
+ * the URL but will pick up the cached payload from sessionStorage.
98
+ * This avoids appending the auth response to the URL, which would
99
+ * create malformed URLs for hash-routed SPAs (e.g. /#/route#code=...).
100
+ *
101
+ * If caching fails (clientId unavailable, quota exceeded, storage
102
+ * disabled), we still navigate to the origin/homepage. The target
103
+ * page's handleRedirectPromise will return null and the app can
104
+ * handle re-authentication. Appending auth params to the URL would
105
+ * not help because handleRedirectPromise also relies on
106
+ * sessionStorage to persist tokens.
107
+ */
108
+ if (clientId) {
109
+ try {
110
+ window.sessionStorage.setItem(
111
+ `${PREFIX}.${clientId}.${TemporaryCacheKeys.URL_HASH}`,
112
+ payload
113
+ );
114
+ } catch {
115
+ // sessionStorage write failed — navigate anyway; handleRedirectPromise will return null
116
+ }
96
117
  }
97
118
 
98
- const homepage = `${
99
- navigateToUrl || BrowserUtils.getHomepage()
100
- }${fullUrlResponse}`;
101
- await navClient.navigateInternal(homepage, navigationOptions);
119
+ const url = navigateToUrl || BrowserUtils.getHomepage();
120
+ // Strip bare trailing "?" (empty query string) to match canonical URL form
121
+ const navigationUrl = url.endsWith("?") ? url.slice(0, -1) : url;
122
+
123
+ await navClient.navigateInternal(navigationUrl, navigationOptions);
102
124
 
103
125
  // Do NOT clear URL for redirect flow - we're navigating away anyway
104
126
  return;
@@ -94,6 +94,10 @@ export class BrowserPerformanceClient
94
94
  return document.visibilityState?.toString() || null;
95
95
  }
96
96
 
97
+ private getOnlineStatus(): boolean | null {
98
+ return typeof navigator !== "undefined" ? navigator.onLine : null;
99
+ }
100
+
97
101
  private deleteIncompleteSubMeasurements(
98
102
  inProgressEvent: InProgressPerformanceEvent
99
103
  ): void {
@@ -134,6 +138,7 @@ export class BrowserPerformanceClient
134
138
  ): InProgressPerformanceEvent {
135
139
  // Capture page visibilityState and then invoke start/end measurement
136
140
  const startPageVisibility = this.getPageVisibility();
141
+ const startOnlineStatus = this.getOnlineStatus();
137
142
  const inProgressEvent = super.startMeasurement(
138
143
  measureName,
139
144
  correlationId
@@ -166,6 +171,7 @@ export class BrowserPerformanceClient
166
171
  {
167
172
  ...event,
168
173
  startPageVisibility,
174
+ startOnlineStatus,
169
175
  endPageVisibility: this.getPageVisibility(),
170
176
  durationMs: getPerfDurationMs(startTime),
171
177
  networkEffectiveType: networkInfo.effectiveType,
@@ -184,3 +184,9 @@ export const LoadAccount = "loadAccount";
184
184
  export const LoadIdToken = "loadIdToken";
185
185
  export const LoadAccessToken = "loadAccessToken";
186
186
  export const LoadRefreshToken = "loadRefreshToken";
187
+
188
+ /**
189
+ * Background telemetry measurement that tracks whether a late bridge response
190
+ * arrives after the iframe timeout has already fired.
191
+ */
192
+ export const WaitForBridgeLateResponse = "waitForBridgeLateResponse";
@@ -11,11 +11,13 @@ import {
11
11
  RequestParameterBuilder,
12
12
  ICrypto,
13
13
  IPerformanceClient,
14
+ InProgressPerformanceEvent,
14
15
  Logger,
15
16
  CommonAuthorizationUrlRequest,
16
17
  CommonEndSessionRequest,
17
18
  ProtocolUtils,
18
19
  } from "@azure/msal-common/browser";
20
+ import * as BrowserPerformanceEvents from "../telemetry/BrowserPerformanceEvents.js";
19
21
  import {
20
22
  createBrowserAuthError,
21
23
  BrowserAuthErrorCodes,
@@ -26,7 +28,10 @@ import {
26
28
  BrowserConfigurationAuthErrorCodes,
27
29
  createBrowserConfigurationAuthError,
28
30
  } from "../error/BrowserConfigurationAuthError.js";
29
- import { BrowserConfiguration } from "../config/Configuration.js";
31
+ import {
32
+ BrowserConfiguration,
33
+ BrowserExperimentalOptions,
34
+ } from "../config/Configuration.js";
30
35
  import { redirectBridgeEmptyResponse } from "../error/BrowserAuthErrorCodes.js";
31
36
  import { base64Decode } from "../encode/Base64Decode.js";
32
37
 
@@ -236,7 +241,8 @@ export async function waitForBridgeResponse(
236
241
  logger: Logger,
237
242
  browserCrypto: ICrypto,
238
243
  request: CommonAuthorizationUrlRequest | CommonEndSessionRequest,
239
- performanceClient: IPerformanceClient
244
+ performanceClient: IPerformanceClient,
245
+ experimentalConfig?: BrowserExperimentalOptions
240
246
  ): Promise<string> {
241
247
  return new Promise<string>((resolve, reject) => {
242
248
  logger.verbose(
@@ -249,6 +255,8 @@ export async function waitForBridgeResponse(
249
255
  performanceClient.addFields(
250
256
  {
251
257
  redirectBridgeTimeoutMs: timeoutMs,
258
+ lateResponseExperimentEnabled:
259
+ experimentalConfig?.iframeTimeoutTelemetry || false,
252
260
  },
253
261
  correlationId
254
262
  );
@@ -259,12 +267,27 @@ export async function waitForBridgeResponse(
259
267
  );
260
268
  const channel = new BroadcastChannel(libraryState.id);
261
269
  let responseString: string | undefined = undefined;
270
+ let timedOut = false;
271
+ let lateTimeoutId: number | undefined;
272
+ let lateMeasurement: InProgressPerformanceEvent | undefined;
262
273
 
263
274
  const timeoutId = window.setTimeout(() => {
264
275
  // Clear the active monitor
265
276
  activeBridgeMonitor = null;
266
-
267
- channel.close();
277
+ if (experimentalConfig?.iframeTimeoutTelemetry) {
278
+ lateMeasurement = performanceClient.startMeasurement(
279
+ BrowserPerformanceEvents.WaitForBridgeLateResponse,
280
+ correlationId
281
+ );
282
+ timedOut = true;
283
+ lateTimeoutId = window.setTimeout(() => {
284
+ lateMeasurement?.end({ success: false });
285
+ clearTimeout(lateTimeoutId);
286
+ channel.close();
287
+ }, 60000); // 60s late response timeout to allow for telemetry of late responses
288
+ } else {
289
+ channel.close();
290
+ }
268
291
  reject(
269
292
  createBrowserAuthError(
270
293
  BrowserAuthErrorCodes.timedOut,
@@ -288,6 +311,15 @@ export async function waitForBridgeResponse(
288
311
  ? event.data.v
289
312
  : undefined;
290
313
 
314
+ if (timedOut) {
315
+ lateMeasurement?.end({
316
+ success: responseString ? true : false,
317
+ });
318
+ clearTimeout(lateTimeoutId);
319
+ channel.close();
320
+ return;
321
+ }
322
+
291
323
  performanceClient.addFields(
292
324
  {
293
325
  redirectBridgeMessageVersion: messageVersion,