@azure/msal-browser 4.28.2 → 4.29.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 (333) hide show
  1. package/README.md +25 -25
  2. package/dist/app/IPublicClientApplication.mjs +1 -1
  3. package/dist/app/PublicClientApplication.mjs +1 -1
  4. package/dist/app/PublicClientNext.mjs +1 -1
  5. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  6. package/dist/broker/nativeBroker/PlatformAuthDOMHandler.d.ts.map +1 -1
  7. package/dist/broker/nativeBroker/PlatformAuthDOMHandler.mjs +23 -9
  8. package/dist/broker/nativeBroker/PlatformAuthDOMHandler.mjs.map +1 -1
  9. package/dist/broker/nativeBroker/PlatformAuthExtensionHandler.mjs +1 -1
  10. package/dist/broker/nativeBroker/PlatformAuthProvider.mjs +1 -1
  11. package/dist/cache/AccountManager.mjs +1 -1
  12. package/dist/cache/AsyncMemoryStorage.mjs +1 -1
  13. package/dist/cache/BrowserCacheManager.mjs +1 -1
  14. package/dist/cache/CacheHelpers.mjs +1 -1
  15. package/dist/cache/CacheKeys.mjs +1 -1
  16. package/dist/cache/CookieStorage.mjs +1 -1
  17. package/dist/cache/DatabaseStorage.mjs +1 -1
  18. package/dist/cache/EncryptedData.mjs +1 -1
  19. package/dist/cache/LocalStorage.mjs +1 -1
  20. package/dist/cache/MemoryStorage.mjs +1 -1
  21. package/dist/cache/SessionStorage.mjs +1 -1
  22. package/dist/cache/TokenCache.mjs +1 -1
  23. package/dist/config/Configuration.d.ts +7 -0
  24. package/dist/config/Configuration.d.ts.map +1 -1
  25. package/dist/config/Configuration.mjs +2 -1
  26. package/dist/config/Configuration.mjs.map +1 -1
  27. package/dist/controllers/ControllerFactory.mjs +1 -1
  28. package/dist/controllers/NestedAppAuthController.mjs +1 -1
  29. package/dist/controllers/StandardController.d.ts +13 -2
  30. package/dist/controllers/StandardController.d.ts.map +1 -1
  31. package/dist/controllers/StandardController.mjs +109 -20
  32. package/dist/controllers/StandardController.mjs.map +1 -1
  33. package/dist/controllers/UnknownOperatingContextController.mjs +1 -1
  34. package/dist/crypto/BrowserCrypto.mjs +1 -1
  35. package/dist/crypto/CryptoOps.mjs +1 -1
  36. package/dist/crypto/PkceGenerator.mjs +1 -1
  37. package/dist/crypto/SignedHttpRequest.mjs +1 -1
  38. package/dist/custom-auth-path/app/PublicClientApplication.mjs +1 -1
  39. package/dist/custom-auth-path/broker/nativeBroker/NativeStatusCodes.mjs +1 -1
  40. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthDOMHandler.d.ts.map +1 -1
  41. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthDOMHandler.mjs +23 -9
  42. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthDOMHandler.mjs.map +1 -1
  43. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthExtensionHandler.mjs +1 -1
  44. package/dist/custom-auth-path/broker/nativeBroker/PlatformAuthProvider.mjs +1 -1
  45. package/dist/custom-auth-path/cache/AccountManager.mjs +1 -1
  46. package/dist/custom-auth-path/cache/AsyncMemoryStorage.mjs +1 -1
  47. package/dist/custom-auth-path/cache/BrowserCacheManager.mjs +1 -1
  48. package/dist/custom-auth-path/cache/CacheHelpers.mjs +1 -1
  49. package/dist/custom-auth-path/cache/CacheKeys.mjs +1 -1
  50. package/dist/custom-auth-path/cache/CookieStorage.mjs +1 -1
  51. package/dist/custom-auth-path/cache/DatabaseStorage.mjs +1 -1
  52. package/dist/custom-auth-path/cache/EncryptedData.mjs +1 -1
  53. package/dist/custom-auth-path/cache/LocalStorage.mjs +1 -1
  54. package/dist/custom-auth-path/cache/MemoryStorage.mjs +1 -1
  55. package/dist/custom-auth-path/cache/SessionStorage.mjs +1 -1
  56. package/dist/custom-auth-path/cache/TokenCache.mjs +1 -1
  57. package/dist/custom-auth-path/config/Configuration.d.ts +7 -0
  58. package/dist/custom-auth-path/config/Configuration.d.ts.map +1 -1
  59. package/dist/custom-auth-path/config/Configuration.mjs +2 -1
  60. package/dist/custom-auth-path/config/Configuration.mjs.map +1 -1
  61. package/dist/custom-auth-path/controllers/ControllerFactory.mjs +1 -1
  62. package/dist/custom-auth-path/controllers/StandardController.d.ts +13 -2
  63. package/dist/custom-auth-path/controllers/StandardController.d.ts.map +1 -1
  64. package/dist/custom-auth-path/controllers/StandardController.mjs +109 -20
  65. package/dist/custom-auth-path/controllers/StandardController.mjs.map +1 -1
  66. package/dist/custom-auth-path/crypto/BrowserCrypto.mjs +1 -1
  67. package/dist/custom-auth-path/crypto/CryptoOps.mjs +1 -1
  68. package/dist/custom-auth-path/crypto/PkceGenerator.mjs +1 -1
  69. package/dist/custom-auth-path/custom_auth/CustomAuthConstants.d.ts +1 -1
  70. package/dist/custom-auth-path/custom_auth/CustomAuthConstants.mjs +1 -1
  71. package/dist/custom-auth-path/custom_auth/CustomAuthPublicClientApplication.mjs +1 -1
  72. package/dist/custom-auth-path/custom_auth/controller/CustomAuthStandardController.mjs +1 -1
  73. package/dist/custom-auth-path/custom_auth/core/CustomAuthAuthority.mjs +1 -1
  74. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowErrorBase.mjs +1 -1
  75. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowResultBase.mjs +1 -1
  76. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowState.mjs +1 -1
  77. package/dist/custom-auth-path/custom_auth/core/auth_flow/AuthFlowStateTypes.mjs +1 -1
  78. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/error_type/AuthMethodRegistrationError.mjs +1 -1
  79. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/result/AuthMethodRegistrationChallengeMethodResult.mjs +1 -1
  80. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/result/AuthMethodRegistrationSubmitChallengeResult.mjs +1 -1
  81. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationCompletedState.mjs +1 -1
  82. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationFailedState.mjs +1 -1
  83. package/dist/custom-auth-path/custom_auth/core/auth_flow/jit/state/AuthMethodRegistrationState.mjs +1 -1
  84. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/error_type/MfaError.mjs +1 -1
  85. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/result/MfaRequestChallengeResult.mjs +1 -1
  86. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/result/MfaSubmitChallengeResult.mjs +1 -1
  87. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaCompletedState.mjs +1 -1
  88. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaFailedState.mjs +1 -1
  89. package/dist/custom-auth-path/custom_auth/core/auth_flow/mfa/state/MfaState.mjs +1 -1
  90. package/dist/custom-auth-path/custom_auth/core/error/CustomAuthApiError.mjs +1 -1
  91. package/dist/custom-auth-path/custom_auth/core/error/CustomAuthError.mjs +1 -1
  92. package/dist/custom-auth-path/custom_auth/core/error/HttpError.mjs +1 -1
  93. package/dist/custom-auth-path/custom_auth/core/error/HttpErrorCodes.mjs +1 -1
  94. package/dist/custom-auth-path/custom_auth/core/error/InvalidArgumentError.mjs +1 -1
  95. package/dist/custom-auth-path/custom_auth/core/error/InvalidConfigurationError.mjs +1 -1
  96. package/dist/custom-auth-path/custom_auth/core/error/InvalidConfigurationErrorCodes.mjs +1 -1
  97. package/dist/custom-auth-path/custom_auth/core/error/MethodNotImplementedError.mjs +1 -1
  98. package/dist/custom-auth-path/custom_auth/core/error/MsalCustomAuthError.mjs +1 -1
  99. package/dist/custom-auth-path/custom_auth/core/error/NoCachedAccountFoundError.mjs +1 -1
  100. package/dist/custom-auth-path/custom_auth/core/error/ParsedUrlError.mjs +1 -1
  101. package/dist/custom-auth-path/custom_auth/core/error/ParsedUrlErrorCodes.mjs +1 -1
  102. package/dist/custom-auth-path/custom_auth/core/error/UnexpectedError.mjs +1 -1
  103. package/dist/custom-auth-path/custom_auth/core/error/UnsupportedEnvironmentError.mjs +1 -1
  104. package/dist/custom-auth-path/custom_auth/core/error/UserAccountAttributeError.mjs +1 -1
  105. package/dist/custom-auth-path/custom_auth/core/error/UserAlreadySignedInError.mjs +1 -1
  106. package/dist/custom-auth-path/custom_auth/core/interaction_client/CustomAuthInteractionClientBase.mjs +1 -1
  107. package/dist/custom-auth-path/custom_auth/core/interaction_client/CustomAuthInterationClientFactory.mjs +1 -1
  108. package/dist/custom-auth-path/custom_auth/core/interaction_client/jit/JitClient.mjs +1 -1
  109. package/dist/custom-auth-path/custom_auth/core/interaction_client/jit/result/JitActionResult.mjs +1 -1
  110. package/dist/custom-auth-path/custom_auth/core/interaction_client/mfa/MfaClient.mjs +1 -1
  111. package/dist/custom-auth-path/custom_auth/core/interaction_client/mfa/result/MfaActionResult.mjs +1 -1
  112. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/BaseApiClient.mjs +1 -1
  113. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/CustomAuthApiClient.mjs +1 -1
  114. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/CustomAuthApiEndpoint.mjs +1 -1
  115. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/RegisterApiClient.mjs +1 -1
  116. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/ResetPasswordApiClient.mjs +1 -1
  117. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/SignInApiClient.mjs +1 -1
  118. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/SignupApiClient.mjs +1 -1
  119. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/types/ApiErrorCodes.mjs +1 -1
  120. package/dist/custom-auth-path/custom_auth/core/network_client/custom_auth_api/types/ApiSuberrors.mjs +1 -1
  121. package/dist/custom-auth-path/custom_auth/core/network_client/http_client/FetchHttpClient.mjs +1 -1
  122. package/dist/custom-auth-path/custom_auth/core/network_client/http_client/IHttpClient.mjs +1 -1
  123. package/dist/custom-auth-path/custom_auth/core/telemetry/PublicApiId.mjs +1 -1
  124. package/dist/custom-auth-path/custom_auth/core/utils/ArgumentValidator.mjs +1 -1
  125. package/dist/custom-auth-path/custom_auth/core/utils/UrlUtils.mjs +1 -1
  126. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/CustomAuthAccountData.mjs +1 -1
  127. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/error_type/GetAccountError.mjs +1 -1
  128. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/GetAccessTokenResult.mjs +1 -1
  129. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/GetAccountResult.mjs +1 -1
  130. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/result/SignOutResult.mjs +1 -1
  131. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/GetAccessTokenState.mjs +1 -1
  132. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/GetAccountState.mjs +1 -1
  133. package/dist/custom-auth-path/custom_auth/get_account/auth_flow/state/SignOutState.mjs +1 -1
  134. package/dist/custom-auth-path/custom_auth/get_account/interaction_client/CustomAuthSilentCacheClient.mjs +1 -1
  135. package/dist/custom-auth-path/custom_auth/index.mjs +1 -1
  136. package/dist/custom-auth-path/custom_auth/operating_context/CustomAuthOperatingContext.mjs +1 -1
  137. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/error_type/ResetPasswordError.mjs +1 -1
  138. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordResendCodeResult.mjs +1 -1
  139. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordStartResult.mjs +1 -1
  140. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordSubmitCodeResult.mjs +1 -1
  141. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/result/ResetPasswordSubmitPasswordResult.mjs +1 -1
  142. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordCodeRequiredState.mjs +1 -1
  143. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordCompletedState.mjs +1 -1
  144. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordFailedState.mjs +1 -1
  145. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordPasswordRequiredState.mjs +1 -1
  146. package/dist/custom-auth-path/custom_auth/reset_password/auth_flow/state/ResetPasswordState.mjs +1 -1
  147. package/dist/custom-auth-path/custom_auth/reset_password/interaction_client/ResetPasswordClient.mjs +1 -1
  148. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/SignInScenario.mjs +1 -1
  149. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/error_type/SignInError.mjs +1 -1
  150. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInResendCodeResult.mjs +1 -1
  151. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInResult.mjs +1 -1
  152. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInSubmitCodeResult.mjs +1 -1
  153. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/result/SignInSubmitPasswordResult.mjs +1 -1
  154. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInCodeRequiredState.mjs +1 -1
  155. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInCompletedState.mjs +1 -1
  156. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInContinuationState.mjs +1 -1
  157. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInFailedState.mjs +1 -1
  158. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInPasswordRequiredState.mjs +1 -1
  159. package/dist/custom-auth-path/custom_auth/sign_in/auth_flow/state/SignInState.mjs +1 -1
  160. package/dist/custom-auth-path/custom_auth/sign_in/interaction_client/SignInClient.mjs +1 -1
  161. package/dist/custom-auth-path/custom_auth/sign_in/interaction_client/result/SignInActionResult.mjs +1 -1
  162. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/error_type/SignUpError.mjs +1 -1
  163. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpResendCodeResult.mjs +1 -1
  164. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpResult.mjs +1 -1
  165. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitAttributesResult.mjs +1 -1
  166. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitCodeResult.mjs +1 -1
  167. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/result/SignUpSubmitPasswordResult.mjs +1 -1
  168. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpAttributesRequiredState.mjs +1 -1
  169. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpCodeRequiredState.mjs +1 -1
  170. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpCompletedState.mjs +1 -1
  171. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpFailedState.mjs +1 -1
  172. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpPasswordRequiredState.mjs +1 -1
  173. package/dist/custom-auth-path/custom_auth/sign_up/auth_flow/state/SignUpState.mjs +1 -1
  174. package/dist/custom-auth-path/custom_auth/sign_up/interaction_client/SignUpClient.mjs +1 -1
  175. package/dist/custom-auth-path/custom_auth/sign_up/interaction_client/result/SignUpActionResult.mjs +1 -1
  176. package/dist/custom-auth-path/encode/Base64Decode.mjs +1 -1
  177. package/dist/custom-auth-path/encode/Base64Encode.mjs +1 -1
  178. package/dist/custom-auth-path/error/BrowserAuthError.mjs +1 -1
  179. package/dist/custom-auth-path/error/BrowserAuthErrorCodes.mjs +1 -1
  180. package/dist/custom-auth-path/error/BrowserConfigurationAuthError.mjs +1 -1
  181. package/dist/custom-auth-path/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  182. package/dist/custom-auth-path/error/NativeAuthError.mjs +1 -1
  183. package/dist/custom-auth-path/error/NativeAuthErrorCodes.mjs +1 -1
  184. package/dist/custom-auth-path/event/EventHandler.mjs +1 -1
  185. package/dist/custom-auth-path/event/EventType.mjs +1 -1
  186. package/dist/custom-auth-path/interaction_client/BaseInteractionClient.mjs +1 -1
  187. package/dist/custom-auth-path/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  188. package/dist/custom-auth-path/interaction_client/PlatformAuthInteractionClient.mjs +1 -1
  189. package/dist/custom-auth-path/interaction_client/PopupClient.mjs +1 -1
  190. package/dist/custom-auth-path/interaction_client/RedirectClient.mjs +1 -1
  191. package/dist/custom-auth-path/interaction_client/SilentAuthCodeClient.mjs +1 -1
  192. package/dist/custom-auth-path/interaction_client/SilentCacheClient.mjs +1 -1
  193. package/dist/custom-auth-path/interaction_client/SilentIframeClient.d.ts +7 -0
  194. package/dist/custom-auth-path/interaction_client/SilentIframeClient.d.ts.map +1 -1
  195. package/dist/custom-auth-path/interaction_client/SilentIframeClient.mjs +49 -3
  196. package/dist/custom-auth-path/interaction_client/SilentIframeClient.mjs.map +1 -1
  197. package/dist/custom-auth-path/interaction_client/SilentRefreshClient.mjs +1 -1
  198. package/dist/custom-auth-path/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  199. package/dist/custom-auth-path/interaction_client/StandardInteractionClient.mjs +5 -1
  200. package/dist/custom-auth-path/interaction_client/StandardInteractionClient.mjs.map +1 -1
  201. package/dist/custom-auth-path/interaction_handler/InteractionHandler.mjs +1 -1
  202. package/dist/custom-auth-path/interaction_handler/SilentHandler.d.ts.map +1 -1
  203. package/dist/custom-auth-path/interaction_handler/SilentHandler.mjs +15 -2
  204. package/dist/custom-auth-path/interaction_handler/SilentHandler.mjs.map +1 -1
  205. package/dist/custom-auth-path/navigation/NavigationClient.mjs +1 -1
  206. package/dist/custom-auth-path/network/FetchClient.mjs +1 -1
  207. package/dist/custom-auth-path/operatingcontext/BaseOperatingContext.mjs +1 -1
  208. package/dist/custom-auth-path/operatingcontext/StandardOperatingContext.mjs +1 -1
  209. package/dist/custom-auth-path/packageMetadata.d.ts +1 -1
  210. package/dist/custom-auth-path/packageMetadata.mjs +2 -2
  211. package/dist/custom-auth-path/protocol/Authorize.mjs +1 -1
  212. package/dist/custom-auth-path/request/RequestHelpers.mjs +1 -1
  213. package/dist/custom-auth-path/response/ResponseHandler.mjs +1 -1
  214. package/dist/custom-auth-path/telemetry/BrowserPerformanceClient.d.ts +1 -0
  215. package/dist/custom-auth-path/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  216. package/dist/custom-auth-path/utils/BrowserConstants.mjs +1 -1
  217. package/dist/custom-auth-path/utils/BrowserProtocolUtils.mjs +1 -1
  218. package/dist/custom-auth-path/utils/BrowserUtils.mjs +1 -1
  219. package/dist/custom-auth-path/utils/Helpers.mjs +1 -1
  220. package/dist/custom-auth-path/utils/MsalFrameStatsUtils.d.ts +10 -0
  221. package/dist/custom-auth-path/utils/MsalFrameStatsUtils.d.ts.map +1 -1
  222. package/dist/custom-auth-path/utils/MsalFrameStatsUtils.mjs +5 -1
  223. package/dist/custom-auth-path/utils/MsalFrameStatsUtils.mjs.map +1 -1
  224. package/dist/custom_auth/CustomAuthConstants.d.ts +1 -1
  225. package/dist/encode/Base64Decode.mjs +1 -1
  226. package/dist/encode/Base64Encode.mjs +1 -1
  227. package/dist/error/BrowserAuthError.mjs +1 -1
  228. package/dist/error/BrowserAuthErrorCodes.mjs +1 -1
  229. package/dist/error/BrowserConfigurationAuthError.mjs +1 -1
  230. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +1 -1
  231. package/dist/error/NativeAuthError.mjs +1 -1
  232. package/dist/error/NativeAuthErrorCodes.mjs +1 -1
  233. package/dist/error/NestedAppAuthError.mjs +1 -1
  234. package/dist/event/EventHandler.mjs +1 -1
  235. package/dist/event/EventMessage.mjs +1 -1
  236. package/dist/event/EventType.mjs +1 -1
  237. package/dist/index.mjs +1 -1
  238. package/dist/interaction_client/BaseInteractionClient.mjs +1 -1
  239. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
  240. package/dist/interaction_client/PlatformAuthInteractionClient.mjs +1 -1
  241. package/dist/interaction_client/PopupClient.mjs +1 -1
  242. package/dist/interaction_client/RedirectClient.mjs +1 -1
  243. package/dist/interaction_client/SilentAuthCodeClient.mjs +1 -1
  244. package/dist/interaction_client/SilentCacheClient.mjs +1 -1
  245. package/dist/interaction_client/SilentIframeClient.d.ts +7 -0
  246. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  247. package/dist/interaction_client/SilentIframeClient.mjs +49 -3
  248. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  249. package/dist/interaction_client/SilentRefreshClient.mjs +1 -1
  250. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  251. package/dist/interaction_client/StandardInteractionClient.mjs +5 -1
  252. package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
  253. package/dist/interaction_handler/InteractionHandler.mjs +1 -1
  254. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  255. package/dist/interaction_handler/SilentHandler.mjs +15 -2
  256. package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
  257. package/dist/naa/BridgeError.mjs +1 -1
  258. package/dist/naa/BridgeProxy.mjs +1 -1
  259. package/dist/naa/BridgeStatusCode.mjs +1 -1
  260. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +1 -1
  261. package/dist/navigation/NavigationClient.mjs +1 -1
  262. package/dist/network/FetchClient.mjs +1 -1
  263. package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
  264. package/dist/operatingcontext/NestedAppOperatingContext.mjs +1 -1
  265. package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
  266. package/dist/operatingcontext/UnknownOperatingContext.mjs +1 -1
  267. package/dist/packageMetadata.d.ts +1 -1
  268. package/dist/packageMetadata.mjs +2 -2
  269. package/dist/protocol/Authorize.mjs +1 -1
  270. package/dist/request/RequestHelpers.mjs +1 -1
  271. package/dist/response/ResponseHandler.mjs +1 -1
  272. package/dist/telemetry/BrowserPerformanceClient.d.ts +1 -0
  273. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  274. package/dist/telemetry/BrowserPerformanceClient.mjs +10 -1
  275. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  276. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
  277. package/dist/utils/BrowserConstants.mjs +1 -1
  278. package/dist/utils/BrowserProtocolUtils.mjs +1 -1
  279. package/dist/utils/BrowserUtils.mjs +1 -1
  280. package/dist/utils/Helpers.mjs +1 -1
  281. package/dist/utils/MsalFrameStatsUtils.d.ts +10 -0
  282. package/dist/utils/MsalFrameStatsUtils.d.ts.map +1 -1
  283. package/dist/utils/MsalFrameStatsUtils.mjs +18 -2
  284. package/dist/utils/MsalFrameStatsUtils.mjs.map +1 -1
  285. package/lib/custom-auth-path/msal-custom-auth.cjs +375 -111
  286. package/lib/custom-auth-path/msal-custom-auth.cjs.map +1 -1
  287. package/lib/custom-auth-path/msal-custom-auth.js +375 -111
  288. package/lib/custom-auth-path/msal-custom-auth.js.map +1 -1
  289. package/lib/custom-auth-path/types/broker/nativeBroker/PlatformAuthDOMHandler.d.ts.map +1 -1
  290. package/lib/custom-auth-path/types/config/Configuration.d.ts +7 -0
  291. package/lib/custom-auth-path/types/config/Configuration.d.ts.map +1 -1
  292. package/lib/custom-auth-path/types/controllers/StandardController.d.ts +13 -2
  293. package/lib/custom-auth-path/types/controllers/StandardController.d.ts.map +1 -1
  294. package/lib/custom-auth-path/types/custom_auth/CustomAuthConstants.d.ts +1 -1
  295. package/lib/custom-auth-path/types/interaction_client/SilentIframeClient.d.ts +7 -0
  296. package/lib/custom-auth-path/types/interaction_client/SilentIframeClient.d.ts.map +1 -1
  297. package/lib/custom-auth-path/types/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  298. package/lib/custom-auth-path/types/interaction_handler/SilentHandler.d.ts.map +1 -1
  299. package/lib/custom-auth-path/types/packageMetadata.d.ts +1 -1
  300. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceClient.d.ts +1 -0
  301. package/lib/custom-auth-path/types/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  302. package/lib/custom-auth-path/types/utils/MsalFrameStatsUtils.d.ts +10 -0
  303. package/lib/custom-auth-path/types/utils/MsalFrameStatsUtils.d.ts.map +1 -1
  304. package/lib/msal-browser.cjs +408 -113
  305. package/lib/msal-browser.cjs.map +1 -1
  306. package/lib/msal-browser.js +408 -113
  307. package/lib/msal-browser.js.map +1 -1
  308. package/lib/msal-browser.min.js +64 -64
  309. package/lib/types/broker/nativeBroker/PlatformAuthDOMHandler.d.ts.map +1 -1
  310. package/lib/types/config/Configuration.d.ts +7 -0
  311. package/lib/types/config/Configuration.d.ts.map +1 -1
  312. package/lib/types/controllers/StandardController.d.ts +13 -2
  313. package/lib/types/controllers/StandardController.d.ts.map +1 -1
  314. package/lib/types/custom_auth/CustomAuthConstants.d.ts +1 -1
  315. package/lib/types/interaction_client/SilentIframeClient.d.ts +7 -0
  316. package/lib/types/interaction_client/SilentIframeClient.d.ts.map +1 -1
  317. package/lib/types/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  318. package/lib/types/interaction_handler/SilentHandler.d.ts.map +1 -1
  319. package/lib/types/packageMetadata.d.ts +1 -1
  320. package/lib/types/telemetry/BrowserPerformanceClient.d.ts +1 -0
  321. package/lib/types/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  322. package/lib/types/utils/MsalFrameStatsUtils.d.ts +10 -0
  323. package/lib/types/utils/MsalFrameStatsUtils.d.ts.map +1 -1
  324. package/package.json +2 -2
  325. package/src/broker/nativeBroker/PlatformAuthDOMHandler.ts +24 -13
  326. package/src/config/Configuration.ts +8 -0
  327. package/src/controllers/StandardController.ts +164 -39
  328. package/src/interaction_client/SilentIframeClient.ts +136 -0
  329. package/src/interaction_client/StandardInteractionClient.ts +12 -0
  330. package/src/interaction_handler/SilentHandler.ts +21 -1
  331. package/src/packageMetadata.ts +1 -1
  332. package/src/telemetry/BrowserPerformanceClient.ts +10 -0
  333. package/src/utils/MsalFrameStatsUtils.ts +27 -0
@@ -16,6 +16,7 @@ import {
16
16
  ProtocolMode,
17
17
  CommonAuthorizationUrlRequest,
18
18
  HttpMethod,
19
+ AuthorizeProtocol,
19
20
  } from "@azure/msal-common/browser";
20
21
  import { StandardInteractionClient } from "./StandardInteractionClient.js";
21
22
  import { BrowserConfiguration } from "../config/Configuration.js";
@@ -349,6 +350,141 @@ export class SilentIframeClient extends StandardInteractionClient {
349
350
  }
350
351
  }
351
352
 
353
+ /**
354
+ * Verifies SSO capability by making an iframe request to /authorize without exchanging the code for tokens.
355
+ * This is useful for verifying SSO capability in the background without the overhead of a full token exchange.
356
+ * @param request - The SSO silent request
357
+ * @returns true if SSO verification was successful with a valid authorization code, false otherwise
358
+ */
359
+ async verifySso(request: SsoSilentRequest): Promise<boolean> {
360
+ this.performanceClient.addQueueMeasurement(
361
+ PerformanceEvents.SilentIframeClientAcquireToken,
362
+ request.correlationId
363
+ );
364
+
365
+ const inputRequest = { ...request };
366
+ if (!inputRequest.prompt) {
367
+ inputRequest.prompt = PromptValue.NONE;
368
+ }
369
+
370
+ // Create silent request
371
+ const silentRequest: CommonAuthorizationUrlRequest = await invokeAsync(
372
+ this.initializeAuthorizationRequest.bind(this),
373
+ PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,
374
+ this.logger,
375
+ this.performanceClient,
376
+ request.correlationId
377
+ )(inputRequest, InteractionType.Silent);
378
+
379
+ const authClient = await invokeAsync(
380
+ this.createAuthCodeClient.bind(this),
381
+ PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,
382
+ this.logger,
383
+ this.performanceClient,
384
+ request.correlationId
385
+ )({
386
+ serverTelemetryManager: this.initializeServerTelemetryManager(
387
+ this.apiId
388
+ ),
389
+ requestAuthority: silentRequest.authority,
390
+ requestAzureCloudOptions: silentRequest.azureCloudOptions,
391
+ requestExtraQueryParameters: silentRequest.extraQueryParameters,
392
+ account: silentRequest.account,
393
+ });
394
+
395
+ const correlationId = silentRequest.correlationId;
396
+ const pkceCodes = await invokeAsync(
397
+ generatePkceCodes,
398
+ PerformanceEvents.GeneratePkceCodes,
399
+ this.logger,
400
+ this.performanceClient,
401
+ correlationId
402
+ )(this.performanceClient, this.logger, correlationId);
403
+
404
+ const requestWithPkce = {
405
+ ...silentRequest,
406
+ codeChallenge: pkceCodes.challenge,
407
+ };
408
+
409
+ // Create authorize request url
410
+ const navigateUrl = await invokeAsync(
411
+ Authorize.getAuthCodeRequestUrl,
412
+ PerformanceEvents.GetAuthCodeUrl,
413
+ this.logger,
414
+ this.performanceClient,
415
+ correlationId
416
+ )(
417
+ this.config,
418
+ authClient.authority,
419
+ requestWithPkce,
420
+ this.logger,
421
+ this.performanceClient
422
+ );
423
+
424
+ // Get the frame handle for the silent request - this triggers the SSO verification
425
+ const msalFrame = await invokeAsync(
426
+ initiateCodeRequest,
427
+ PerformanceEvents.SilentHandlerInitiateAuthRequest,
428
+ this.logger,
429
+ this.performanceClient,
430
+ correlationId
431
+ )(
432
+ navigateUrl,
433
+ this.performanceClient,
434
+ this.logger,
435
+ correlationId,
436
+ this.config.system.navigateFrameWait
437
+ );
438
+
439
+ const responseType = this.config.auth.OIDCOptions.serverResponseType;
440
+ // Monitor the iframe for the response
441
+ const responseString = await invokeAsync(
442
+ monitorIframeForHash,
443
+ PerformanceEvents.SilentHandlerMonitorIframeForHash,
444
+ this.logger,
445
+ this.performanceClient,
446
+ correlationId
447
+ )(
448
+ msalFrame,
449
+ this.config.system.iframeHashTimeout,
450
+ this.config.system.pollIntervalMilliseconds,
451
+ this.performanceClient,
452
+ this.logger,
453
+ correlationId,
454
+ responseType
455
+ );
456
+
457
+ // Deserialize the response
458
+ const serverParams = invoke(
459
+ ResponseHandler.deserializeResponse,
460
+ PerformanceEvents.DeserializeResponse,
461
+ this.logger,
462
+ this.performanceClient,
463
+ correlationId
464
+ )(responseString, responseType, this.logger);
465
+
466
+ // Validate the response - this checks for errors and validates state
467
+ AuthorizeProtocol.validateAuthorizationResponse(
468
+ serverParams,
469
+ silentRequest.state
470
+ );
471
+
472
+ // Verify a valid authorization code is present
473
+ if (!serverParams.code) {
474
+ this.logger.warning(
475
+ "SSO verification response did not contain an authorization code",
476
+ correlationId
477
+ );
478
+ return false;
479
+ }
480
+
481
+ this.logger.verbose(
482
+ "SSO verification completed successfully with valid authorization code - skipped token exchange",
483
+ correlationId
484
+ );
485
+ return true;
486
+ }
487
+
352
488
  /**
353
489
  * Currently Unsupported
354
490
  */
@@ -305,6 +305,18 @@ export abstract class StandardInteractionClient extends BaseInteractionClient {
305
305
  );
306
306
 
307
307
  const redirectUri = this.getRedirectUri(request.redirectUri);
308
+ if (
309
+ new URL(redirectUri).origin !== new URL(window.location.href).origin
310
+ ) {
311
+ this.logger.warning(
312
+ "The origin of the redirect URI does not match the origin of the current page. This is likely to cause issues with authentication.",
313
+ this.correlationId
314
+ );
315
+ this.performanceClient.addFields(
316
+ { isRedirectUriCrossOrigin: true },
317
+ this.correlationId
318
+ );
319
+ }
308
320
  const browserState: BrowserStateObject = {
309
321
  interactionType: interactionType,
310
322
  };
@@ -127,6 +127,16 @@ export async function monitorIframeForHash(
127
127
  PerformanceEvents.SilentHandlerMonitorIframeForHash,
128
128
  correlationId
129
129
  );
130
+ performanceClient.addFields(
131
+ {
132
+ iframePollIntervalMs: pollIntervalMilliseconds,
133
+ iframeTimeoutMs: timeout,
134
+ },
135
+ correlationId
136
+ );
137
+
138
+ let totalTickCount = 0;
139
+ let crossOriginTickCount = 0;
130
140
 
131
141
  return new Promise<string>((resolve, reject) => {
132
142
  if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {
@@ -149,6 +159,7 @@ export async function monitorIframeForHash(
149
159
  }, timeout);
150
160
 
151
161
  const intervalId = window.setInterval(() => {
162
+ totalTickCount++;
152
163
  let href: string = "";
153
164
  const contentWindow = iframe.contentWindow;
154
165
  try {
@@ -158,7 +169,9 @@ export async function monitorIframeForHash(
158
169
  * since we need the interval to keep running while on STS UI.
159
170
  */
160
171
  href = contentWindow ? contentWindow.location.href : "";
161
- } catch (e) {}
172
+ } catch (e) {
173
+ crossOriginTickCount++;
174
+ }
162
175
 
163
176
  if (!href || href === "about:blank") {
164
177
  return;
@@ -177,6 +190,13 @@ export async function monitorIframeForHash(
177
190
  resolve(responseString);
178
191
  }, pollIntervalMilliseconds);
179
192
  }).finally(() => {
193
+ performanceClient.addFields(
194
+ {
195
+ iframeTickCount: totalTickCount,
196
+ crossOriginTickCount: crossOriginTickCount,
197
+ },
198
+ correlationId
199
+ );
180
200
  invoke(
181
201
  removeHiddenIframe,
182
202
  PerformanceEvents.RemoveHiddenIframe,
@@ -1,3 +1,3 @@
1
1
  /* eslint-disable header/header */
2
2
  export const name = "@azure/msal-browser";
3
- export const version = "4.28.2";
3
+ export const version = "4.29.1";
@@ -20,6 +20,7 @@ import { name, version } from "../packageMetadata.js";
20
20
  import { BrowserCacheLocation } from "../utils/BrowserConstants.js";
21
21
  import * as BrowserCrypto from "../crypto/BrowserCrypto.js";
22
22
  import { BROWSER_PERF_ENABLED_KEY } from "../cache/CacheKeys.js";
23
+ import { getNetworkInfo } from "../utils/MsalFrameStatsUtils.js";
23
24
 
24
25
  /**
25
26
  * Returns browser performance measurement module if session flag is enabled. Returns undefined otherwise.
@@ -100,6 +101,10 @@ export class BrowserPerformanceClient
100
101
  return document.visibilityState?.toString() || null;
101
102
  }
102
103
 
104
+ private getOnlineStatus(): boolean | null {
105
+ return typeof navigator !== "undefined" ? navigator.onLine : null;
106
+ }
107
+
103
108
  private deleteIncompleteSubMeasurements(
104
109
  inProgressEvent: InProgressPerformanceEvent
105
110
  ): void {
@@ -140,6 +145,7 @@ export class BrowserPerformanceClient
140
145
  ): InProgressPerformanceEvent {
141
146
  // Capture page visibilityState and then invoke start/end measurement
142
147
  const startPageVisibility = this.getPageVisibility();
148
+ const startOnlineStatus = this.getOnlineStatus();
143
149
  const inProgressEvent = super.startMeasurement(
144
150
  measureName,
145
151
  correlationId
@@ -167,12 +173,16 @@ export class BrowserPerformanceClient
167
173
  error?: unknown,
168
174
  account?: AccountInfo
169
175
  ): PerformanceEvent | null => {
176
+ const networkInfo = getNetworkInfo();
170
177
  const res = inProgressEvent.end(
171
178
  {
172
179
  ...event,
173
180
  startPageVisibility,
181
+ startOnlineStatus,
174
182
  endPageVisibility: this.getPageVisibility(),
175
183
  durationMs: getPerfDurationMs(startTime),
184
+ networkEffectiveType: networkInfo.effectiveType,
185
+ networkRtt: networkInfo.rtt,
176
186
  },
177
187
  error,
178
188
  account
@@ -5,6 +5,33 @@
5
5
 
6
6
  import { InProgressPerformanceEvent, Logger } from "@azure/msal-common/browser";
7
7
 
8
+ interface NetworkConnection {
9
+ effectiveType?: string;
10
+ rtt?: number;
11
+ }
12
+
13
+ /**
14
+ * Get network information for telemetry purposes. This is only supported in Chromium-based browsers.
15
+ * @returns Network connection information, or an empty object if not available.
16
+ */
17
+ export function getNetworkInfo(): NetworkConnection {
18
+ if (typeof window === "undefined" || !window.navigator) {
19
+ return {};
20
+ }
21
+ const connection: NetworkConnection | undefined =
22
+ "connection" in window.navigator
23
+ ? (
24
+ window.navigator as Navigator & {
25
+ connection: NetworkConnection;
26
+ }
27
+ ).connection
28
+ : undefined;
29
+ return {
30
+ effectiveType: connection?.effectiveType,
31
+ rtt: connection?.rtt,
32
+ };
33
+ }
34
+
8
35
  export function collectInstanceStats(
9
36
  currentClientId: string,
10
37
  performanceEvent: InProgressPerformanceEvent,