AzureAD / microsoft-authentication-library-for-js

Microsoft Authentication Library (MSAL) for JS
http://aka.ms/aadv2
MIT License
3.65k stars 2.64k forks source link

Keep me signed in not working angular13 #6268

Closed joserhonFA closed 1 year ago

joserhonFA commented 1 year ago

Core Library

MSAL.js (@azure/msal-browser)

Core Library Version

2.26.0

Wrapper Library

MSAL Angular (@azure/msal-angular)

Wrapper Library Version

2.3.2

Public or Confidential Client?

Public

Description

I am using Angular 13 and I have the keep me signed in option activated in my B2C User flow But for some reason it is not working and after the refresh token is expired after 24 hours, the app is not keeping the user signed in. As an additional note, I have only tried on my localhost. I haven't tried in a deployed environment. Also, I am able to see the x-ms-cpim-sso cookie with an expiration of 3 days after I sign in when I check the keep me signed in checkbox at the moment I sign in.

The token request fails with a 400 error and I get the following response: error: "invalid_grant" error_description: "AADB2C90080: The provided grant has expired. Please re-authenticate and try again. Current time: 1690384873, Grant issued time: 1690382095, Grant expiration time: 1690384441\r\nCorrelation ID: a579bbf3-6d39-4263-b1f5-dc45ead042ef\r\nTimestamp: 2023-07-26 15:21:13Z\r\n"

Error Message

@azure/msal-angular@2.3.3 : Error - Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve. (anonymous) @ localhost:4200/vendor.js:31061 loggerCallback @ localhost:4200/main.js:485 Logger.executeCallback @ localhost:4200/vendor.js:16750 Logger.logMessage @ localhost:4200/vendor.js:16743 Logger.error @ localhost:4200/vendor.js:16757 (anonymous) @ localhost:4200/vendor.js:407 (anonymous) @ localhost:4200/vendor.js:40997 OperatorSubscriber._error @ localhost:4200/vendor.js:40860 error @ localhost:4200/vendor.js:39772 (anonymous) @ localhost:4200/vendor.js:40603 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 invokeTask @ localhost:4200/polyfills.js:3606 ZoneTask.invoke @ localhost:4200/polyfills.js:3591 data.args. @ localhost:4200/polyfills.js:5473 setInterval (async) scheduleTask @ localhost:4200/polyfills.js:5475 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMacroTask @ localhost:4200/polyfills.js:3359 scheduleMacroTaskWithCurrentZone @ localhost:4200/polyfills.js:3798 (anonymous) @ localhost:4200/polyfills.js:5517 proto. @ localhost:4200/polyfills.js:4088 (anonymous) @ localhost:4200/vendor.js:22089 (anonymous) @ localhost:4200/vendor.js:9533 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 SilentHandler.monitorIframeForHash @ localhost:4200/vendor.js:9523 (anonymous) @ localhost:4200/vendor.js:8639 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 step @ localhost:4200/vendor.js:777 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.getSubtleCryptoDigest @ localhost:4200/vendor.js:4747 (anonymous) @ localhost:4200/vendor.js:4649 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.sha256Digest @ localhost:4200/vendor.js:4645 (anonymous) @ localhost:4200/vendor.js:5356 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodeChallengeFromVerifier @ localhost:4200/vendor.js:5350 (anonymous) @ localhost:4200/vendor.js:5317 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodes @ localhost:4200/vendor.js:5311 (anonymous) @ localhost:4200/vendor.js:4976 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 CryptoOps.generatePkceCodes @ localhost:4200/vendor.js:4974 (anonymous) @ localhost:4200/vendor.js:8843 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 StandardInteractionClient.initializeAuthorizationCodeRequest @ localhost:4200/vendor.js:8837 (anonymous) @ localhost:4200/vendor.js:8629 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 SilentIframeClient.silentTokenHelper @ localhost:4200/vendor.js:8624 (anonymous) @ localhost:4200/vendor.js:8584 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9788 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendPostRequestAsync @ localhost:4200/vendor.js:9779 (anonymous) @ localhost:4200/vendor.js:16950 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 NetworkManager.sendPostRequest @ localhost:4200/vendor.js:16941 (anonymous) @ localhost:4200/vendor.js:14771 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 BaseClient.executePostToTokenEndpoint @ localhost:4200/vendor.js:14767 (anonymous) @ localhost:4200/vendor.js:14962 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9740 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendGetRequestAsync @ localhost:4200/vendor.js:9734 (anonymous) @ localhost:4200/vendor.js:11474 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.getEndpointMetadataFromNetwork @ localhost:4200/vendor.js:11462 (anonymous) @ localhost:4200/vendor.js:11405 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.updateEndpointMetadata @ localhost:4200/vendor.js:11390 (anonymous) @ localhost:4200/vendor.js:11368 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 invokeTask @ localhost:4200/polyfills.js:3606 invokeTask @ localhost:4200/polyfills.js:4763 globalCallback @ localhost:4200/polyfills.js:4806 globalZoneAwareCallback @ localhost:4200/polyfills.js:4827 load (async) customScheduleGlobal @ localhost:4200/polyfills.js:4911 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleEventTask @ localhost:4200/polyfills.js:3362 (anonymous) @ localhost:4200/polyfills.js:5066 (anonymous) @ localhost:4200/vendor.js:22188 (anonymous) @ localhost:4200/vendor.js:31431 (anonymous) @ localhost:4200/vendor.js:84638 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 doInnerSub @ localhost:4200/vendor.js:41493 outerNext @ localhost:4200/vendor.js:41488 OperatorSubscriber._next @ localhost:4200/vendor.js:40850 next @ localhost:4200/vendor.js:39763 (anonymous) @ localhost:4200/vendor.js:40590 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 mergeInternals @ localhost:4200/vendor.js:41524 (anonymous) @ localhost:4200/vendor.js:41564 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41270 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41410 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:40088 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 lastValueFrom @ localhost:4200/vendor.js:40085 loadConfig @ localhost:4200/main.js:1213 (anonymous) @ localhost:4200/main.js:1223 runInitializers @ localhost:4200/vendor.js:110365 (anonymous) @ localhost:4200/vendor.js:111720 _callAndReportToErrorHandler @ localhost:4200/vendor.js:111828 (anonymous) @ localhost:4200/vendor.js:111718 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 run @ localhost:4200/vendor.js:110998 bootstrapModuleFactory @ localhost:4200/vendor.js:111697 (anonymous) @ localhost:4200/vendor.js:111750 invoke @ localhost:4200/polyfills.js:3487 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 then @ localhost:4200/polyfills.js:4565 bootstrapModule @ localhost:4200/vendor.js:111750 14431 @ localhost:4200/main.js:8996 webpack_require @ localhost:4200/runtime.js:23 webpack_exec @ localhost:4200/main.js:9004 (anonymous) @ localhost:4200/main.js:9005 webpack_require__.O @ localhost:4200/runtime.js:60 (anonymous) @ localhost:4200/main.js:9006 webpackJsonpCallback @ localhost:4200/runtime.js:304 (anonymous) @ localhost:4200/main.js:2 5 ERROR Error: Uncaught (in promise): BrowserAuthError: interaction_in_progress: Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors. BrowserAuthError: interaction_in_progress: Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.

Msal Logs

[Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Event callback registered with id: c4d0200b-acd1-483e-9662-4ae88a8e089a [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Adding account storage listener. [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MsalRedirectComponent activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:initializeStart [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:initializeEnd [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - handleRedirectPromise called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:handleRedirectStart [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - BroadcastService - msal:handleRedirectStart results in setting inProgress from startup to handleRedirect [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - handleRedirectPromise has been called for the first time, storing the promise [Wed, 26 Jul 2023 15:21:12 GMT] : [24d21806-626f-4f84-84bf-72247a090d41] : msal.js.browser@2.27.0 : Verbose - initializeServerTelemetryManager called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:handleRedirectEnd [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - BroadcastService - msal:handleRedirectEnd results in setting inProgress from handleRedirect to none [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called for the first time, storing active request [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:acquireTokenStart [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent - attempting to acquire token from web flow [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Initializing BaseAuthRequest [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Authentication Scheme wasn't explicitly set in request, defaulting to "Bearer" request [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [bd97bea1-5e03-485b-84d1-6190c5b201ed] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [bd97bea1-5e03-485b-84d1-6190c5b201ed] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [02dc03b4-f2fa-4996-bafe-743776e4685f] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [02dc03b4-f2fa-4996-bafe-743776e4685f] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - initializeServerTelemetryManager called [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getClientConfiguration called [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getDiscoveredAuthority called [Wed, 26 Jul 2023 15:21:12 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Creating discovered authority with configured authority [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Guard - canActivate [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Guard activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - handleRedirectPromise called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - handleRedirectPromise has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Guard - at least 1 account exists, can activate or load [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [e6b92c94-697f-443b-9412-2ba329ce052c] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [e6b92c94-697f-443b-9412-2ba329ce052c] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [96d91397-3ec1-43c2-a3ef-3c211662fa6e] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [96d91397-3ec1-43c2-a3ef-3c211662fa6e] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - MSAL Interceptor activated [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - getting scopes for endpoint [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - active account selected [Wed, 26 Jul 2023 15:21:12 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:12 GMT] : [f4b9c477-ab5f-41ee-b15d-6d85cafbe22a] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent called [Wed, 26 Jul 2023 15:21:12 GMT] : [f4b9c477-ab5f-41ee-b15d-6d85cafbe22a] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenSilent has been called previously, returning the result from the first call [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Silent auth client created [Wed, 26 Jul 2023 15:21:13 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:acquireTokenFromNetworkStart [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Initializing BaseAuthRequest [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Authentication Scheme set to "Bearer" as configured in Auth request [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - initializeServerTelemetryManager called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getClientConfiguration called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getDiscoveredAuthority called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Creating discovered authority with configured authority [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Refresh token client created [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - Refresh token expired or invalid, attempting acquire token by iframe [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - acquireTokenByIframe called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - initializeAuthorizationRequest called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getRedirectUri called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Initializing BaseAuthRequest [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Authentication Scheme set to "Bearer" as configured in Auth request [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Setting validated request account [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - initializeServerTelemetryManager called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getClientConfiguration called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - getDiscoveredAuthority called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Creating discovered authority with configured authority [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Auth code client created [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - initializeAuthorizationRequest called [Wed, 26 Jul 2023 15:21:13 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-common@7.1.0 : Verbose - createAuthCodeUrlQueryString: Adding login_hint from account [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - validateAndExtractStateFromHash called [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - Returning state from hash [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : msal.js.browser@2.27.0 : Verbose - InteractionHandler.handleCodeResponse called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:acquireTokenFailure [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - PerformanceClient: Measurement found for acquireTokenSilent 2 [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - PerformanceClient: Submeasurement for acquireTokenSilent already exists for standardInteractionClientGetDiscoveredAuthority, ignoring [Wed, 26 Jul 2023 15:21:16 GMT] : [bc9594cd-1e71-405a-ac3b-756ebfef07fe] : @azure/msal-browser@2.27.0 : Verbose - PerformanceClient: Emitting performance events [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [51da7517-9be6-406e-a7c1-c9a199b5a0a7] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - getAllAccounts called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - Emitting event to callback c4d0200b-acd1-483e-9662-4ae88a8e089a: msal:acquireTokenStart [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - BroadcastService - msal:acquireTokenStart results in setting inProgress from none to acquireToken [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - initializeAuthorizationRequest called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - getRedirectUri called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - Initializing BaseAuthRequest [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - Authentication Scheme wasn't explicitly set in request, defaulting to "Bearer" request [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [98043183-bead-4a8e-87b4-5c0607ff489d] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [ffb1984c-5436-4c14-8075-52ab0981a8d6] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [7849fff8-4011-4398-9388-325140839216] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [49e32aa4-ce2f-49b7-bf6a-be4876c2fae0] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Verbose - Interceptor - error acquiring token silently, acquiring by redirect [Wed, 26 Jul 2023 15:21:16 GMT] : [4d2f7641-1356-4348-9f47-fb733ddedbf9] : @azure/msal-browser@2.27.0 : Verbose - acquireTokenRedirect called [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightBrowserEnvironmentCheck started [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-browser@2.27.0 : Verbose - preflightInteractiveRequest called, validating app environment [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - Setting validated request account [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - initializeServerTelemetryManager called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - initializeAuthorizationRequest called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - getClientConfiguration called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - getDiscoveredAuthority called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - Creating discovered authority with configured authority [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - Auth code client created [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : @azure/msal-common@7.1.0 : Verbose - createAuthCodeUrlQueryString: Adding login_hint from account [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - RedirectHandler.initiateAuthRequest called [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page [Wed, 26 Jul 2023 15:21:16 GMT] : [4054727f-26e1-4d86-b7e0-6bfab13705f3] : msal.js.browser@2.27.0 : Verbose - RedirectHandler.initiateAuthRequest: Navigating window to navigate url

MSAL Configuration

{
    auth: {
      clientId: configService.config.auth.clientId,
      authority: configService.config.auth.authority,
      redirectUri: configService.config.auth.redirectUri,
      knownAuthorities: configService.config.auth.knownAuthorities,
      postLogoutRedirectUri: '/'
    },
    cache: {
      cacheLocation: BrowserCacheLocation.LocalStorage,
      storeAuthStateInCookie: isIE // set to true for IE 11
    },
    system: {
      loggerOptions: {
        loggerCallback: (level, message, containsPii) => {
          if (containsPii) {
            return;
          }
          console.log(message)
        },
        logLevel: LogLevel.Verbose,
        piiLoggingEnabled: isIE
      }
    }
  }

Relevant Code Snippets

App module:
export function MSALInstanceFactory(configService: ConfigurationService): IPublicClientApplication {
  return new PublicClientApplication({
    auth: {
      clientId: configService.config.auth.clientId,
      authority: configService.config.auth.authority,
      redirectUri: configService.config.auth.redirectUri,
      knownAuthorities: configService.config.auth.knownAuthorities,
      postLogoutRedirectUri: '/'
    },
    cache: {
      cacheLocation: BrowserCacheLocation.LocalStorage,
      storeAuthStateInCookie: isIE
    },
    system: {
      loggerOptions: {
        loggerCallback: (level, message, containsPii) => {
          if (containsPii) {return;}
          console.log(message)
        },
        logLevel: LogLevel.Verbose,
        piiLoggingEnabled: isIE
      }}});
}
export function MSALGuardConfigFactory(configService: ConfigurationService): MsalGuardConfiguration {
  return {
    interactionType: InteractionType.Redirect,
    authRequest: { scopes: [...configService.config.auth.scopes]}
  };
}
export function MSALInterceptorConfigFactory(configService: ConfigurationService): MsalInterceptorConfiguration {
  const protectedResourceMap = new Map<string, Array<string>>();
  protectedResourceMap.set(configService.config.graphQLUrl, configService.config?.auth.scopes);
  return {
    interactionType: InteractionType.Redirect,
    protectedResourceMap
  };
}
@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,
    CoreModule,
    MsalModule,
    GraphQLModule,
    HttpClientModule
  ],
  providers: [
    {
      provide: HTTP_INTERCEPTORS,
      useClass: MsalInterceptor,
      multi: true
    },
    {
      provide: APP_INITIALIZER,
      useFactory: configFactory,
      deps: [ConfigurationService],
      multi: true
    },
    {
      provide: MSAL_INSTANCE,
      useFactory: MSALInstanceFactory,
      deps: [ConfigurationService]
    },
    {
      provide: MSAL_GUARD_CONFIG,
      useFactory: MSALGuardConfigFactory,
      deps: [ConfigurationService]
    },
    {
      provide: MSAL_INTERCEPTOR_CONFIG,
      useFactory: MSALInterceptorConfigFactory,
      deps: [ConfigurationService]
    },
    MsalService,
    MsalGuard,
    MsalBroadcastService
  ],
  bootstrap: [AppComponent, MsalRedirectComponent]
})
constructor(...
    @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,
    private msalBroadcastService: MsalBroadcastService,
    private msalService: MsalService
  ) { }
This is part of my app.component
ngOnInit(): void {
    this.isIframe = window !== window.parent && !window.opener;
    this.setLoginDisplay();
    this.msalService.instance.enableAccountStorageEvents();
    this.msalBroadcastService.msalSubject$
      .pipe(
        filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED),
        takeUntil(this._destroying$)
      )
      .subscribe(() => {
        if (this.msalService.instance.getAllAccounts().length === 0) {
          window.location.pathname = '/';
        } else {
          this.setLoginDisplay();
        }
      });
    this.msalBroadcastService.inProgress$
      .pipe(
        filter((status: InteractionStatus) => status === InteractionStatus.None),
        takeUntil(this._destroying$)
      )
      .subscribe((res) => {
        this.setLoginDisplay();
        this.checkAndSetActiveAccount();
        this.role = this.authService.userRole;
      });
    this.msalBroadcastService.msalSubject$
      .pipe(
        filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS ||
        msg.eventType === EventType.ACQUIRE_TOKEN_SUCCESS ||
        msg.eventType === EventType.SSO_SILENT_SUCCESS),
        takeUntil(this._destroying$)
      )
      .subscribe((result: EventMessage) => {
        const payload = result.payload as AuthenticationResult;
        const idtoken = payload.idTokenClaims as IdTokenClaimsWithPolicyId;
        if (idtoken.acr === 'B2C_1_signupandsignin' || idtoken.tfp === 'B2C_1_signupandsignin') {
          console.log('success set active account', result);
          this.msalService.instance.setActiveAccount(payload.account);
        }
        return result;
      });
    this.msalBroadcastService.msalSubject$
      .pipe(
        filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE)
      )
      .subscribe((result: EventMessage) => {
        if (result.error && result.error.message.indexOf('AADB2C90118') > -1) {
          const resetPasswordFlowRequest: RedirectRequest | PopupRequest = {
            authority: 'https://authorityDomain/domainName/B2C_1_passwordreset',
            scopes: []
          };
          this.login(resetPasswordFlowRequest);
        }
      });
  }
  setLoginDisplay(): void {
    this.loginDisplay = this.msalService.instance.getAllAccounts().length > 0;
  }
  checkAndSetActiveAccount(): void {
    const activeAccount = this.msalService.instance.getActiveAccount();
    if (!activeAccount && this.msalService.instance.getAllAccounts().length > 0) {
      const accounts = this.msalService.instance.getAllAccounts();
      this.msalService.instance.setActiveAccount(accounts[0]);
    }
  }

  login(userFlowRequest?: RedirectRequest | PopupRequest): void {
    if (this.msalGuardConfig.interactionType === InteractionType.Popup) {
      if (this.msalGuardConfig.authRequest) {
        this.msalService.loginPopup({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as PopupRequest)
          .subscribe((response: AuthenticationResult) => {
            this.msalService.instance.setActiveAccount(response.account);
          });
      } else {
        this.msalService.loginPopup(userFlowRequest)
          .subscribe((response: AuthenticationResult) => {
            this.msalService.instance.setActiveAccount(response.account);
          });
      }
    } else {
      if (this.msalGuardConfig.authRequest) {
        this.msalService.loginRedirect({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as RedirectRequest);
      } else {
        this.msalService.loginRedirect(userFlowRequest);
      }
    }
  }

Reproduction Steps

  1. Go to http://localhost:4200/
  2. Sign in with Checking the Keep me signed in checkbox
  3. User is redirected to main page successfully and is able to make api requests.
  4. After 24 hours it is redirected to the sign in page again and token refresh fails

Expected Behavior

After 24 hours if users tries to do something that requires an api call, it is NOT redirected to the sign in page again and it's able to continue navigating for 3 days (b2c setting in my user flow)

Identity Provider

Azure B2C Basic Policy

Browsers Affected (Select all that apply)

Chrome, Firefox, Edge, Safari

Regression

No response

Source

External (Customer)

joserhonFA commented 1 year ago

I was not able to paste the full error logs so here is the complete error logs: 6 [Wed, 26 Jul 2023 15:21:16 GMT] : @azure/msal-angular@2.3.3 : Error - Interceptor - acquireTokenSilent rejected with error. Invoking interaction to resolve. (anonymous) @ localhost:4200/vendor.js:31061 loggerCallback @ localhost:4200/main.js:485 Logger.executeCallback @ localhost:4200/vendor.js:16750 Logger.logMessage @ localhost:4200/vendor.js:16743 Logger.error @ localhost:4200/vendor.js:16757 (anonymous) @ localhost:4200/vendor.js:407 (anonymous) @ localhost:4200/vendor.js:40997 OperatorSubscriber._error @ localhost:4200/vendor.js:40860 error @ localhost:4200/vendor.js:39772 (anonymous) @ localhost:4200/vendor.js:40603 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 invokeTask @ localhost:4200/polyfills.js:3606 ZoneTask.invoke @ localhost:4200/polyfills.js:3591 data.args. @ localhost:4200/polyfills.js:5473 setInterval (async) scheduleTask @ localhost:4200/polyfills.js:5475 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMacroTask @ localhost:4200/polyfills.js:3359 scheduleMacroTaskWithCurrentZone @ localhost:4200/polyfills.js:3798 (anonymous) @ localhost:4200/polyfills.js:5517 proto. @ localhost:4200/polyfills.js:4088 (anonymous) @ localhost:4200/vendor.js:22089 (anonymous) @ localhost:4200/vendor.js:9533 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 SilentHandler.monitorIframeForHash @ localhost:4200/vendor.js:9523 (anonymous) @ localhost:4200/vendor.js:8639 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 step @ localhost:4200/vendor.js:777 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.getSubtleCryptoDigest @ localhost:4200/vendor.js:4747 (anonymous) @ localhost:4200/vendor.js:4649 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.sha256Digest @ localhost:4200/vendor.js:4645 (anonymous) @ localhost:4200/vendor.js:5356 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodeChallengeFromVerifier @ localhost:4200/vendor.js:5350 (anonymous) @ localhost:4200/vendor.js:5317 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodes @ localhost:4200/vendor.js:5311 (anonymous) @ localhost:4200/vendor.js:4976 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 CryptoOps.generatePkceCodes @ localhost:4200/vendor.js:4974 (anonymous) @ localhost:4200/vendor.js:8843 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 StandardInteractionClient.initializeAuthorizationCodeRequest @ localhost:4200/vendor.js:8837 (anonymous) @ localhost:4200/vendor.js:8629 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 SilentIframeClient.silentTokenHelper @ localhost:4200/vendor.js:8624 (anonymous) @ localhost:4200/vendor.js:8584 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9788 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendPostRequestAsync @ localhost:4200/vendor.js:9779 (anonymous) @ localhost:4200/vendor.js:16950 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 NetworkManager.sendPostRequest @ localhost:4200/vendor.js:16941 (anonymous) @ localhost:4200/vendor.js:14771 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 BaseClient.executePostToTokenEndpoint @ localhost:4200/vendor.js:14767 (anonymous) @ localhost:4200/vendor.js:14962 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9740 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendGetRequestAsync @ localhost:4200/vendor.js:9734 (anonymous) @ localhost:4200/vendor.js:11474 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.getEndpointMetadataFromNetwork @ localhost:4200/vendor.js:11462 (anonymous) @ localhost:4200/vendor.js:11405 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.updateEndpointMetadata @ localhost:4200/vendor.js:11390 (anonymous) @ localhost:4200/vendor.js:11368 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 invokeTask @ localhost:4200/polyfills.js:3606 invokeTask @ localhost:4200/polyfills.js:4763 globalCallback @ localhost:4200/polyfills.js:4806 globalZoneAwareCallback @ localhost:4200/polyfills.js:4827 load (async) customScheduleGlobal @ localhost:4200/polyfills.js:4911 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleEventTask @ localhost:4200/polyfills.js:3362 (anonymous) @ localhost:4200/polyfills.js:5066 (anonymous) @ localhost:4200/vendor.js:22188 (anonymous) @ localhost:4200/vendor.js:31431 (anonymous) @ localhost:4200/vendor.js:84638 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 doInnerSub @ localhost:4200/vendor.js:41493 outerNext @ localhost:4200/vendor.js:41488 OperatorSubscriber._next @ localhost:4200/vendor.js:40850 next @ localhost:4200/vendor.js:39763 (anonymous) @ localhost:4200/vendor.js:40590 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 mergeInternals @ localhost:4200/vendor.js:41524 (anonymous) @ localhost:4200/vendor.js:41564 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41270 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41410 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:40088 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 lastValueFrom @ localhost:4200/vendor.js:40085 loadConfig @ localhost:4200/main.js:1213 (anonymous) @ localhost:4200/main.js:1223 runInitializers @ localhost:4200/vendor.js:110365 (anonymous) @ localhost:4200/vendor.js:111720 _callAndReportToErrorHandler @ localhost:4200/vendor.js:111828 (anonymous) @ localhost:4200/vendor.js:111718 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 run @ localhost:4200/vendor.js:110998 bootstrapModuleFactory @ localhost:4200/vendor.js:111697 (anonymous) @ localhost:4200/vendor.js:111750 invoke @ localhost:4200/polyfills.js:3487 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 then @ localhost:4200/polyfills.js:4565 bootstrapModule @ localhost:4200/vendor.js:111750 14431 @ localhost:4200/main.js:8996 webpack_require @ localhost:4200/runtime.js:23 webpack_exec @ localhost:4200/main.js:9004 (anonymous) @ localhost:4200/main.js:9005 webpack_require.O @ localhost:4200/runtime.js:60 (anonymous) @ localhost:4200/main.js:9006 webpackJsonpCallback @ localhost:4200/runtime.js:304 (anonymous) @ localhost:4200/main.js:2 5 ERROR Error: Uncaught (in promise): BrowserAuthError: interaction_in_progress: Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors. BrowserAuthError: interaction_in_progress: Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors. at BrowserAuthError.AuthError [as constructor] (localhost:4200/vendor.js:15661:24) at new BrowserAuthError (localhost:4200/vendor.js:5790:28) at BrowserAuthError.createInteractionInProgressError (localhost:4200/vendor.js:5857:16) at BrowserCacheManager.setInteractionInProgress (localhost:4200/vendor.js:3832:97) at ClientApplication.preflightInteractiveRequest (localhost:4200/vendor.js:1775:27) at ClientApplication.preflightBrowserEnvironmentCheck (localhost:4200/vendor.js:1758:12) at PublicClientApplication. (localhost:4200/vendor.js:1134:14) at step (localhost:4200/vendor.js:804:23) at Object.next (localhost:4200/vendor.js:785:53) at localhost:4200/vendor.js:778:71 at new ZoneAwarePromise (localhost:4200/polyfills.js:4542:29) at awaiter (localhost:4200/vendor.js:774:12) at ClientApplication.acquireTokenRedirect (localhost:4200/vendor.js:1126:73) at MsalService.acquireTokenRedirect (localhost:4200/vendor.js:88:73) at MsalInterceptor.acquireTokenInteractively (localhost:4200/vendor.js:436:26) at localhost:4200/vendor.js:408:25 at localhost:4200/vendor.js:40997:94 at OperatorSubscriber._error (localhost:4200/vendor.js:40860:21) at OperatorSubscriber.error (localhost:4200/vendor.js:39772:18) at localhost:4200/vendor.js:40603:26 at _ZoneDelegate.invoke (localhost:4200/polyfills.js:3487:26) at Object.onInvoke (localhost:4200/vendor.js:111144:33) at _ZoneDelegate.invoke (localhost:4200/polyfills.js:3486:52) at Zone.run (localhost:4200/polyfills.js:3249:43) at localhost:4200/polyfills.js:4390:36 at _ZoneDelegate.invokeTask (localhost:4200/polyfills.js:3521:31) at Object.onInvokeTask (localhost:4200/vendor.js:111131:33) at _ZoneDelegate.invokeTask (localhost:4200/polyfills.js:3520:60) at Zone.runTask (localhost:4200/polyfills.js:3293:47) at drainMicroTaskQueue (localhost:4200/polyfills.js:3700:35) at invokeTask (localhost:4200/polyfills.js:3606:21) at ZoneTask.invoke (localhost:4200/polyfills.js:3591:48) at data.args. (localhost:4200/polyfills.js:5473:32) at resolvePromise (localhost:4200/polyfills.js:4326:31) at new ZoneAwarePromise (localhost:4200/polyfills.js:4545:17) at awaiter (localhost:4200/vendor.js:774:12) at ClientApplication.acquireTokenRedirect (localhost:4200/vendor.js:1126:73) at MsalService.acquireTokenRedirect (localhost:4200/vendor.js:88:73) at MsalInterceptor.acquireTokenInteractively (localhost:4200/vendor.js:436:26) at localhost:4200/vendor.js:408:25 at localhost:4200/vendor.js:40997:94 at OperatorSubscriber._error (localhost:4200/vendor.js:40860:21) at OperatorSubscriber.error (localhost:4200/vendor.js:39772:18) at localhost:4200/vendor.js:40603:26 at _ZoneDelegate.invoke (localhost:4200/polyfills.js:3487:26) at Object.onInvoke (localhost:4200/vendor.js:111144:33) at _ZoneDelegate.invoke (localhost:4200/polyfills.js:3486:52) at Zone.run (localhost:4200/polyfills.js:3249:43) at localhost:4200/polyfills.js:4390:36 at _ZoneDelegate.invokeTask (localhost:4200/polyfills.js:3521:31) at Object.onInvokeTask (localhost:4200/vendor.js:111131:33) at _ZoneDelegate.invokeTask (localhost:4200/polyfills.js:3520:60) at Zone.runTask (localhost:4200/polyfills.js:3293:47) at drainMicroTaskQueue (localhost:4200/polyfills.js:3700:35) at invokeTask (localhost:4200/polyfills.js:3606:21) at ZoneTask.invoke (localhost:4200/polyfills.js:3591:48) at data.args. (localhost:4200/polyfills.js:5473:32) (anonymous) @ localhost:4200/vendor.js:31061 defaultErrorLogger @ localhost:4200/vendor.js:92030 handleError @ localhost:4200/vendor.js:92077 next @ localhost:4200/vendor.js:111710 next @ localhost:4200/vendor.js:39823 _next @ localhost:4200/vendor.js:39792 next @ localhost:4200/vendor.js:39763 (anonymous) @ localhost:4200/vendor.js:39608 errorContext @ localhost:4200/vendor.js:43482 next @ localhost:4200/vendor.js:39601 emit @ localhost:4200/vendor.js:108019 (anonymous) @ localhost:4200/vendor.js:111170 invoke @ localhost:4200/polyfills.js:3487 run @ localhost:4200/polyfills.js:3249 runOutsideAngular @ localhost:4200/vendor.js:111043 onHandleError @ localhost:4200/vendor.js:111170 handleError @ localhost:4200/polyfills.js:3491 runGuarded @ localhost:4200/polyfills.js:3262 api.microtaskDrainDone @ localhost:4200/polyfills.js:4187 drainMicroTaskQueue @ localhost:4200/polyfills.js:3707 invokeTask @ localhost:4200/polyfills.js:3606 ZoneTask.invoke @ localhost:4200/polyfills.js:3591 data.args. @ localhost:4200/polyfills.js:5473 setInterval (async) scheduleTask @ localhost:4200/polyfills.js:5475 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMacroTask @ localhost:4200/polyfills.js:3359 scheduleMacroTaskWithCurrentZone @ localhost:4200/polyfills.js:3798 (anonymous) @ localhost:4200/polyfills.js:5517 proto. @ localhost:4200/polyfills.js:4088 (anonymous) @ localhost:4200/vendor.js:22089 (anonymous) @ localhost:4200/vendor.js:9533 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 SilentHandler.monitorIframeForHash @ localhost:4200/vendor.js:9523 (anonymous) @ localhost:4200/vendor.js:8639 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 step @ localhost:4200/vendor.js:777 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.getSubtleCryptoDigest @ localhost:4200/vendor.js:4747 (anonymous) @ localhost:4200/vendor.js:4649 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 BrowserCrypto.sha256Digest @ localhost:4200/vendor.js:4645 (anonymous) @ localhost:4200/vendor.js:5356 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodeChallengeFromVerifier @ localhost:4200/vendor.js:5350 (anonymous) @ localhost:4200/vendor.js:5317 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 PkceGenerator.generateCodes @ localhost:4200/vendor.js:5311 (anonymous) @ localhost:4200/vendor.js:4976 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 CryptoOps.generatePkceCodes @ localhost:4200/vendor.js:4974 (anonymous) @ localhost:4200/vendor.js:8843 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 StandardInteractionClient.initializeAuthorizationCodeRequest @ localhost:4200/vendor.js:8837 (anonymous) @ localhost:4200/vendor.js:8629 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 SilentIframeClient.silentTokenHelper @ localhost:4200/vendor.js:8624 (anonymous) @ localhost:4200/vendor.js:8584 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9788 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendPostRequestAsync @ localhost:4200/vendor.js:9779 (anonymous) @ localhost:4200/vendor.js:16950 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 NetworkManager.sendPostRequest @ localhost:4200/vendor.js:16941 (anonymous) @ localhost:4200/vendor.js:14771 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 BaseClient.executePostToTokenEndpoint @ localhost:4200/vendor.js:14767 (anonymous) @ localhost:4200/vendor.js:14962 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 resolvePromise @ localhost:4200/polyfills.js:4284 (anonymous) @ localhost:4200/polyfills.js:4233 (anonymous) @ localhost:4200/vendor.js:773 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 adopt @ localhost:4200/vendor.js:773 step @ localhost:4200/vendor.js:777 fulfilled @ localhost:4200/vendor.js:775 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 resolvePromise @ localhost:4200/polyfills.js:4317 (anonymous) @ localhost:4200/polyfills.js:4233 Promise.then (async) (anonymous) @ localhost:4200/polyfills.js:4611 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 Ctor.then @ localhost:4200/polyfills.js:4610 (anonymous) @ localhost:4200/vendor.js:31089 (anonymous) @ localhost:4200/vendor.js:9740 step @ localhost:4200/vendor.js:804 (anonymous) @ localhost:4200/vendor.js:785 (anonymous) @ localhost:4200/vendor.js:778 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:774 FetchClient.sendGetRequestAsync @ localhost:4200/vendor.js:9734 (anonymous) @ localhost:4200/vendor.js:11474 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.getEndpointMetadataFromNetwork @ localhost:4200/vendor.js:11462 (anonymous) @ localhost:4200/vendor.js:11405 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 (anonymous) @ localhost:4200/vendor.js:10873 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 awaiter @ localhost:4200/vendor.js:10869 Authority.updateEndpointMetadata @ localhost:4200/vendor.js:11390 (anonymous) @ localhost:4200/vendor.js:11368 step @ localhost:4200/vendor.js:10899 (anonymous) @ localhost:4200/vendor.js:10880 fulfilled @ localhost:4200/vendor.js:10870 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 onInvokeTask @ localhost:4200/vendor.js:111131 invokeTask @ localhost:4200/polyfills.js:3520 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 invokeTask @ localhost:4200/polyfills.js:3606 invokeTask @ localhost:4200/polyfills.js:4763 globalCallback @ localhost:4200/polyfills.js:4806 globalZoneAwareCallback @ localhost:4200/polyfills.js:4827 load (async) customScheduleGlobal @ localhost:4200/polyfills.js:4911 scheduleTask @ localhost:4200/polyfills.js:3508 onScheduleTask @ localhost:4200/polyfills.js:3398 scheduleTask @ localhost:4200/polyfills.js:3501 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleEventTask @ localhost:4200/polyfills.js:3362 (anonymous) @ localhost:4200/polyfills.js:5066 (anonymous) @ localhost:4200/vendor.js:22188 (anonymous) @ localhost:4200/vendor.js:31431 (anonymous) @ localhost:4200/vendor.js:84638 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 doInnerSub @ localhost:4200/vendor.js:41493 outerNext @ localhost:4200/vendor.js:41488 OperatorSubscriber._next @ localhost:4200/vendor.js:40850 next @ localhost:4200/vendor.js:39763 (anonymous) @ localhost:4200/vendor.js:40590 _trySubscribe @ localhost:4200/vendor.js:39405 (anonymous) @ localhost:4200/vendor.js:39399 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 mergeInternals @ localhost:4200/vendor.js:41524 (anonymous) @ localhost:4200/vendor.js:41564 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41270 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:41410 (anonymous) @ localhost:4200/vendor.js:43786 (anonymous) @ localhost:4200/vendor.js:39394 errorContext @ localhost:4200/vendor.js:43482 subscribe @ localhost:4200/vendor.js:39390 (anonymous) @ localhost:4200/vendor.js:40088 ZoneAwarePromise @ localhost:4200/polyfills.js:4542 lastValueFrom @ localhost:4200/vendor.js:40085 loadConfig @ localhost:4200/main.js:1213 (anonymous) @ localhost:4200/main.js:1223 runInitializers @ localhost:4200/vendor.js:110365 (anonymous) @ localhost:4200/vendor.js:111720 _callAndReportToErrorHandler @ localhost:4200/vendor.js:111828 (anonymous) @ localhost:4200/vendor.js:111718 invoke @ localhost:4200/polyfills.js:3487 onInvoke @ localhost:4200/vendor.js:111144 invoke @ localhost:4200/polyfills.js:3486 run @ localhost:4200/polyfills.js:3249 run @ localhost:4200/vendor.js:110998 bootstrapModuleFactory @ localhost:4200/vendor.js:111697 (anonymous) @ localhost:4200/vendor.js:111750 invoke @ localhost:4200/polyfills.js:3487 run @ localhost:4200/polyfills.js:3249 (anonymous) @ localhost:4200/polyfills.js:4390 invokeTask @ localhost:4200/polyfills.js:3521 runTask @ localhost:4200/polyfills.js:3293 drainMicroTaskQueue @ localhost:4200/polyfills.js:3700 Promise.then (async) nativeScheduleMicroTask @ localhost:4200/polyfills.js:3676 scheduleMicroTask @ localhost:4200/polyfills.js:3687 scheduleTask @ localhost:4200/polyfills.js:3511 scheduleTask @ localhost:4200/polyfills.js:3336 scheduleMicroTask @ localhost:4200/polyfills.js:3356 scheduleResolveOrReject @ localhost:4200/polyfills.js:4380 then @ localhost:4200/polyfills.js:4565 bootstrapModule @ localhost:4200/vendor.js:111750 14431 @ localhost:4200/main.js:8996 webpack_require @ localhost:4200/runtime.js:23 webpack_exec @ localhost:4200/main.js:9004 (anonymous) @ localhost:4200/main.js:9005 __webpack_require__.O @ localhost:4200/runtime.js:60 (anonymous) @ localhost:4200/main.js:9006 webpackJsonpCallback @ localhost:4200/runtime.js:304 (anonymous) @ localhost:4200/main.js:2

sameerag commented 1 year ago

@joserhonFA The RT issued for MSAL JS is typically valid for 24 hrs which I see is reflected in your app's behavior. If you select KMSI, it is expected that the RT can be renewed offline, as long as the session is kept active on the service end. Looks like in this case, the silent call is failing.

We provision folks to set up a cacheLookupPolicy that will make a network call silently to be able to keep the session hydrated. Can you please check the docs on token lifetimes and please apply the policy as needed?

joserhonFA commented 1 year ago

@sameerag thanks for your reply. So if I'm understanding that correctly, the msal interceptor doesn't handle that by default. I need to check if the silent call fails after 24 hours and then call the acquireTokenSilent() with the correct cacheLookupPolicy to be able to refresh the refresh token?

microsoft-github-policy-service[bot] commented 1 year ago

This issue requires attention from the MSAL.js team and has not seen activity in 5 days. @hectormmg please follow up.

hectormmg commented 1 year ago

@joserhonFA the defaut tcache lookup policy does what @sameerag described above. It will attempt to renew the expired refresh token silently if the session is still alive and MSAL has enough session data (loginHint or sid which are obtained from the ID token) to make the request silently. However, if the session is terminated (doesn't exist at the time of the request) or the session data is unavailable (because the ID token claims sid or loginHint aren't enabled), that request will fail and MSAL will throw an InteractionRequired error, which your application has to catch and call an interactive API (have the user log in again).

joserhonFA commented 1 year ago

@hectormmg but in my case the request is failing after 24 hours when the refresh token expired. I am able to see that there is an account in the msal instance, but I don't understand why the refresh token is not being refreshed and I don't think the session is terminated. How do I enable the id token claims sid or loginHint in the session data ? Or if there is something, could you point me base on the code snippet I provided what is missing to make the keep me signed in to work please?

hectormmg commented 1 year ago

@joserhonFA please look at the docs on SSO for more information.

joserhonFA commented 1 year ago

@hectormmg I set up the loginHint in the request but I get an error:

ServerError: server_error: AADB2C: Invalid input: The email field is required. Correlation ID: 6c5a22f2-2954-40f7-b54c-70c9ac407cc1 Timestamp: 2023-08-08 14:31:02Z

at ServerError.AuthError [as constructor] (AuthError.js:27:1)
at new ServerError (ServerError.js:16:1)
at ResponseHandler.validateServerAuthorizationCodeResponse (ResponseHandler.js:57:1)
at AuthorizationCodeClient.handleFragmentResponse (AuthorizationCodeClient.js:97:1)
at SilentHandler.<anonymous> (InteractionHandler.js:41:1)
at step (_tslib.js:75:1)
at Object.next (_tslib.js:56:46)
at _tslib.js:49:1
at new ZoneAwarePromise (zone.js:1427:1)
at __awaiter (_tslib.js:45:1)
at InteractionHandler.handleCodeResponseFromHash (InteractionHandler.js:27:25)
at SilentIframeClient.<anonymous> (SilentIframeClient.js:130:1)
at step (_tslib.js:75:1)
at Object.next (_tslib.js:56:46)
at fulfilled (_tslib.js:46:43)
at _ZoneDelegate.invoke (zone.js:372:1)
at Object.onInvoke (core.mjs:25608:1)
at _ZoneDelegate.invoke (zone.js:371:1)
at Zone.run (zone.js:134:1)
at zone.js:1275:1
at _ZoneDelegate.invokeTask (zone.js:406:1)
at Object.onInvokeTask (core.mjs:25595:1)
at _ZoneDelegate.invokeTask (zone.js:405:1)
at Zone.runTask (zone.js:178:1)
at drainMicroTaskQueue (zone.js:585:1)
at invokeTask (zone.js:491:1)
at ZoneTask.invoke (zone.js:476:1)
at data.args.<computed> (zone.js:2358:1)

instrument.js:107

jo-arroyo commented 1 year ago

@joserhonFA What are you passing as the loginHint? Are you getting it from the active account?

Please see MSAL Angular's FAQ on active accounts.

joserhonFA commented 1 year ago

@jo-arroyo yes I am, after your comment I made a change to my code to double check and I get the "Invalid input: The email field is required." error and when catching the ssoSilent request I got the following error: _

"InteractionRequiredAuthError: interaction_required: AADB2C90077: User does not have an existing session and request prompt parameter has a value of 'None'."

_

I made this change in my code to call the ssoSilent method when the ACQUIRE_TOKEN_FAILURE event occurs, so I have this:

this.msalBroadcastService.msalSubject$
      .pipe(
        filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE)
      )
      .subscribe(async (result: EventMessage) => {
        console.log('RESULT FAILURE', JSON.stringify(result), result.error?.message);
        const request = {
          scopes: ['scope_url'],
          loginHint: this.activeAccount.username // For v1 endpoints, use upn from idToken claims
        };
        console.log('REQUEST', request);

        try {
          const loginResponse = await this.msalService.instance.ssoSilent(request);
          console.log('LOGINRESP SSO', loginResponse);
        } catch (err) {
          console.log('CATCH EEERROOR login SSO', err);
          if (err instanceof InteractionRequiredAuthError) {
            const loginResponse = await this.msalService.instance.loginPopup(request).catch(error => {
              console.log('EEERROOR login popup', error);
            });
            console.log('LOGINRESP POPUP', loginResponse);
          } else {
            console.log('EEERROOR login SSO', err);
          }
        }
      });

with one of the console logs I was able to confirm that my email was correct in the active account.

The activeAccount variable is being set in the None Interaction like this:

this.msalBroadcastService.inProgress$
      .pipe(
        filter((status: InteractionStatus) => status === InteractionStatus.None),
        takeUntil(this._destroying$)
      )
      .subscribe((res) => {
        this.setLoginDisplay();
        this.checkAndSetActiveAccount();
        this.activeAccount = this.authService.getAllAccounts()[0];
      });

Not sure what is wrong or if I'm missing something.

tnorling commented 1 year ago

First of all, you should only use ssoSilent if you do not already have an account object. Use acquireTokenSilent for most cases as this will utilize cache and refresh token.

As for the error when you expect the session is still valid - Is your browser blocking 3P cookies? It's unfortunately one of the downsides of the ssoSilent flow (and the last leg of acquireTokenSilent when the RT is expired). With more and more browsers starting to block 3P cookies by default we expect ssoSilent to become less and less successful

joserhonFA commented 1 year ago

@tnorling I added the ssoSilent call after @hectormmg said I should use that. I am using the MSALGuard and MSALInterceptor but I haven't been able to make the Keep me Signed In functionality to work, or that only works if the browser enables 3P cookies?. What you say is that I should use acquireTokenSilent instead? should I use the same payload as the ssoSilent? which is:

const request = {
          scopes: ['scope_url'],
          loginHint: this.activeAccount.username
        };

That call is correctly placed when the Event ACQUIRE_TOKEN_FAILURE occurs? I think I have tried using the acquireTokenSilent method before at some point but I can try again or maybe move the call to a different place if that's the case.

tnorling commented 1 year ago

Apologies for the confusion.

That call is correctly placed when the Event ACQUIRE_TOKEN_FAILURE occurs?

acquireTokenSilent will invoke ssoSilent under the hood, if needed. Invoking ssoSilent (or acquireTokenSilent for that matter) again on a failure is redundant and not expected to succeed.

should I use the same payload as the ssoSilent?

The request object is fine, though it's usually better to pass the entire account if you have it rather than loginHint i.e.

const request = {
  scopes: ['scope_url'],
  account: this.activeAccount
}

that only works if the browser enables 3P cookies?.

If 3P cookies are blocked, ssoSilent will fail 100% of the time. acquireTokenSilent will still be able to retrieve tokens from the cache and exchange a refresh token for new access tokens, but as soon as the refresh token expires (24 hrs) you will need to invoke interaction again.

joserhonFA commented 1 year ago

@tnorling thanks for the clarification and quick response. I guess I'm still confused on where I should call acquireTokenSilent? or it's not needed at all if I'm using MSALInterceptor?

If 3P cookies are blocked, ssoSilent will fail 100% of the time. acquireTokenSilent will still be able to retrieve tokens from the cache and exchange a refresh token for new access tokens, but as soon as the refresh token expires (24 hrs) you will need to invoke interaction again.

When you say I need to invoke interaction again it means that the user has to login again, entering credentials even if they checked they checked the Keep Me Signed In box? Or calling acquireTokenRedirect() should refresh the refresh token without making the user to enter credentials again?

tnorling commented 1 year ago

I guess I'm still confused on where I should call acquireTokenSilent? or it's not needed at all if I'm using MSALInterceptor?

The MSALInterceptor invokes acquireTokenSilent under the hood. You do not need to invoke it directly if you are using the interceptor.

When you say I need to invoke interaction again it means that the user has to login again, entering credentials even if they checked they checked the Keep Me Signed In box? Or calling acquireTokenRedirect() should refresh the refresh token without making the user to enter credentials again?

Whether the user needs to interact with the page or not and what sort of interaction they need to provide is decided by the STS based on a number of factors, including but not limited, to KMSI. In an ideal scenario, yes, the redirect can complete without requiring the user to re-enter their credentials, but it is never guaranteed.

joserhonFA commented 1 year ago

@tnorling I see what you mean and I appreciate all the clarifications you have provided, but now I'm kind of back to the beginning of my initial question here. Because I have the KMSI option activated in b2C and when I log in I can see that the cookie expiration date is after 3 days (that's the time I set up in b2c). image

So I'm not sure what needs to happen in order to make this work. After the refresh token is expired I'm always redirected to the login page no matter what and I have to re enter their credentials.

tnorling commented 1 year ago

Unfortunately, that's a question the MSAL.js team is not going to be able to answer. Like I said before, whether you are prompted for credentials depends on many factors, KMSI on its own does not guarantee you will be able to sign back in silently. You can open a support ticket with B2C and they should be able to help you figure out which condition is causing the re-auth. They will likely need a network trace so have that ready to go to expedite the process.

joserhonFA commented 1 year ago

thanks @tnorling I appreciate your help. I'll do that

BrandonSchreck commented 9 months ago

thanks @tnorling I appreciate your help. I'll do that

Can you link the ticket with Azure B2C here? I'm having a similar issue.

joserhonFA commented 9 months ago

@BrandonSchreck you can find the ticket here (https://learn.microsoft.com/en-us/answers/questions/1346866/ad-b2c-keep-me-signed-in-not-working?comment=answer-1302254&page=1#comment-1353510), although it was not helpful. My issue was solved after I switched to use custom policies because the email was not being passed to my api connector when refreshing the refresh token.