@azure/msal-browser 2.37.0 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.js +33 -33
- package/dist/app/IPublicClientApplication.js.map +1 -1
- package/dist/app/PublicClientApplication.d.ts +198 -24
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.js +263 -220
- package/dist/app/PublicClientApplication.js.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +5 -4
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.js +118 -124
- package/dist/broker/nativeBroker/NativeMessageHandler.js.map +1 -1
- package/dist/broker/nativeBroker/NativeRequest.d.ts +4 -4
- package/dist/broker/nativeBroker/NativeRequest.d.ts.map +1 -1
- package/dist/broker/nativeBroker/NativeResponse.d.ts +4 -4
- package/dist/broker/nativeBroker/NativeResponse.d.ts.map +1 -1
- package/dist/cache/AsyncMemoryStorage.d.ts.map +1 -1
- package/dist/cache/AsyncMemoryStorage.js +83 -152
- package/dist/cache/AsyncMemoryStorage.js.map +1 -1
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +420 -412
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.d.ts.map +1 -1
- package/dist/cache/BrowserStorage.js +19 -19
- package/dist/cache/BrowserStorage.js.map +1 -1
- package/dist/cache/CryptoKeyStore.d.ts.map +1 -1
- package/dist/cache/CryptoKeyStore.js +26 -36
- package/dist/cache/CryptoKeyStore.js.map +1 -1
- package/dist/cache/DatabaseStorage.d.ts.map +1 -1
- package/dist/cache/DatabaseStorage.js +127 -191
- package/dist/cache/DatabaseStorage.js.map +1 -1
- package/dist/cache/ITokenCache.d.ts.map +1 -1
- package/dist/cache/MemoryStorage.d.ts.map +1 -1
- package/dist/cache/MemoryStorage.js +18 -19
- package/dist/cache/MemoryStorage.js.map +1 -1
- package/dist/cache/TokenCache.d.ts +1 -1
- package/dist/cache/TokenCache.d.ts.map +1 -1
- package/dist/cache/TokenCache.js +55 -49
- package/dist/cache/TokenCache.js.map +1 -1
- package/dist/config/Configuration.d.ts +8 -8
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.js +53 -31
- package/dist/config/Configuration.js.map +1 -1
- package/dist/controllers/ControllerFactory.d.ts +10 -0
- package/dist/controllers/ControllerFactory.d.ts.map +1 -0
- package/dist/controllers/ControllerFactory.js +47 -0
- package/dist/controllers/ControllerFactory.js.map +1 -0
- package/dist/controllers/IController.d.ts +67 -0
- package/dist/controllers/IController.d.ts.map +1 -0
- package/dist/{app/ClientApplication.d.ts → controllers/StandardController.d.ts} +96 -15
- package/dist/controllers/StandardController.d.ts.map +1 -0
- package/dist/controllers/StandardController.js +1299 -0
- package/dist/controllers/StandardController.js.map +1 -0
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.js +36 -60
- package/dist/crypto/BrowserCrypto.js.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +1 -1
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +93 -151
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.d.ts.map +1 -1
- package/dist/crypto/GuidGenerator.js +36 -25
- package/dist/crypto/GuidGenerator.js.map +1 -1
- package/dist/crypto/ISubtleCrypto.d.ts.map +1 -1
- package/dist/crypto/ModernBrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/ModernBrowserCrypto.js +20 -44
- package/dist/crypto/ModernBrowserCrypto.js.map +1 -1
- package/dist/crypto/MsBrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/MsBrowserCrypto.js +65 -89
- package/dist/crypto/MsBrowserCrypto.js.map +1 -1
- package/dist/crypto/MsrBrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/MsrBrowserCrypto.js +23 -47
- package/dist/crypto/MsrBrowserCrypto.js.map +1 -1
- package/dist/crypto/PkceGenerator.d.ts.map +1 -1
- package/dist/crypto/PkceGenerator.js +28 -49
- package/dist/crypto/PkceGenerator.js.map +1 -1
- package/dist/crypto/SignedHttpRequest.d.ts +1 -1
- package/dist/crypto/SignedHttpRequest.d.ts.map +1 -1
- package/dist/crypto/SignedHttpRequest.js +15 -37
- package/dist/crypto/SignedHttpRequest.js.map +1 -1
- package/dist/encode/Base64Decode.d.ts.map +1 -1
- package/dist/encode/Base64Decode.js +32 -33
- package/dist/encode/Base64Decode.js.map +1 -1
- package/dist/encode/Base64Encode.d.ts.map +1 -1
- package/dist/encode/Base64Encode.js +34 -35
- package/dist/encode/Base64Encode.js.map +1 -1
- package/dist/error/BrowserAuthError.d.ts +1 -1
- package/dist/error/BrowserAuthError.d.ts.map +1 -1
- package/dist/error/BrowserAuthError.js +161 -163
- package/dist/error/BrowserAuthError.js.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.d.ts.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.js +32 -36
- package/dist/error/BrowserConfigurationAuthError.js.map +1 -1
- package/dist/error/NativeAuthError.d.ts +1 -1
- package/dist/error/NativeAuthError.d.ts.map +1 -1
- package/dist/error/NativeAuthError.js +26 -27
- package/dist/error/NativeAuthError.js.map +1 -1
- package/dist/event/EventHandler.d.ts.map +1 -1
- package/dist/event/EventHandler.js +33 -33
- package/dist/event/EventHandler.js.map +1 -1
- package/dist/event/EventMessage.d.ts +5 -5
- package/dist/event/EventMessage.d.ts.map +1 -1
- package/dist/event/EventMessage.js +18 -14
- package/dist/event/EventMessage.js.map +1 -1
- package/dist/event/EventType.js +1 -1
- package/dist/event/EventType.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +92 -123
- package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +6 -10
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.js +336 -393
- package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
- package/dist/interaction_client/PopupClient.d.ts +1 -1
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.js +224 -246
- package/dist/interaction_client/PopupClient.js.map +1 -1
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.js +244 -292
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.js +50 -63
- package/dist/interaction_client/SilentAuthCodeClient.js.map +1 -1
- package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentCacheClient.js +50 -81
- package/dist/interaction_client/SilentCacheClient.js.map +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentIframeClient.js +107 -125
- package/dist/interaction_client/SilentIframeClient.js.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.js +44 -72
- package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.js +144 -180
- package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.js +84 -110
- package/dist/interaction_handler/InteractionHandler.js.map +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
- package/dist/interaction_handler/RedirectHandler.js +105 -122
- package/dist/interaction_handler/RedirectHandler.js.map +1 -1
- package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
- package/dist/interaction_handler/SilentHandler.js +76 -65
- package/dist/interaction_handler/SilentHandler.js.map +1 -1
- package/dist/internals.js +1 -1
- package/dist/internals.js.map +1 -1
- package/dist/navigation/NavigationClient.d.ts.map +1 -1
- package/dist/navigation/NavigationClient.js +11 -14
- package/dist/navigation/NavigationClient.js.map +1 -1
- package/dist/navigation/NavigationOptions.d.ts +1 -1
- package/dist/navigation/NavigationOptions.d.ts.map +1 -1
- package/dist/network/FetchClient.d.ts.map +1 -1
- package/dist/network/FetchClient.js +66 -96
- package/dist/network/FetchClient.js.map +1 -1
- package/dist/network/XhrClient.d.ts.map +1 -1
- package/dist/network/XhrClient.js +38 -51
- package/dist/network/XhrClient.js.map +1 -1
- package/dist/operatingcontext/BaseOperatingContext.d.ts +41 -0
- package/dist/operatingcontext/BaseOperatingContext.d.ts.map +1 -0
- package/dist/operatingcontext/BaseOperatingContext.js +53 -0
- package/dist/operatingcontext/BaseOperatingContext.js.map +1 -0
- package/dist/operatingcontext/StandardOperatingContext.d.ts +26 -0
- package/dist/operatingcontext/StandardOperatingContext.d.ts.map +1 -0
- package/dist/operatingcontext/StandardOperatingContext.js +50 -0
- package/dist/operatingcontext/StandardOperatingContext.js.map +1 -0
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +26 -0
- package/dist/operatingcontext/TeamsAppOperatingContext.d.ts.map +1 -0
- package/dist/operatingcontext/TeamsAppOperatingContext.js +49 -0
- package/dist/operatingcontext/TeamsAppOperatingContext.js.map +1 -0
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.d.ts.map +1 -1
- package/dist/packageMetadata.js +3 -3
- package/dist/packageMetadata.js.map +1 -1
- package/dist/request/AuthorizationCodeRequest.d.ts +1 -1
- package/dist/request/AuthorizationCodeRequest.d.ts.map +1 -1
- package/dist/request/AuthorizationUrlRequest.d.ts +1 -1
- package/dist/request/AuthorizationUrlRequest.d.ts.map +1 -1
- package/dist/request/EndSessionPopupRequest.d.ts +1 -1
- package/dist/request/EndSessionPopupRequest.d.ts.map +1 -1
- package/dist/request/EndSessionRequest.d.ts +1 -1
- package/dist/request/EndSessionRequest.d.ts.map +1 -1
- package/dist/request/PopupRequest.d.ts +1 -1
- package/dist/request/PopupRequest.d.ts.map +1 -1
- package/dist/request/PopupWindowAttributes.d.ts +3 -3
- package/dist/request/PopupWindowAttributes.d.ts.map +1 -1
- package/dist/request/RedirectRequest.d.ts +1 -1
- package/dist/request/RedirectRequest.d.ts.map +1 -1
- package/dist/request/SilentRequest.d.ts +1 -1
- package/dist/request/SilentRequest.d.ts.map +1 -1
- package/dist/request/SsoSilentRequest.d.ts +1 -1
- package/dist/request/SsoSilentRequest.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.d.ts +1 -1
- package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.js +62 -57
- package/dist/telemetry/BrowserPerformanceClient.js.map +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.js +30 -31
- package/dist/telemetry/BrowserPerformanceMeasurement.js.map +1 -1
- package/dist/utils/BrowserConstants.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.js +10 -10
- package/dist/utils/BrowserConstants.js.map +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
- package/dist/utils/BrowserProtocolUtils.js +9 -12
- package/dist/utils/BrowserProtocolUtils.js.map +1 -1
- package/dist/utils/BrowserStringUtils.d.ts.map +1 -1
- package/dist/utils/BrowserStringUtils.js +83 -49
- package/dist/utils/BrowserStringUtils.js.map +1 -1
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +51 -49
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MathUtils.d.ts.map +1 -1
- package/dist/utils/MathUtils.js +6 -9
- package/dist/utils/MathUtils.js.map +1 -1
- package/package.json +17 -16
- package/dist/_virtual/_tslib.js +0 -117
- package/dist/_virtual/_tslib.js.map +0 -1
- package/dist/app/ClientApplication.d.ts.map +0 -1
- package/dist/app/ClientApplication.js +0 -1053
- package/dist/app/ClientApplication.js.map +0 -1
- package/dist/index.cjs.js +0 -18080
- package/dist/index.cjs.js.map +0 -1
- package/lib/msal-browser.js +0 -18086
- package/lib/msal-browser.js.map +0 -1
- package/lib/msal-browser.min.js +0 -70
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser
|
|
1
|
+
/*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
|
|
2
2
|
'use strict';
|
|
3
|
-
import {
|
|
4
|
-
import { UrlString, AuthError, PerformanceEvents, Constants, ThrottlingUtils, ProtocolUtils } from '@azure/msal-common';
|
|
3
|
+
import { PerformanceEvents, Constants, AuthError, UrlString, ProtocolUtils, ThrottlingUtils } from '@azure/msal-common';
|
|
5
4
|
import { StandardInteractionClient } from './StandardInteractionClient.js';
|
|
6
|
-
import {
|
|
5
|
+
import { InteractionType, ApiId, TemporaryCacheKeys } from '../utils/BrowserConstants.js';
|
|
7
6
|
import { RedirectHandler } from '../interaction_handler/RedirectHandler.js';
|
|
8
7
|
import { BrowserUtils } from '../utils/BrowserUtils.js';
|
|
9
8
|
import { EventType } from '../event/EventType.js';
|
|
@@ -15,339 +14,292 @@ import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandle
|
|
|
15
14
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
16
15
|
* Licensed under the MIT License.
|
|
17
16
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
_this.nativeStorage = nativeStorageImpl;
|
|
23
|
-
return _this;
|
|
17
|
+
class RedirectClient extends StandardInteractionClient {
|
|
18
|
+
constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {
|
|
19
|
+
super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);
|
|
20
|
+
this.nativeStorage = nativeStorageImpl;
|
|
24
21
|
}
|
|
25
22
|
/**
|
|
26
23
|
* Redirects the page to the /authorize endpoint of the IDP
|
|
27
24
|
* @param request
|
|
28
25
|
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
navigateUrl = _a.sent();
|
|
67
|
-
redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);
|
|
68
|
-
this.logger.verbosePii("Redirect start page: " + redirectStartPage);
|
|
69
|
-
// Clear temporary cache if the back button is clicked during the redirect flow.
|
|
70
|
-
window.addEventListener("pageshow", handleBackButton);
|
|
71
|
-
return [4 /*yield*/, interactionHandler.initiateAuthRequest(navigateUrl, {
|
|
72
|
-
navigationClient: this.navigationClient,
|
|
73
|
-
redirectTimeout: this.config.system.redirectNavigationTimeout,
|
|
74
|
-
redirectStartPage: redirectStartPage,
|
|
75
|
-
onRedirectNavigate: request.onRedirectNavigate
|
|
76
|
-
})];
|
|
77
|
-
case 6:
|
|
78
|
-
// Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.
|
|
79
|
-
return [2 /*return*/, _a.sent()];
|
|
80
|
-
case 7:
|
|
81
|
-
e_1 = _a.sent();
|
|
82
|
-
if (e_1 instanceof AuthError) {
|
|
83
|
-
e_1.setCorrelationId(this.correlationId);
|
|
84
|
-
}
|
|
85
|
-
window.removeEventListener("pageshow", handleBackButton);
|
|
86
|
-
serverTelemetryManager.cacheFailedRequest(e_1);
|
|
87
|
-
this.browserStorage.cleanRequestByState(validRequest.state);
|
|
88
|
-
throw e_1;
|
|
89
|
-
case 8: return [2 /*return*/];
|
|
90
|
-
}
|
|
26
|
+
async acquireToken(request) {
|
|
27
|
+
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);
|
|
28
|
+
const validRequest = await this.initializeAuthorizationRequest(request, InteractionType.Redirect);
|
|
29
|
+
this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);
|
|
30
|
+
const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);
|
|
31
|
+
const handleBackButton = (event) => {
|
|
32
|
+
// Clear temporary cache if the back button is clicked during the redirect flow.
|
|
33
|
+
if (event.persisted) {
|
|
34
|
+
this.logger.verbose("Page was restored from back/forward cache. Clearing temporary cache.");
|
|
35
|
+
this.browserStorage.cleanRequestByState(validRequest.state);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
try {
|
|
39
|
+
// Create auth code request and generate PKCE params
|
|
40
|
+
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, request.correlationId);
|
|
41
|
+
const authCodeRequest = await this.initializeAuthorizationCodeRequest(validRequest);
|
|
42
|
+
// Initialize the client
|
|
43
|
+
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);
|
|
44
|
+
const authClient = await this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions);
|
|
45
|
+
this.logger.verbose("Auth code client created");
|
|
46
|
+
// Create redirect interaction handler.
|
|
47
|
+
const interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto, this.performanceClient);
|
|
48
|
+
// Create acquire token url.
|
|
49
|
+
const navigateUrl = await authClient.getAuthCodeUrl({
|
|
50
|
+
...validRequest,
|
|
51
|
+
nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme),
|
|
52
|
+
});
|
|
53
|
+
const redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);
|
|
54
|
+
this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);
|
|
55
|
+
// Clear temporary cache if the back button is clicked during the redirect flow.
|
|
56
|
+
window.addEventListener("pageshow", handleBackButton);
|
|
57
|
+
// Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.
|
|
58
|
+
return await interactionHandler.initiateAuthRequest(navigateUrl, {
|
|
59
|
+
navigationClient: this.navigationClient,
|
|
60
|
+
redirectTimeout: this.config.system.redirectNavigationTimeout,
|
|
61
|
+
redirectStartPage: redirectStartPage,
|
|
62
|
+
onRedirectNavigate: request.onRedirectNavigate,
|
|
91
63
|
});
|
|
92
|
-
}
|
|
93
|
-
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
if (e instanceof AuthError) {
|
|
67
|
+
e.setCorrelationId(this.correlationId);
|
|
68
|
+
serverTelemetryManager.cacheFailedRequest(e);
|
|
69
|
+
}
|
|
70
|
+
window.removeEventListener("pageshow", handleBackButton);
|
|
71
|
+
this.browserStorage.cleanRequestByState(validRequest.state);
|
|
72
|
+
throw e;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
94
75
|
/**
|
|
95
76
|
* Checks if navigateToLoginRequestUrl is set, and:
|
|
96
77
|
* - if true, performs logic to cache and navigate
|
|
97
78
|
* - if false, handles hash string and parses response
|
|
98
79
|
* @param hash
|
|
99
80
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return [4 /*yield*/, this.handleHash(responseHash, state, serverTelemetryManager)];
|
|
139
|
-
case 2:
|
|
140
|
-
handleHashResult = _a.sent();
|
|
141
|
-
if (loginRequestUrl.indexOf("#") > -1) {
|
|
142
|
-
// Replace current hash with non-msal hash, if present
|
|
143
|
-
BrowserUtils.replaceHash(loginRequestUrl);
|
|
144
|
-
}
|
|
145
|
-
return [2 /*return*/, handleHashResult];
|
|
146
|
-
case 3:
|
|
147
|
-
if (!!this.config.auth.navigateToLoginRequestUrl) return [3 /*break*/, 4];
|
|
148
|
-
this.logger.verbose("NavigateToLoginRequestUrl set to false, handling hash");
|
|
149
|
-
return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];
|
|
150
|
-
case 4:
|
|
151
|
-
if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];
|
|
152
|
-
/*
|
|
153
|
-
* Returned from authority using redirect - need to perform navigation before processing response
|
|
154
|
-
* Cache the hash to be retrieved after the next redirect
|
|
155
|
-
*/
|
|
156
|
-
this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);
|
|
157
|
-
navigationOptions = {
|
|
158
|
-
apiId: ApiId.handleRedirectPromise,
|
|
159
|
-
timeout: this.config.system.redirectNavigationTimeout,
|
|
160
|
-
noHistory: true
|
|
161
|
-
};
|
|
162
|
-
processHashOnRedirect = true;
|
|
163
|
-
if (!(!loginRequestUrl || loginRequestUrl === "null")) return [3 /*break*/, 6];
|
|
164
|
-
homepage = BrowserUtils.getHomepage();
|
|
165
|
-
// Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage
|
|
166
|
-
this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);
|
|
167
|
-
this.logger.warning("Unable to get valid login request url from cache, redirecting to home page");
|
|
168
|
-
return [4 /*yield*/, this.navigationClient.navigateInternal(homepage, navigationOptions)];
|
|
169
|
-
case 5:
|
|
170
|
-
processHashOnRedirect = _a.sent();
|
|
171
|
-
return [3 /*break*/, 8];
|
|
172
|
-
case 6:
|
|
173
|
-
// Navigate to page that initiated the redirect request
|
|
174
|
-
this.logger.verbose("Navigating to loginRequestUrl: " + loginRequestUrl);
|
|
175
|
-
return [4 /*yield*/, this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions)];
|
|
176
|
-
case 7:
|
|
177
|
-
processHashOnRedirect = _a.sent();
|
|
178
|
-
_a.label = 8;
|
|
179
|
-
case 8:
|
|
180
|
-
// If navigateInternal implementation returns false, handle the hash now
|
|
181
|
-
if (!processHashOnRedirect) {
|
|
182
|
-
return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];
|
|
183
|
-
}
|
|
184
|
-
_a.label = 9;
|
|
185
|
-
case 9: return [2 /*return*/, null];
|
|
186
|
-
case 10:
|
|
187
|
-
e_2 = _a.sent();
|
|
188
|
-
if (e_2 instanceof AuthError) {
|
|
189
|
-
e_2.setCorrelationId(this.correlationId);
|
|
190
|
-
}
|
|
191
|
-
serverTelemetryManager.cacheFailedRequest(e_2);
|
|
192
|
-
this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);
|
|
193
|
-
throw e_2;
|
|
194
|
-
case 11: return [2 /*return*/];
|
|
81
|
+
async handleRedirectPromise(hash) {
|
|
82
|
+
const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);
|
|
83
|
+
try {
|
|
84
|
+
if (!this.browserStorage.isInteractionInProgress(true)) {
|
|
85
|
+
this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null.");
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const responseHash = this.getRedirectResponseHash(hash || window.location.hash);
|
|
89
|
+
if (!responseHash) {
|
|
90
|
+
// Not a recognized server response hash or hash not associated with a redirect request
|
|
91
|
+
this.logger.info("handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.");
|
|
92
|
+
this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
let state;
|
|
96
|
+
try {
|
|
97
|
+
// Deserialize hash fragment response parameters.
|
|
98
|
+
const serverParams = UrlString.getDeserializedHash(responseHash);
|
|
99
|
+
state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);
|
|
100
|
+
this.logger.verbose("State extracted from hash");
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
this.logger.info(`handleRedirectPromise was unable to extract state due to: ${e}`);
|
|
104
|
+
this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
// If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated
|
|
108
|
+
const loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;
|
|
109
|
+
const loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);
|
|
110
|
+
const currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);
|
|
111
|
+
if (loginRequestUrlNormalized === currentUrlNormalized &&
|
|
112
|
+
this.config.auth.navigateToLoginRequestUrl) {
|
|
113
|
+
// We are on the page we need to navigate to - handle hash
|
|
114
|
+
this.logger.verbose("Current page is loginRequestUrl, handling hash");
|
|
115
|
+
const handleHashResult = await this.handleHash(responseHash, state, serverTelemetryManager);
|
|
116
|
+
if (loginRequestUrl.indexOf("#") > -1) {
|
|
117
|
+
// Replace current hash with non-msal hash, if present
|
|
118
|
+
BrowserUtils.replaceHash(loginRequestUrl);
|
|
195
119
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
120
|
+
return handleHashResult;
|
|
121
|
+
}
|
|
122
|
+
else if (!this.config.auth.navigateToLoginRequestUrl) {
|
|
123
|
+
this.logger.verbose("NavigateToLoginRequestUrl set to false, handling hash");
|
|
124
|
+
return this.handleHash(responseHash, state, serverTelemetryManager);
|
|
125
|
+
}
|
|
126
|
+
else if (!BrowserUtils.isInIframe() ||
|
|
127
|
+
this.config.system.allowRedirectInIframe) {
|
|
128
|
+
/*
|
|
129
|
+
* Returned from authority using redirect - need to perform navigation before processing response
|
|
130
|
+
* Cache the hash to be retrieved after the next redirect
|
|
131
|
+
*/
|
|
132
|
+
this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);
|
|
133
|
+
const navigationOptions = {
|
|
134
|
+
apiId: ApiId.handleRedirectPromise,
|
|
135
|
+
timeout: this.config.system.redirectNavigationTimeout,
|
|
136
|
+
noHistory: true,
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Default behavior is to redirect to the start page and not process the hash now.
|
|
140
|
+
* The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.
|
|
141
|
+
*/
|
|
142
|
+
let processHashOnRedirect = true;
|
|
143
|
+
if (!loginRequestUrl || loginRequestUrl === "null") {
|
|
144
|
+
// Redirect to home page if login request url is null (real null or the string null)
|
|
145
|
+
const homepage = BrowserUtils.getHomepage();
|
|
146
|
+
// Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage
|
|
147
|
+
this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);
|
|
148
|
+
this.logger.warning("Unable to get valid login request url from cache, redirecting to home page");
|
|
149
|
+
processHashOnRedirect =
|
|
150
|
+
await this.navigationClient.navigateInternal(homepage, navigationOptions);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Navigate to page that initiated the redirect request
|
|
154
|
+
this.logger.verbose(`Navigating to loginRequestUrl: ${loginRequestUrl}`);
|
|
155
|
+
processHashOnRedirect =
|
|
156
|
+
await this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions);
|
|
157
|
+
}
|
|
158
|
+
// If navigateInternal implementation returns false, handle the hash now
|
|
159
|
+
if (!processHashOnRedirect) {
|
|
160
|
+
return this.handleHash(responseHash, state, serverTelemetryManager);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
if (e instanceof AuthError) {
|
|
167
|
+
e.setCorrelationId(this.correlationId);
|
|
168
|
+
serverTelemetryManager.cacheFailedRequest(e);
|
|
169
|
+
}
|
|
170
|
+
this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);
|
|
171
|
+
throw e;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
199
174
|
/**
|
|
200
175
|
* Gets the response hash for a redirect request
|
|
201
176
|
* Returns null if interactionType in the state value is not "redirect" or the hash does not contain known properties
|
|
202
177
|
* @param hash
|
|
203
178
|
*/
|
|
204
|
-
|
|
179
|
+
getRedirectResponseHash(hash) {
|
|
205
180
|
this.logger.verbose("getRedirectResponseHash called");
|
|
206
181
|
// Get current location hash from window or cache.
|
|
207
|
-
|
|
182
|
+
const isResponseHash = UrlString.hashContainsKnownProperties(hash);
|
|
208
183
|
if (isResponseHash) {
|
|
209
184
|
BrowserUtils.clearHash(window);
|
|
210
185
|
this.logger.verbose("Hash contains known properties, returning response hash");
|
|
211
186
|
return hash;
|
|
212
187
|
}
|
|
213
|
-
|
|
188
|
+
const cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);
|
|
214
189
|
this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));
|
|
215
190
|
this.logger.verbose("Hash does not contain known properties, returning cached hash");
|
|
216
191
|
return cachedHash;
|
|
217
|
-
}
|
|
192
|
+
}
|
|
218
193
|
/**
|
|
219
194
|
* Checks if hash exists and handles in window.
|
|
220
195
|
* @param hash
|
|
221
196
|
* @param state
|
|
222
197
|
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
_this.browserStorage.cleanRequestByState(state);
|
|
243
|
-
})];
|
|
244
|
-
}
|
|
245
|
-
currentAuthority = this.browserStorage.getCachedAuthority(state);
|
|
246
|
-
if (!currentAuthority) {
|
|
247
|
-
throw BrowserAuthError.createNoCachedAuthorityError();
|
|
248
|
-
}
|
|
249
|
-
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);
|
|
250
|
-
return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, currentAuthority)];
|
|
251
|
-
case 1:
|
|
252
|
-
authClient = _a.sent();
|
|
253
|
-
this.logger.verbose("Auth code client created");
|
|
254
|
-
ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);
|
|
255
|
-
interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);
|
|
256
|
-
return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];
|
|
257
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
258
|
-
}
|
|
198
|
+
async handleHash(hash, state, serverTelemetryManager) {
|
|
199
|
+
const cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);
|
|
200
|
+
this.logger.verbose("handleHash called, retrieved cached request");
|
|
201
|
+
const serverParams = UrlString.getDeserializedHash(hash);
|
|
202
|
+
if (serverParams.accountId) {
|
|
203
|
+
this.logger.verbose("Account id found in hash, calling WAM for token");
|
|
204
|
+
if (!this.nativeMessageHandler) {
|
|
205
|
+
throw BrowserAuthError.createNativeConnectionNotEstablishedError();
|
|
206
|
+
}
|
|
207
|
+
const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, cachedRequest.correlationId);
|
|
208
|
+
const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);
|
|
209
|
+
return nativeInteractionClient
|
|
210
|
+
.acquireToken({
|
|
211
|
+
...cachedRequest,
|
|
212
|
+
state: userRequestState,
|
|
213
|
+
prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently
|
|
214
|
+
})
|
|
215
|
+
.finally(() => {
|
|
216
|
+
this.browserStorage.cleanRequestByState(state);
|
|
259
217
|
});
|
|
260
|
-
}
|
|
261
|
-
|
|
218
|
+
}
|
|
219
|
+
// Hash contains known properties - handle and return in callback
|
|
220
|
+
const currentAuthority = this.browserStorage.getCachedAuthority(state);
|
|
221
|
+
if (!currentAuthority) {
|
|
222
|
+
throw BrowserAuthError.createNoCachedAuthorityError();
|
|
223
|
+
}
|
|
224
|
+
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, cachedRequest.correlationId);
|
|
225
|
+
const authClient = await this.createAuthCodeClient(serverTelemetryManager, currentAuthority);
|
|
226
|
+
this.logger.verbose("Auth code client created");
|
|
227
|
+
ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);
|
|
228
|
+
const interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto, this.performanceClient);
|
|
229
|
+
return await interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);
|
|
230
|
+
}
|
|
262
231
|
/**
|
|
263
232
|
* Use to log out the current user, and redirect the user to the postLogoutRedirectUri.
|
|
264
233
|
* Default behaviour is to redirect the user to `window.location.href`.
|
|
265
234
|
* @param logoutRequest
|
|
266
235
|
*/
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
this.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
navigate = logoutRequest.onRedirectNavigate(logoutUri);
|
|
299
|
-
if (!(navigate !== false)) return [3 /*break*/, 5];
|
|
300
|
-
this.logger.verbose("Logout onRedirectNavigate did not return false, navigating");
|
|
301
|
-
// Ensure interaction is in progress
|
|
302
|
-
if (!this.browserStorage.getInteractionInProgress()) {
|
|
303
|
-
this.browserStorage.setInteractionInProgress(true);
|
|
304
|
-
}
|
|
305
|
-
return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];
|
|
306
|
-
case 4:
|
|
307
|
-
_a.sent();
|
|
308
|
-
return [2 /*return*/];
|
|
309
|
-
case 5:
|
|
310
|
-
// Ensure interaction is not in progress
|
|
311
|
-
this.browserStorage.setInteractionInProgress(false);
|
|
312
|
-
this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation");
|
|
313
|
-
_a.label = 6;
|
|
314
|
-
case 6: return [3 /*break*/, 9];
|
|
315
|
-
case 7:
|
|
316
|
-
// Ensure interaction is in progress
|
|
317
|
-
if (!this.browserStorage.getInteractionInProgress()) {
|
|
318
|
-
this.browserStorage.setInteractionInProgress(true);
|
|
319
|
-
}
|
|
320
|
-
return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];
|
|
321
|
-
case 8:
|
|
322
|
-
_a.sent();
|
|
323
|
-
return [2 /*return*/];
|
|
324
|
-
case 9: return [3 /*break*/, 11];
|
|
325
|
-
case 10:
|
|
326
|
-
e_3 = _a.sent();
|
|
327
|
-
if (e_3 instanceof AuthError) {
|
|
328
|
-
e_3.setCorrelationId(this.correlationId);
|
|
329
|
-
}
|
|
330
|
-
serverTelemetryManager.cacheFailedRequest(e_3);
|
|
331
|
-
this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e_3);
|
|
332
|
-
this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);
|
|
333
|
-
throw e_3;
|
|
334
|
-
case 11:
|
|
335
|
-
this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);
|
|
336
|
-
return [2 /*return*/];
|
|
236
|
+
async logout(logoutRequest) {
|
|
237
|
+
this.logger.verbose("logoutRedirect called");
|
|
238
|
+
const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);
|
|
239
|
+
const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);
|
|
240
|
+
try {
|
|
241
|
+
this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);
|
|
242
|
+
// Clear cache on logout
|
|
243
|
+
await this.clearCacheOnLogout(validLogoutRequest.account);
|
|
244
|
+
const navigationOptions = {
|
|
245
|
+
apiId: ApiId.logout,
|
|
246
|
+
timeout: this.config.system.redirectNavigationTimeout,
|
|
247
|
+
noHistory: false,
|
|
248
|
+
};
|
|
249
|
+
this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, validLogoutRequest.correlationId);
|
|
250
|
+
const authClient = await this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority);
|
|
251
|
+
this.logger.verbose("Auth code client created");
|
|
252
|
+
// Create logout string and navigate user window to logout.
|
|
253
|
+
const logoutUri = authClient.getLogoutUri(validLogoutRequest);
|
|
254
|
+
this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);
|
|
255
|
+
// Check if onRedirectNavigate is implemented, and invoke it if so
|
|
256
|
+
if (logoutRequest &&
|
|
257
|
+
typeof logoutRequest.onRedirectNavigate === "function") {
|
|
258
|
+
const navigate = logoutRequest.onRedirectNavigate(logoutUri);
|
|
259
|
+
if (navigate !== false) {
|
|
260
|
+
this.logger.verbose("Logout onRedirectNavigate did not return false, navigating");
|
|
261
|
+
// Ensure interaction is in progress
|
|
262
|
+
if (!this.browserStorage.getInteractionInProgress()) {
|
|
263
|
+
this.browserStorage.setInteractionInProgress(true);
|
|
264
|
+
}
|
|
265
|
+
await this.navigationClient.navigateExternal(logoutUri, navigationOptions);
|
|
266
|
+
return;
|
|
337
267
|
}
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
268
|
+
else {
|
|
269
|
+
// Ensure interaction is not in progress
|
|
270
|
+
this.browserStorage.setInteractionInProgress(false);
|
|
271
|
+
this.logger.verbose("Logout onRedirectNavigate returned false, stopping navigation");
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
// Ensure interaction is in progress
|
|
276
|
+
if (!this.browserStorage.getInteractionInProgress()) {
|
|
277
|
+
this.browserStorage.setInteractionInProgress(true);
|
|
278
|
+
}
|
|
279
|
+
await this.navigationClient.navigateExternal(logoutUri, navigationOptions);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (e) {
|
|
284
|
+
if (e instanceof AuthError) {
|
|
285
|
+
e.setCorrelationId(this.correlationId);
|
|
286
|
+
serverTelemetryManager.cacheFailedRequest(e);
|
|
287
|
+
}
|
|
288
|
+
this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e);
|
|
289
|
+
this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);
|
|
290
|
+
throw e;
|
|
291
|
+
}
|
|
292
|
+
this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);
|
|
293
|
+
}
|
|
341
294
|
/**
|
|
342
295
|
* Use to get the redirectStartPage either from request or use current window
|
|
343
296
|
* @param requestStartPage
|
|
344
297
|
*/
|
|
345
|
-
|
|
346
|
-
|
|
298
|
+
getRedirectStartPage(requestStartPage) {
|
|
299
|
+
const redirectStartPage = requestStartPage || window.location.href;
|
|
347
300
|
return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
}(StandardInteractionClient));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
351
303
|
|
|
352
304
|
export { RedirectClient };
|
|
353
305
|
//# sourceMappingURL=RedirectClient.js.map
|