@azure/msal-browser 3.0.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/IPublicClientApplication.d.ts +2 -0
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.mjs +22 -18
- package/dist/app/IPublicClientApplication.mjs.map +1 -1
- package/dist/app/PublicClientApplication.d.ts +20 -6
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.mjs +24 -7
- package/dist/app/PublicClientApplication.mjs.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +3 -4
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs +17 -16
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs.map +1 -1
- package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +8 -0
- package/dist/broker/nativeBroker/NativeStatusCodes.d.ts.map +1 -0
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs +16 -0
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs.map +1 -0
- package/dist/cache/AsyncMemoryStorage.mjs +4 -3
- package/dist/cache/AsyncMemoryStorage.mjs.map +1 -1
- package/dist/cache/BrowserCacheManager.d.ts +10 -3
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.mjs +58 -29
- package/dist/cache/BrowserCacheManager.mjs.map +1 -1
- package/dist/cache/BrowserStorage.d.ts.map +1 -1
- package/dist/cache/BrowserStorage.mjs +7 -9
- package/dist/cache/BrowserStorage.mjs.map +1 -1
- package/dist/cache/CryptoKeyStore.mjs +1 -1
- package/dist/cache/CryptoKeyStore.mjs.map +1 -1
- package/dist/cache/DatabaseStorage.d.ts.map +1 -1
- package/dist/cache/DatabaseStorage.mjs +9 -8
- package/dist/cache/DatabaseStorage.mjs.map +1 -1
- package/dist/cache/MemoryStorage.mjs +1 -1
- package/dist/cache/MemoryStorage.mjs.map +1 -1
- package/dist/cache/TokenCache.d.ts.map +1 -1
- package/dist/cache/TokenCache.mjs +30 -30
- package/dist/cache/TokenCache.mjs.map +1 -1
- package/dist/config/Configuration.d.ts +1 -0
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.mjs +12 -16
- package/dist/config/Configuration.mjs.map +1 -1
- package/dist/controllers/ControllerFactory.mjs +1 -1
- package/dist/controllers/ControllerFactory.mjs.map +1 -1
- package/dist/controllers/IController.d.ts +5 -28
- package/dist/controllers/IController.d.ts.map +1 -1
- package/dist/controllers/StandardController.d.ts +17 -31
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.mjs +78 -83
- package/dist/controllers/StandardController.mjs.map +1 -1
- package/dist/crypto/BrowserCrypto.d.ts +44 -49
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.mjs +78 -77
- package/dist/crypto/BrowserCrypto.mjs.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +1 -10
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.mjs +23 -34
- package/dist/crypto/CryptoOps.mjs.map +1 -1
- package/dist/crypto/PkceGenerator.d.ts +6 -22
- package/dist/crypto/PkceGenerator.d.ts.map +1 -1
- package/dist/crypto/PkceGenerator.mjs +48 -49
- package/dist/crypto/PkceGenerator.mjs.map +1 -1
- package/dist/crypto/SignedHttpRequest.mjs +1 -1
- package/dist/crypto/SignedHttpRequest.mjs.map +1 -1
- package/dist/encode/Base64Decode.d.ts +6 -19
- package/dist/encode/Base64Decode.d.ts.map +1 -1
- package/dist/encode/Base64Decode.mjs +31 -68
- package/dist/encode/Base64Decode.mjs.map +1 -1
- package/dist/encode/Base64Encode.d.ts +15 -27
- package/dist/encode/Base64Encode.d.ts.map +1 -1
- package/dist/encode/Base64Encode.mjs +36 -75
- package/dist/encode/Base64Encode.mjs.map +1 -1
- package/dist/error/BrowserAuthError.d.ts +63 -195
- package/dist/error/BrowserAuthError.d.ts.map +1 -1
- package/dist/error/BrowserAuthError.mjs +159 -381
- package/dist/error/BrowserAuthError.mjs.map +1 -1
- package/dist/error/BrowserAuthErrorCodes.d.ts +46 -0
- package/dist/error/BrowserAuthErrorCodes.d.ts.map +1 -0
- package/dist/error/BrowserAuthErrorCodes.mjs +54 -0
- package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -0
- package/dist/error/BrowserConfigurationAuthError.d.ts +9 -46
- package/dist/error/BrowserConfigurationAuthError.d.ts.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.mjs +20 -73
- package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
- package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +4 -0
- package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts.map +1 -0
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +12 -0
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs.map +1 -0
- package/dist/error/NativeAuthError.d.ts +17 -45
- package/dist/error/NativeAuthError.d.ts.map +1 -1
- package/dist/error/NativeAuthError.mjs +49 -79
- package/dist/error/NativeAuthError.mjs.map +1 -1
- package/dist/error/NativeAuthErrorCodes.d.ts +3 -0
- package/dist/error/NativeAuthErrorCodes.d.ts.map +1 -0
- package/dist/error/NativeAuthErrorCodes.mjs +11 -0
- package/dist/error/NativeAuthErrorCodes.mjs.map +1 -0
- package/dist/event/EventHandler.d.ts.map +1 -1
- package/dist/event/EventHandler.mjs +3 -2
- package/dist/event/EventHandler.mjs.map +1 -1
- package/dist/event/EventMessage.mjs +1 -1
- package/dist/event/EventMessage.mjs.map +1 -1
- package/dist/event/EventType.mjs +1 -1
- package/dist/event/EventType.mjs.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +8 -4
- package/dist/index.mjs.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +2 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.mjs +7 -8
- package/dist/interaction_client/BaseInteractionClient.mjs.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.d.ts +4 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/NativeInteractionClient.mjs +32 -38
- package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.mjs +16 -15
- package/dist/interaction_client/PopupClient.mjs.map +1 -1
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.mjs +7 -6
- package/dist/interaction_client/RedirectClient.mjs.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.mjs +9 -11
- package/dist/interaction_client/SilentAuthCodeClient.mjs.map +1 -1
- package/dist/interaction_client/SilentCacheClient.d.ts +4 -2
- package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentCacheClient.mjs +19 -25
- package/dist/interaction_client/SilentCacheClient.mjs.map +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentIframeClient.mjs +20 -47
- package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.mjs +11 -20
- package/dist/interaction_client/SilentRefreshClient.mjs.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.mjs +18 -38
- package/dist/interaction_client/StandardInteractionClient.mjs.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.mjs +13 -16
- package/dist/interaction_handler/InteractionHandler.mjs.map +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
- package/dist/interaction_handler/RedirectHandler.mjs +12 -11
- package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
- package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
- package/dist/interaction_handler/SilentHandler.mjs +11 -11
- package/dist/interaction_handler/SilentHandler.mjs.map +1 -1
- package/dist/navigation/NavigationClient.mjs +1 -1
- package/dist/navigation/NavigationClient.mjs.map +1 -1
- package/dist/network/FetchClient.d.ts.map +1 -1
- package/dist/network/FetchClient.mjs +9 -8
- package/dist/network/FetchClient.mjs.map +1 -1
- package/dist/operatingcontext/BaseOperatingContext.mjs +1 -1
- package/dist/operatingcontext/BaseOperatingContext.mjs.map +1 -1
- package/dist/operatingcontext/StandardOperatingContext.mjs +1 -1
- package/dist/operatingcontext/StandardOperatingContext.mjs.map +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs +1 -1
- package/dist/operatingcontext/TeamsAppOperatingContext.mjs.map +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.mjs +2 -2
- package/dist/packageMetadata.mjs.map +1 -1
- package/dist/request/ClearCacheRequest.d.ts +11 -0
- package/dist/request/ClearCacheRequest.d.ts.map +1 -0
- package/dist/telemetry/BrowserPerformanceClient.d.ts +2 -4
- package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.mjs +2 -6
- package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs.map +1 -1
- package/dist/utils/BrowserConstants.mjs +1 -1
- package/dist/utils/BrowserConstants.mjs.map +1 -1
- package/dist/utils/BrowserProtocolUtils.d.ts.map +1 -1
- package/dist/utils/BrowserProtocolUtils.mjs +4 -4
- package/dist/utils/BrowserProtocolUtils.mjs.map +1 -1
- package/dist/utils/BrowserStringUtils.mjs +1 -1
- package/dist/utils/BrowserStringUtils.mjs.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +0 -9
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.mjs +8 -33
- package/dist/utils/BrowserUtils.mjs.map +1 -1
- package/lib/msal-browser.cjs +8729 -9566
- package/lib/msal-browser.cjs.map +1 -1
- package/lib/msal-browser.js +8729 -9566
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +68 -62
- package/package.json +7 -5
- package/src/app/IPublicClientApplication.ts +236 -0
- package/src/app/PublicClientApplication.ts +417 -0
- package/src/broker/nativeBroker/NativeMessageHandler.ts +416 -0
- package/src/broker/nativeBroker/NativeRequest.ts +52 -0
- package/src/broker/nativeBroker/NativeResponse.ts +56 -0
- package/src/broker/nativeBroker/NativeStatusCodes.ts +13 -0
- package/src/cache/AsyncMemoryStorage.ts +158 -0
- package/src/cache/BrowserCacheManager.ts +2009 -0
- package/src/cache/BrowserStorage.ts +52 -0
- package/src/cache/CryptoKeyStore.ts +63 -0
- package/src/cache/DatabaseStorage.ts +287 -0
- package/src/cache/IAsyncMemoryStorage.ts +36 -0
- package/src/cache/ITokenCache.ts +21 -0
- package/src/cache/IWindowStorage.ts +36 -0
- package/src/cache/MemoryStorage.ts +42 -0
- package/src/cache/TokenCache.ts +484 -0
- package/src/config/Configuration.ts +383 -0
- package/src/controllers/ControllerFactory.ts +55 -0
- package/src/controllers/IController.ts +134 -0
- package/src/controllers/StandardController.ts +2170 -0
- package/src/crypto/BrowserCrypto.ts +151 -0
- package/src/crypto/CryptoOps.ts +235 -0
- package/src/crypto/PkceGenerator.ts +115 -0
- package/src/crypto/SignedHttpRequest.ts +76 -0
- package/src/encode/Base64Decode.ts +46 -0
- package/src/encode/Base64Encode.ts +52 -0
- package/src/error/BrowserAuthError.ts +352 -0
- package/src/error/BrowserAuthErrorCodes.ts +57 -0
- package/src/error/BrowserConfigurationAuthError.ts +64 -0
- package/src/error/BrowserConfigurationAuthErrorCodes.ts +9 -0
- package/src/error/NativeAuthError.ts +113 -0
- package/src/error/NativeAuthErrorCodes.ts +7 -0
- package/src/event/EventHandler.ts +177 -0
- package/src/event/EventMessage.ts +125 -0
- package/src/event/EventType.ts +33 -0
- package/src/index.ts +157 -0
- package/src/interaction_client/BaseInteractionClient.ts +307 -0
- package/src/interaction_client/HybridSpaAuthorizationCodeClient.ts +16 -0
- package/src/interaction_client/NativeInteractionClient.ts +925 -0
- package/src/interaction_client/PopupClient.ts +926 -0
- package/src/interaction_client/RedirectClient.ts +616 -0
- package/src/interaction_client/SilentAuthCodeClient.ts +165 -0
- package/src/interaction_client/SilentCacheClient.ts +125 -0
- package/src/interaction_client/SilentIframeClient.ts +301 -0
- package/src/interaction_client/SilentRefreshClient.ts +118 -0
- package/src/interaction_client/StandardInteractionClient.ts +450 -0
- package/src/interaction_handler/InteractionHandler.ts +251 -0
- package/src/interaction_handler/RedirectHandler.ts +229 -0
- package/src/interaction_handler/SilentHandler.ts +269 -0
- package/src/navigation/INavigationClient.ts +23 -0
- package/src/navigation/NavigationClient.ts +55 -0
- package/src/navigation/NavigationOptions.ts +18 -0
- package/src/network/FetchClient.ts +130 -0
- package/src/operatingcontext/BaseOperatingContext.ts +82 -0
- package/src/operatingcontext/StandardOperatingContext.ts +49 -0
- package/src/operatingcontext/TeamsAppOperatingContext.ts +48 -0
- package/src/packageMetadata.ts +3 -0
- package/src/request/AuthorizationCodeRequest.ts +19 -0
- package/src/request/AuthorizationUrlRequest.ts +17 -0
- package/src/request/ClearCacheRequest.ts +16 -0
- package/src/request/EndSessionPopupRequest.ts +26 -0
- package/src/request/EndSessionRequest.ts +23 -0
- package/src/request/PopupRequest.ts +51 -0
- package/src/request/PopupWindowAttributes.ts +22 -0
- package/src/request/RedirectRequest.ts +51 -0
- package/src/request/SilentRequest.ts +49 -0
- package/src/request/SsoSilentRequest.ts +44 -0
- package/src/response/AuthenticationResult.ts +13 -0
- package/src/telemetry/BrowserPerformanceClient.ts +226 -0
- package/src/telemetry/BrowserPerformanceMeasurement.ts +144 -0
- package/src/utils/BrowserConstants.ts +241 -0
- package/src/utils/BrowserProtocolUtils.ts +58 -0
- package/src/utils/BrowserStringUtils.ts +143 -0
- package/src/utils/BrowserUtils.ts +156 -0
- package/dist/crypto/GuidGenerator.d.ts +0 -13
- package/dist/crypto/GuidGenerator.d.ts.map +0 -1
- package/dist/crypto/GuidGenerator.mjs +0 -104
- package/dist/crypto/GuidGenerator.mjs.map +0 -1
- package/dist/crypto/ISubtleCrypto.d.ts +0 -10
- package/dist/crypto/ISubtleCrypto.d.ts.map +0 -1
- package/dist/crypto/ModernBrowserCrypto.d.ts +0 -10
- package/dist/crypto/ModernBrowserCrypto.d.ts.map +0 -1
- package/dist/crypto/ModernBrowserCrypto.mjs +0 -31
- package/dist/crypto/ModernBrowserCrypto.mjs.map +0 -1
- package/dist/internals.d.ts +0 -23
- package/dist/internals.d.ts.map +0 -1
- package/dist/internals.mjs +0 -28
- package/dist/internals.mjs.map +0 -1
- package/dist/network/XhrClient.d.ts +0 -41
- package/dist/network/XhrClient.d.ts.map +0 -1
- package/dist/network/XhrClient.mjs +0 -125
- package/dist/network/XhrClient.mjs.map +0 -1
- package/dist/utils/MathUtils.d.ts +0 -12
- package/dist/utils/MathUtils.d.ts.map +0 -1
- package/dist/utils/MathUtils.mjs +0 -26
- package/dist/utils/MathUtils.mjs.map +0 -1
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
ICrypto,
|
|
8
|
+
INetworkModule,
|
|
9
|
+
Logger,
|
|
10
|
+
AccountInfo,
|
|
11
|
+
AccountEntity,
|
|
12
|
+
BaseAuthRequest,
|
|
13
|
+
AuthenticationScheme,
|
|
14
|
+
UrlString,
|
|
15
|
+
ServerTelemetryManager,
|
|
16
|
+
ServerTelemetryRequest,
|
|
17
|
+
createClientConfigurationError,
|
|
18
|
+
ClientConfigurationErrorCodes,
|
|
19
|
+
Authority,
|
|
20
|
+
AuthorityOptions,
|
|
21
|
+
AuthorityFactory,
|
|
22
|
+
IPerformanceClient,
|
|
23
|
+
PerformanceEvents,
|
|
24
|
+
StringUtils,
|
|
25
|
+
} from "@azure/msal-common";
|
|
26
|
+
import { BrowserConfiguration } from "../config/Configuration";
|
|
27
|
+
import { BrowserCacheManager } from "../cache/BrowserCacheManager";
|
|
28
|
+
import { EventHandler } from "../event/EventHandler";
|
|
29
|
+
import { EndSessionRequest } from "../request/EndSessionRequest";
|
|
30
|
+
import { RedirectRequest } from "../request/RedirectRequest";
|
|
31
|
+
import { PopupRequest } from "../request/PopupRequest";
|
|
32
|
+
import { SsoSilentRequest } from "../request/SsoSilentRequest";
|
|
33
|
+
import { version } from "../packageMetadata";
|
|
34
|
+
import { BrowserConstants } from "../utils/BrowserConstants";
|
|
35
|
+
import { BrowserUtils } from "../utils/BrowserUtils";
|
|
36
|
+
import { INavigationClient } from "../navigation/INavigationClient";
|
|
37
|
+
import { NativeMessageHandler } from "../broker/nativeBroker/NativeMessageHandler";
|
|
38
|
+
import { AuthenticationResult } from "../response/AuthenticationResult";
|
|
39
|
+
import { ClearCacheRequest } from "../request/ClearCacheRequest";
|
|
40
|
+
import { createNewGuid } from "../crypto/BrowserCrypto";
|
|
41
|
+
|
|
42
|
+
export abstract class BaseInteractionClient {
|
|
43
|
+
protected config: BrowserConfiguration;
|
|
44
|
+
protected browserStorage: BrowserCacheManager;
|
|
45
|
+
protected browserCrypto: ICrypto;
|
|
46
|
+
protected networkClient: INetworkModule;
|
|
47
|
+
protected logger: Logger;
|
|
48
|
+
protected eventHandler: EventHandler;
|
|
49
|
+
protected navigationClient: INavigationClient;
|
|
50
|
+
protected nativeMessageHandler: NativeMessageHandler | undefined;
|
|
51
|
+
protected correlationId: string;
|
|
52
|
+
protected performanceClient: IPerformanceClient;
|
|
53
|
+
|
|
54
|
+
constructor(
|
|
55
|
+
config: BrowserConfiguration,
|
|
56
|
+
storageImpl: BrowserCacheManager,
|
|
57
|
+
browserCrypto: ICrypto,
|
|
58
|
+
logger: Logger,
|
|
59
|
+
eventHandler: EventHandler,
|
|
60
|
+
navigationClient: INavigationClient,
|
|
61
|
+
performanceClient: IPerformanceClient,
|
|
62
|
+
nativeMessageHandler?: NativeMessageHandler,
|
|
63
|
+
correlationId?: string
|
|
64
|
+
) {
|
|
65
|
+
this.config = config;
|
|
66
|
+
this.browserStorage = storageImpl;
|
|
67
|
+
this.browserCrypto = browserCrypto;
|
|
68
|
+
this.networkClient = this.config.system.networkClient;
|
|
69
|
+
this.eventHandler = eventHandler;
|
|
70
|
+
this.navigationClient = navigationClient;
|
|
71
|
+
this.nativeMessageHandler = nativeMessageHandler;
|
|
72
|
+
this.correlationId = correlationId || createNewGuid();
|
|
73
|
+
this.logger = logger.clone(
|
|
74
|
+
BrowserConstants.MSAL_SKU,
|
|
75
|
+
version,
|
|
76
|
+
this.correlationId
|
|
77
|
+
);
|
|
78
|
+
this.performanceClient = performanceClient;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
abstract acquireToken(
|
|
82
|
+
request: RedirectRequest | PopupRequest | SsoSilentRequest
|
|
83
|
+
): Promise<AuthenticationResult | void>;
|
|
84
|
+
|
|
85
|
+
abstract logout(
|
|
86
|
+
request: EndSessionRequest | ClearCacheRequest | undefined
|
|
87
|
+
): Promise<void>;
|
|
88
|
+
|
|
89
|
+
protected async clearCacheOnLogout(
|
|
90
|
+
account?: AccountInfo | null
|
|
91
|
+
): Promise<void> {
|
|
92
|
+
if (account) {
|
|
93
|
+
if (
|
|
94
|
+
AccountEntity.accountInfoIsEqual(
|
|
95
|
+
account,
|
|
96
|
+
this.browserStorage.getActiveAccount(),
|
|
97
|
+
false
|
|
98
|
+
)
|
|
99
|
+
) {
|
|
100
|
+
this.logger.verbose("Setting active account to null");
|
|
101
|
+
this.browserStorage.setActiveAccount(null);
|
|
102
|
+
}
|
|
103
|
+
// Clear given account.
|
|
104
|
+
try {
|
|
105
|
+
await this.browserStorage.removeAccount(
|
|
106
|
+
AccountEntity.generateAccountCacheKey(account)
|
|
107
|
+
);
|
|
108
|
+
this.logger.verbose(
|
|
109
|
+
"Cleared cache items belonging to the account provided in the logout request."
|
|
110
|
+
);
|
|
111
|
+
} catch (error) {
|
|
112
|
+
this.logger.error(
|
|
113
|
+
"Account provided in logout request was not found. Local cache unchanged."
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
} else {
|
|
117
|
+
try {
|
|
118
|
+
this.logger.verbose(
|
|
119
|
+
"No account provided in logout request, clearing all cache items.",
|
|
120
|
+
this.correlationId
|
|
121
|
+
);
|
|
122
|
+
// Clear all accounts and tokens
|
|
123
|
+
await this.browserStorage.clear();
|
|
124
|
+
// Clear any stray keys from IndexedDB
|
|
125
|
+
await this.browserCrypto.clearKeystore();
|
|
126
|
+
} catch (e) {
|
|
127
|
+
this.logger.error(
|
|
128
|
+
"Attempted to clear all MSAL cache items and failed. Local cache unchanged."
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Initializer function for all request APIs
|
|
136
|
+
* @param request
|
|
137
|
+
*/
|
|
138
|
+
protected async initializeBaseRequest(
|
|
139
|
+
request: Partial<BaseAuthRequest>,
|
|
140
|
+
account?: AccountInfo
|
|
141
|
+
): Promise<BaseAuthRequest> {
|
|
142
|
+
this.performanceClient.addQueueMeasurement(
|
|
143
|
+
PerformanceEvents.InitializeBaseRequest,
|
|
144
|
+
request.correlationId
|
|
145
|
+
);
|
|
146
|
+
const authority = request.authority || this.config.auth.authority;
|
|
147
|
+
|
|
148
|
+
if (account) {
|
|
149
|
+
await this.validateRequestAuthority(authority, account);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const scopes = [...((request && request.scopes) || [])];
|
|
153
|
+
|
|
154
|
+
const validatedRequest: BaseAuthRequest = {
|
|
155
|
+
...request,
|
|
156
|
+
correlationId: this.correlationId,
|
|
157
|
+
authority,
|
|
158
|
+
scopes,
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// Set authenticationScheme to BEARER if not explicitly set in the request
|
|
162
|
+
if (!validatedRequest.authenticationScheme) {
|
|
163
|
+
validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;
|
|
164
|
+
this.logger.verbose(
|
|
165
|
+
'Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request'
|
|
166
|
+
);
|
|
167
|
+
} else {
|
|
168
|
+
if (
|
|
169
|
+
validatedRequest.authenticationScheme ===
|
|
170
|
+
AuthenticationScheme.SSH
|
|
171
|
+
) {
|
|
172
|
+
if (!request.sshJwk) {
|
|
173
|
+
throw createClientConfigurationError(
|
|
174
|
+
ClientConfigurationErrorCodes.missingSshJwk
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
if (!request.sshKid) {
|
|
178
|
+
throw createClientConfigurationError(
|
|
179
|
+
ClientConfigurationErrorCodes.missingSshKid
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.logger.verbose(
|
|
184
|
+
`Authentication Scheme set to "${validatedRequest.authenticationScheme}" as configured in Auth request`
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Set requested claims hash if claims-based caching is enabled and claims were requested
|
|
189
|
+
if (
|
|
190
|
+
this.config.cache.claimsBasedCachingEnabled &&
|
|
191
|
+
request.claims &&
|
|
192
|
+
// Checks for empty stringified object "{}" which doesn't qualify as requested claims
|
|
193
|
+
!StringUtils.isEmptyObj(request.claims)
|
|
194
|
+
) {
|
|
195
|
+
validatedRequest.requestedClaimsHash =
|
|
196
|
+
await this.browserCrypto.hashString(request.claims);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return validatedRequest;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
*
|
|
204
|
+
* Use to get the redirect uri configured in MSAL or null.
|
|
205
|
+
* @param requestRedirectUri
|
|
206
|
+
* @returns Redirect URL
|
|
207
|
+
*
|
|
208
|
+
*/
|
|
209
|
+
getRedirectUri(requestRedirectUri?: string): string {
|
|
210
|
+
this.logger.verbose("getRedirectUri called");
|
|
211
|
+
const redirectUri =
|
|
212
|
+
requestRedirectUri ||
|
|
213
|
+
this.config.auth.redirectUri ||
|
|
214
|
+
BrowserUtils.getCurrentUri();
|
|
215
|
+
return UrlString.getAbsoluteUrl(
|
|
216
|
+
redirectUri,
|
|
217
|
+
BrowserUtils.getCurrentUri()
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/*
|
|
222
|
+
* If authority provided in the request does not match environment/authority specified
|
|
223
|
+
* in the account or MSAL config, we throw an error.
|
|
224
|
+
*/
|
|
225
|
+
async validateRequestAuthority(
|
|
226
|
+
authority: string,
|
|
227
|
+
account: AccountInfo
|
|
228
|
+
): Promise<void> {
|
|
229
|
+
const discoveredAuthority = await this.getDiscoveredAuthority(
|
|
230
|
+
authority
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
if (!discoveredAuthority.isAlias(account.environment)) {
|
|
234
|
+
throw createClientConfigurationError(
|
|
235
|
+
ClientConfigurationErrorCodes.authorityMismatch
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
*
|
|
242
|
+
* @param apiId
|
|
243
|
+
* @param correlationId
|
|
244
|
+
* @param forceRefresh
|
|
245
|
+
*/
|
|
246
|
+
protected initializeServerTelemetryManager(
|
|
247
|
+
apiId: number,
|
|
248
|
+
forceRefresh?: boolean
|
|
249
|
+
): ServerTelemetryManager {
|
|
250
|
+
this.logger.verbose("initializeServerTelemetryManager called");
|
|
251
|
+
const telemetryPayload: ServerTelemetryRequest = {
|
|
252
|
+
clientId: this.config.auth.clientId,
|
|
253
|
+
correlationId: this.correlationId,
|
|
254
|
+
apiId: apiId,
|
|
255
|
+
forceRefresh: forceRefresh || false,
|
|
256
|
+
wrapperSKU: this.browserStorage.getWrapperMetadata()[0],
|
|
257
|
+
wrapperVer: this.browserStorage.getWrapperMetadata()[1],
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
return new ServerTelemetryManager(
|
|
261
|
+
telemetryPayload,
|
|
262
|
+
this.browserStorage
|
|
263
|
+
);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Used to get a discovered version of the default authority.
|
|
268
|
+
* @param requestAuthority
|
|
269
|
+
* @param requestCorrelationId
|
|
270
|
+
*/
|
|
271
|
+
protected async getDiscoveredAuthority(
|
|
272
|
+
requestAuthority?: string
|
|
273
|
+
): Promise<Authority> {
|
|
274
|
+
this.logger.verbose("getDiscoveredAuthority called");
|
|
275
|
+
const authorityOptions: AuthorityOptions = {
|
|
276
|
+
protocolMode: this.config.auth.protocolMode,
|
|
277
|
+
OIDCOptions: this.config.auth.OIDCOptions,
|
|
278
|
+
knownAuthorities: this.config.auth.knownAuthorities,
|
|
279
|
+
cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,
|
|
280
|
+
authorityMetadata: this.config.auth.authorityMetadata,
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
if (requestAuthority) {
|
|
284
|
+
this.logger.verbose(
|
|
285
|
+
"Creating discovered authority with request authority"
|
|
286
|
+
);
|
|
287
|
+
return await AuthorityFactory.createDiscoveredInstance(
|
|
288
|
+
requestAuthority,
|
|
289
|
+
this.config.system.networkClient,
|
|
290
|
+
this.browserStorage,
|
|
291
|
+
authorityOptions,
|
|
292
|
+
this.logger
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
this.logger.verbose(
|
|
297
|
+
"Creating discovered authority with configured authority"
|
|
298
|
+
);
|
|
299
|
+
return await AuthorityFactory.createDiscoveredInstance(
|
|
300
|
+
this.config.auth.authority,
|
|
301
|
+
this.config.system.networkClient,
|
|
302
|
+
this.browserStorage,
|
|
303
|
+
authorityOptions,
|
|
304
|
+
this.logger
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
AuthorizationCodeClient,
|
|
8
|
+
ClientConfiguration,
|
|
9
|
+
} from "@azure/msal-common";
|
|
10
|
+
|
|
11
|
+
export class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {
|
|
12
|
+
constructor(config: ClientConfiguration) {
|
|
13
|
+
super(config);
|
|
14
|
+
this.includeRedirectUri = false;
|
|
15
|
+
}
|
|
16
|
+
}
|