@azure/msal-browser 3.20.0 → 3.22.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 +53 -53
- package/dist/app/IPublicClientApplication.mjs +105 -105
- package/dist/app/PublicClientApplication.d.ts +293 -293
- package/dist/app/PublicClientApplication.mjs +364 -364
- package/dist/app/PublicClientNext.d.ts +276 -276
- package/dist/app/PublicClientNext.mjs +354 -354
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
- package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
- package/dist/broker/nativeBroker/NativeRequest.d.ts +45 -45
- package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
- package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
- package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
- package/dist/cache/AccountManager.d.ts +48 -48
- package/dist/cache/AccountManager.mjs +126 -126
- package/dist/cache/AsyncMemoryStorage.d.ts +50 -50
- package/dist/cache/AsyncMemoryStorage.mjs +131 -131
- package/dist/cache/BrowserCacheManager.d.ts +385 -385
- package/dist/cache/BrowserCacheManager.mjs +1294 -1294
- package/dist/cache/BrowserStorage.d.ts +11 -11
- package/dist/cache/BrowserStorage.mjs +32 -32
- package/dist/cache/DatabaseStorage.d.ts +56 -56
- package/dist/cache/DatabaseStorage.mjs +200 -200
- package/dist/cache/IAsyncStorage.d.ts +27 -27
- package/dist/cache/ITokenCache.d.ts +11 -11
- package/dist/cache/IWindowStorage.d.ts +27 -27
- package/dist/cache/MemoryStorage.d.ts +11 -11
- package/dist/cache/MemoryStorage.mjs +31 -31
- package/dist/cache/TokenCache.d.ts +77 -77
- package/dist/cache/TokenCache.mjs +195 -195
- package/dist/config/Configuration.d.ts +213 -208
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.mjs +128 -128
- package/dist/config/Configuration.mjs.map +1 -1
- package/dist/controllers/ControllerFactory.d.ts +5 -5
- package/dist/controllers/ControllerFactory.mjs +25 -25
- package/dist/controllers/IController.d.ts +60 -60
- package/dist/controllers/NestedAppAuthController.d.ts +202 -202
- package/dist/controllers/NestedAppAuthController.mjs +473 -473
- package/dist/controllers/StandardController.d.ts +405 -405
- package/dist/controllers/StandardController.d.ts.map +1 -1
- package/dist/controllers/StandardController.mjs +1334 -1316
- package/dist/controllers/StandardController.mjs.map +1 -1
- package/dist/controllers/UnknownOperatingContextController.d.ts +86 -86
- package/dist/controllers/UnknownOperatingContextController.mjs +256 -256
- package/dist/crypto/BrowserCrypto.d.ts +52 -52
- package/dist/crypto/BrowserCrypto.mjs +151 -151
- package/dist/crypto/CryptoOps.d.ts +74 -74
- package/dist/crypto/CryptoOps.mjs +176 -176
- package/dist/crypto/PkceGenerator.d.ts +8 -8
- package/dist/crypto/PkceGenerator.mjs +54 -54
- package/dist/crypto/SignedHttpRequest.d.ts +30 -30
- package/dist/crypto/SignedHttpRequest.mjs +39 -39
- package/dist/encode/Base64Decode.d.ts +9 -9
- package/dist/encode/Base64Decode.mjs +36 -36
- package/dist/encode/Base64Encode.d.ts +19 -19
- package/dist/encode/Base64Encode.mjs +43 -43
- package/dist/error/BrowserAuthError.d.ts +255 -255
- package/dist/error/BrowserAuthError.mjs +263 -263
- package/dist/error/BrowserAuthErrorCodes.d.ts +46 -46
- package/dist/error/BrowserAuthErrorCodes.mjs +50 -50
- package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
- package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
- package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
- package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
- package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
- package/dist/error/NativeAuthError.d.ts +29 -29
- package/dist/error/NativeAuthError.mjs +60 -60
- package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
- package/dist/error/NativeAuthErrorCodes.mjs +6 -6
- package/dist/error/NestedAppAuthError.d.ts +14 -14
- package/dist/error/NestedAppAuthError.mjs +23 -23
- package/dist/event/EventHandler.d.ts +41 -41
- package/dist/event/EventHandler.mjs +125 -125
- package/dist/event/EventMessage.d.ts +25 -25
- package/dist/event/EventMessage.mjs +68 -68
- package/dist/event/EventType.d.ts +29 -29
- package/dist/event/EventType.mjs +32 -32
- package/dist/index.d.ts +40 -40
- package/dist/index.mjs +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +50 -50
- package/dist/interaction_client/BaseInteractionClient.mjs +106 -106
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
- package/dist/interaction_client/NativeInteractionClient.d.ts +151 -151
- package/dist/interaction_client/NativeInteractionClient.mjs +621 -621
- package/dist/interaction_client/PopupClient.d.ts +105 -105
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.mjs +433 -433
- package/dist/interaction_client/PopupClient.mjs.map +1 -1
- package/dist/interaction_client/RedirectClient.d.ts +50 -50
- package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
- package/dist/interaction_client/RedirectClient.mjs +315 -314
- package/dist/interaction_client/RedirectClient.mjs.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
- package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
- package/dist/interaction_client/SilentCacheClient.d.ts +16 -16
- package/dist/interaction_client/SilentCacheClient.mjs +42 -42
- package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
- package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentIframeClient.mjs +110 -100
- package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
- package/dist/interaction_client/SilentRefreshClient.mjs +47 -47
- package/dist/interaction_client/StandardInteractionClient.d.ts +48 -48
- package/dist/interaction_client/StandardInteractionClient.mjs +199 -199
- package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
- package/dist/interaction_handler/InteractionHandler.mjs +93 -93
- package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
- package/dist/interaction_handler/RedirectHandler.mjs +134 -134
- package/dist/interaction_handler/SilentHandler.d.ts +13 -13
- package/dist/interaction_handler/SilentHandler.mjs +134 -134
- package/dist/naa/AccountInfo.d.ts +11 -11
- package/dist/naa/AuthBridge.d.ts +8 -8
- package/dist/naa/AuthResult.d.ts +6 -6
- package/dist/naa/BridgeAccountContext.d.ts +12 -12
- package/dist/naa/BridgeCapabilities.d.ts +3 -3
- package/dist/naa/BridgeError.d.ts +9 -9
- package/dist/naa/BridgeError.mjs +7 -7
- package/dist/naa/BridgeProxy.d.ts +67 -67
- package/dist/naa/BridgeProxy.mjs +148 -148
- package/dist/naa/BridgeRequest.d.ts +7 -7
- package/dist/naa/BridgeRequestEnvelope.d.ts +12 -12
- package/dist/naa/BridgeResponseEnvelope.d.ts +13 -13
- package/dist/naa/BridgeStatusCode.d.ts +11 -11
- package/dist/naa/BridgeStatusCode.mjs +14 -14
- package/dist/naa/IBridgeProxy.d.ts +10 -10
- package/dist/naa/InitContext.d.ts +8 -8
- package/dist/naa/TokenRequest.d.ts +18 -18
- package/dist/naa/TokenResponse.d.ts +13 -13
- package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +35 -35
- package/dist/naa/mapping/NestedAppAuthAdapter.mjs +179 -179
- package/dist/navigation/INavigationClient.d.ts +16 -16
- package/dist/navigation/NavigationClient.d.ts +22 -22
- package/dist/navigation/NavigationClient.mjs +40 -40
- package/dist/navigation/NavigationOptions.d.ts +12 -12
- package/dist/network/FetchClient.d.ts +26 -26
- package/dist/network/FetchClient.mjs +99 -99
- package/dist/operatingcontext/BaseOperatingContext.d.ts +41 -41
- package/dist/operatingcontext/BaseOperatingContext.mjs +94 -94
- package/dist/operatingcontext/NestedAppOperatingContext.d.ts +34 -34
- package/dist/operatingcontext/NestedAppOperatingContext.mjs +71 -71
- package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
- package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
- package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.mjs +4 -4
- package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
- package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
- package/dist/request/ClearCacheRequest.d.ts +10 -10
- package/dist/request/EndSessionPopupRequest.d.ts +18 -18
- package/dist/request/EndSessionRequest.d.ts +15 -15
- package/dist/request/InitializeApplicationRequest.d.ts +8 -8
- package/dist/request/PopupRequest.d.ts +34 -34
- package/dist/request/PopupWindowAttributes.d.ts +15 -15
- package/dist/request/RedirectRequest.d.ts +40 -35
- package/dist/request/RedirectRequest.d.ts.map +1 -1
- package/dist/request/RequestHelpers.d.ts +13 -13
- package/dist/request/RequestHelpers.mjs +53 -53
- package/dist/request/SilentRequest.d.ts +33 -33
- package/dist/request/SsoSilentRequest.d.ts +29 -29
- package/dist/response/AuthenticationResult.d.ts +4 -4
- package/dist/response/ResponseHandler.d.ts +7 -7
- package/dist/response/ResponseHandler.mjs +36 -36
- package/dist/telemetry/BrowserPerformanceClient.d.ts +34 -34
- package/dist/telemetry/BrowserPerformanceClient.mjs +162 -162
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
- package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
- package/dist/utils/BrowserConstants.d.ts +180 -180
- package/dist/utils/BrowserConstants.mjs +212 -212
- package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
- package/dist/utils/BrowserProtocolUtils.mjs +21 -21
- package/dist/utils/BrowserUtils.d.ts +75 -75
- package/dist/utils/BrowserUtils.mjs +157 -157
- package/lib/msal-browser.cjs +18884 -18855
- package/lib/msal-browser.cjs.map +1 -1
- package/lib/msal-browser.js +18884 -18855
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +59 -59
- package/package.json +2 -2
- package/src/config/Configuration.ts +9 -1
- package/src/controllers/StandardController.ts +30 -12
- package/src/interaction_client/PopupClient.ts +1 -0
- package/src/interaction_client/RedirectClient.ts +4 -1
- package/src/interaction_client/SilentIframeClient.ts +40 -3
- package/src/packageMetadata.ts +1 -1
- package/src/request/RedirectRequest.ts +5 -0
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.22.0 2024-08-28 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { RequestParameterBuilder, StringUtils, AuthenticationScheme, createClientAuthError, ClientAuthErrorCodes, AuthToken, buildTenantProfile, AuthError, InteractionRequiredAuthError, ServerError, ClientAuthError, OIDC_DEFAULT_SCOPES } from '@azure/msal-common';
|
|
4
4
|
import { isBridgeError } from '../BridgeError.mjs';
|
|
5
5
|
import { BridgeStatusCode } from '../BridgeStatusCode.mjs';
|
|
6
6
|
|
|
7
|
-
/*
|
|
8
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
-
* Licensed under the MIT License.
|
|
10
|
-
*/
|
|
11
|
-
class NestedAppAuthAdapter {
|
|
12
|
-
constructor(clientId, clientCapabilities, crypto, logger) {
|
|
13
|
-
this.clientId = clientId;
|
|
14
|
-
this.clientCapabilities = clientCapabilities;
|
|
15
|
-
this.crypto = crypto;
|
|
16
|
-
this.logger = logger;
|
|
17
|
-
}
|
|
18
|
-
toNaaTokenRequest(request) {
|
|
19
|
-
let extraParams;
|
|
20
|
-
if (request.extraQueryParameters === undefined) {
|
|
21
|
-
extraParams = new Map();
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
extraParams = new Map(Object.entries(request.extraQueryParameters));
|
|
25
|
-
}
|
|
26
|
-
const requestBuilder = new RequestParameterBuilder();
|
|
27
|
-
const claims = requestBuilder.addClientCapabilitiesToClaims(request.claims, this.clientCapabilities);
|
|
28
|
-
const scopes = request.scopes || OIDC_DEFAULT_SCOPES;
|
|
29
|
-
const tokenRequest = {
|
|
30
|
-
platformBrokerId: request.account?.homeAccountId,
|
|
31
|
-
clientId: this.clientId,
|
|
32
|
-
authority: request.authority,
|
|
33
|
-
scope: scopes.join(" "),
|
|
34
|
-
correlationId: request.correlationId !== undefined
|
|
35
|
-
? request.correlationId
|
|
36
|
-
: this.crypto.createNewGuid(),
|
|
37
|
-
claims: !StringUtils.isEmptyObj(claims) ? claims : undefined,
|
|
38
|
-
state: request.state,
|
|
39
|
-
authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
40
|
-
extraParameters: extraParams,
|
|
41
|
-
};
|
|
42
|
-
return tokenRequest;
|
|
43
|
-
}
|
|
44
|
-
fromNaaTokenResponse(request, response, reqTimestamp) {
|
|
45
|
-
if (!response.token.id_token || !response.token.access_token) {
|
|
46
|
-
throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);
|
|
47
|
-
}
|
|
48
|
-
const expiresOn = new Date((reqTimestamp + (response.token.expires_in || 0)) * 1000);
|
|
49
|
-
const idTokenClaims = AuthToken.extractTokenClaims(response.token.id_token, this.crypto.base64Decode);
|
|
50
|
-
const account = this.fromNaaAccountInfo(response.account, response.token.id_token, idTokenClaims);
|
|
51
|
-
const scopes = response.token.scope || request.scope;
|
|
52
|
-
const authenticationResult = {
|
|
53
|
-
authority: response.token.authority || account.environment,
|
|
54
|
-
uniqueId: account.localAccountId,
|
|
55
|
-
tenantId: account.tenantId,
|
|
56
|
-
scopes: scopes.split(" "),
|
|
57
|
-
account,
|
|
58
|
-
idToken: response.token.id_token,
|
|
59
|
-
idTokenClaims,
|
|
60
|
-
accessToken: response.token.access_token,
|
|
61
|
-
fromCache: false,
|
|
62
|
-
expiresOn: expiresOn,
|
|
63
|
-
tokenType: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
64
|
-
correlationId: request.correlationId,
|
|
65
|
-
extExpiresOn: expiresOn,
|
|
66
|
-
state: request.state,
|
|
67
|
-
};
|
|
68
|
-
return authenticationResult;
|
|
69
|
-
}
|
|
70
|
-
/*
|
|
71
|
-
* export type AccountInfo = {
|
|
72
|
-
* homeAccountId: string;
|
|
73
|
-
* environment: string;
|
|
74
|
-
* tenantId: string;
|
|
75
|
-
* username: string;
|
|
76
|
-
* localAccountId: string;
|
|
77
|
-
* name?: string;
|
|
78
|
-
* idToken?: string;
|
|
79
|
-
* idTokenClaims?: TokenClaims & {
|
|
80
|
-
* [key: string]:
|
|
81
|
-
* | string
|
|
82
|
-
* | number
|
|
83
|
-
* | string[]
|
|
84
|
-
* | object
|
|
85
|
-
* | undefined
|
|
86
|
-
* | unknown;
|
|
87
|
-
* };
|
|
88
|
-
* nativeAccountId?: string;
|
|
89
|
-
* authorityType?: string;
|
|
90
|
-
* };
|
|
91
|
-
*/
|
|
92
|
-
fromNaaAccountInfo(fromAccount, idToken, idTokenClaims) {
|
|
93
|
-
const effectiveIdTokenClaims = idTokenClaims || fromAccount.idTokenClaims;
|
|
94
|
-
const localAccountId = fromAccount.localAccountId ||
|
|
95
|
-
effectiveIdTokenClaims?.oid ||
|
|
96
|
-
effectiveIdTokenClaims?.sub ||
|
|
97
|
-
"";
|
|
98
|
-
const tenantId = fromAccount.tenantId || effectiveIdTokenClaims?.tid || "";
|
|
99
|
-
const homeAccountId = fromAccount.homeAccountId || `${localAccountId}.${tenantId}`;
|
|
100
|
-
const username = fromAccount.username ||
|
|
101
|
-
effectiveIdTokenClaims?.preferred_username ||
|
|
102
|
-
"";
|
|
103
|
-
const name = fromAccount.name || effectiveIdTokenClaims?.name;
|
|
104
|
-
const tenantProfiles = new Map();
|
|
105
|
-
const tenantProfile = buildTenantProfile(homeAccountId, localAccountId, tenantId, effectiveIdTokenClaims);
|
|
106
|
-
tenantProfiles.set(tenantId, tenantProfile);
|
|
107
|
-
const account = {
|
|
108
|
-
homeAccountId,
|
|
109
|
-
environment: fromAccount.environment,
|
|
110
|
-
tenantId,
|
|
111
|
-
username,
|
|
112
|
-
localAccountId,
|
|
113
|
-
name,
|
|
114
|
-
idToken: idToken,
|
|
115
|
-
idTokenClaims: effectiveIdTokenClaims,
|
|
116
|
-
tenantProfiles,
|
|
117
|
-
};
|
|
118
|
-
return account;
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
*
|
|
122
|
-
* @param error BridgeError
|
|
123
|
-
* @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError
|
|
124
|
-
*/
|
|
125
|
-
fromBridgeError(error) {
|
|
126
|
-
if (isBridgeError(error)) {
|
|
127
|
-
switch (error.status) {
|
|
128
|
-
case BridgeStatusCode.UserCancel:
|
|
129
|
-
return new ClientAuthError(ClientAuthErrorCodes.userCanceled);
|
|
130
|
-
case BridgeStatusCode.NoNetwork:
|
|
131
|
-
return new ClientAuthError(ClientAuthErrorCodes.noNetworkConnectivity);
|
|
132
|
-
case BridgeStatusCode.AccountUnavailable:
|
|
133
|
-
return new ClientAuthError(ClientAuthErrorCodes.noAccountFound);
|
|
134
|
-
case BridgeStatusCode.Disabled:
|
|
135
|
-
return new ClientAuthError(ClientAuthErrorCodes.nestedAppAuthBridgeDisabled);
|
|
136
|
-
case BridgeStatusCode.NestedAppAuthUnavailable:
|
|
137
|
-
return new ClientAuthError(error.code ||
|
|
138
|
-
ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, error.description);
|
|
139
|
-
case BridgeStatusCode.TransientError:
|
|
140
|
-
case BridgeStatusCode.PersistentError:
|
|
141
|
-
return new ServerError(error.code, error.description);
|
|
142
|
-
case BridgeStatusCode.UserInteractionRequired:
|
|
143
|
-
return new InteractionRequiredAuthError(error.code, error.description);
|
|
144
|
-
default:
|
|
145
|
-
return new AuthError(error.code, error.description);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
return new AuthError("unknown_error", "An unknown error occurred");
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Returns an AuthenticationResult from the given cache items
|
|
154
|
-
*
|
|
155
|
-
* @param account
|
|
156
|
-
* @param idToken
|
|
157
|
-
* @param accessToken
|
|
158
|
-
* @param reqTimestamp
|
|
159
|
-
* @returns
|
|
160
|
-
*/
|
|
161
|
-
toAuthenticationResultFromCache(account, idToken, accessToken, request, correlationId) {
|
|
162
|
-
if (!idToken || !accessToken) {
|
|
163
|
-
throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);
|
|
164
|
-
}
|
|
165
|
-
const idTokenClaims = AuthToken.extractTokenClaims(idToken.secret, this.crypto.base64Decode);
|
|
166
|
-
const scopes = accessToken.target || request.scopes.join(" ");
|
|
167
|
-
const authenticationResult = {
|
|
168
|
-
authority: accessToken.environment || account.environment,
|
|
169
|
-
uniqueId: account.localAccountId,
|
|
170
|
-
tenantId: account.tenantId,
|
|
171
|
-
scopes: scopes.split(" "),
|
|
172
|
-
account,
|
|
173
|
-
idToken: idToken.secret,
|
|
174
|
-
idTokenClaims: idTokenClaims || {},
|
|
175
|
-
accessToken: accessToken.secret,
|
|
176
|
-
fromCache: true,
|
|
177
|
-
expiresOn: new Date(Number(accessToken.expiresOn) * 1000),
|
|
178
|
-
tokenType: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
179
|
-
correlationId,
|
|
180
|
-
extExpiresOn: new Date(Number(accessToken.extendedExpiresOn) * 1000),
|
|
181
|
-
state: request.state,
|
|
182
|
-
};
|
|
183
|
-
return authenticationResult;
|
|
184
|
-
}
|
|
7
|
+
/*
|
|
8
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
9
|
+
* Licensed under the MIT License.
|
|
10
|
+
*/
|
|
11
|
+
class NestedAppAuthAdapter {
|
|
12
|
+
constructor(clientId, clientCapabilities, crypto, logger) {
|
|
13
|
+
this.clientId = clientId;
|
|
14
|
+
this.clientCapabilities = clientCapabilities;
|
|
15
|
+
this.crypto = crypto;
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
}
|
|
18
|
+
toNaaTokenRequest(request) {
|
|
19
|
+
let extraParams;
|
|
20
|
+
if (request.extraQueryParameters === undefined) {
|
|
21
|
+
extraParams = new Map();
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
extraParams = new Map(Object.entries(request.extraQueryParameters));
|
|
25
|
+
}
|
|
26
|
+
const requestBuilder = new RequestParameterBuilder();
|
|
27
|
+
const claims = requestBuilder.addClientCapabilitiesToClaims(request.claims, this.clientCapabilities);
|
|
28
|
+
const scopes = request.scopes || OIDC_DEFAULT_SCOPES;
|
|
29
|
+
const tokenRequest = {
|
|
30
|
+
platformBrokerId: request.account?.homeAccountId,
|
|
31
|
+
clientId: this.clientId,
|
|
32
|
+
authority: request.authority,
|
|
33
|
+
scope: scopes.join(" "),
|
|
34
|
+
correlationId: request.correlationId !== undefined
|
|
35
|
+
? request.correlationId
|
|
36
|
+
: this.crypto.createNewGuid(),
|
|
37
|
+
claims: !StringUtils.isEmptyObj(claims) ? claims : undefined,
|
|
38
|
+
state: request.state,
|
|
39
|
+
authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
40
|
+
extraParameters: extraParams,
|
|
41
|
+
};
|
|
42
|
+
return tokenRequest;
|
|
43
|
+
}
|
|
44
|
+
fromNaaTokenResponse(request, response, reqTimestamp) {
|
|
45
|
+
if (!response.token.id_token || !response.token.access_token) {
|
|
46
|
+
throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);
|
|
47
|
+
}
|
|
48
|
+
const expiresOn = new Date((reqTimestamp + (response.token.expires_in || 0)) * 1000);
|
|
49
|
+
const idTokenClaims = AuthToken.extractTokenClaims(response.token.id_token, this.crypto.base64Decode);
|
|
50
|
+
const account = this.fromNaaAccountInfo(response.account, response.token.id_token, idTokenClaims);
|
|
51
|
+
const scopes = response.token.scope || request.scope;
|
|
52
|
+
const authenticationResult = {
|
|
53
|
+
authority: response.token.authority || account.environment,
|
|
54
|
+
uniqueId: account.localAccountId,
|
|
55
|
+
tenantId: account.tenantId,
|
|
56
|
+
scopes: scopes.split(" "),
|
|
57
|
+
account,
|
|
58
|
+
idToken: response.token.id_token,
|
|
59
|
+
idTokenClaims,
|
|
60
|
+
accessToken: response.token.access_token,
|
|
61
|
+
fromCache: false,
|
|
62
|
+
expiresOn: expiresOn,
|
|
63
|
+
tokenType: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
64
|
+
correlationId: request.correlationId,
|
|
65
|
+
extExpiresOn: expiresOn,
|
|
66
|
+
state: request.state,
|
|
67
|
+
};
|
|
68
|
+
return authenticationResult;
|
|
69
|
+
}
|
|
70
|
+
/*
|
|
71
|
+
* export type AccountInfo = {
|
|
72
|
+
* homeAccountId: string;
|
|
73
|
+
* environment: string;
|
|
74
|
+
* tenantId: string;
|
|
75
|
+
* username: string;
|
|
76
|
+
* localAccountId: string;
|
|
77
|
+
* name?: string;
|
|
78
|
+
* idToken?: string;
|
|
79
|
+
* idTokenClaims?: TokenClaims & {
|
|
80
|
+
* [key: string]:
|
|
81
|
+
* | string
|
|
82
|
+
* | number
|
|
83
|
+
* | string[]
|
|
84
|
+
* | object
|
|
85
|
+
* | undefined
|
|
86
|
+
* | unknown;
|
|
87
|
+
* };
|
|
88
|
+
* nativeAccountId?: string;
|
|
89
|
+
* authorityType?: string;
|
|
90
|
+
* };
|
|
91
|
+
*/
|
|
92
|
+
fromNaaAccountInfo(fromAccount, idToken, idTokenClaims) {
|
|
93
|
+
const effectiveIdTokenClaims = idTokenClaims || fromAccount.idTokenClaims;
|
|
94
|
+
const localAccountId = fromAccount.localAccountId ||
|
|
95
|
+
effectiveIdTokenClaims?.oid ||
|
|
96
|
+
effectiveIdTokenClaims?.sub ||
|
|
97
|
+
"";
|
|
98
|
+
const tenantId = fromAccount.tenantId || effectiveIdTokenClaims?.tid || "";
|
|
99
|
+
const homeAccountId = fromAccount.homeAccountId || `${localAccountId}.${tenantId}`;
|
|
100
|
+
const username = fromAccount.username ||
|
|
101
|
+
effectiveIdTokenClaims?.preferred_username ||
|
|
102
|
+
"";
|
|
103
|
+
const name = fromAccount.name || effectiveIdTokenClaims?.name;
|
|
104
|
+
const tenantProfiles = new Map();
|
|
105
|
+
const tenantProfile = buildTenantProfile(homeAccountId, localAccountId, tenantId, effectiveIdTokenClaims);
|
|
106
|
+
tenantProfiles.set(tenantId, tenantProfile);
|
|
107
|
+
const account = {
|
|
108
|
+
homeAccountId,
|
|
109
|
+
environment: fromAccount.environment,
|
|
110
|
+
tenantId,
|
|
111
|
+
username,
|
|
112
|
+
localAccountId,
|
|
113
|
+
name,
|
|
114
|
+
idToken: idToken,
|
|
115
|
+
idTokenClaims: effectiveIdTokenClaims,
|
|
116
|
+
tenantProfiles,
|
|
117
|
+
};
|
|
118
|
+
return account;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
*
|
|
122
|
+
* @param error BridgeError
|
|
123
|
+
* @returns AuthError, ClientAuthError, ClientConfigurationError, ServerError, InteractionRequiredError
|
|
124
|
+
*/
|
|
125
|
+
fromBridgeError(error) {
|
|
126
|
+
if (isBridgeError(error)) {
|
|
127
|
+
switch (error.status) {
|
|
128
|
+
case BridgeStatusCode.UserCancel:
|
|
129
|
+
return new ClientAuthError(ClientAuthErrorCodes.userCanceled);
|
|
130
|
+
case BridgeStatusCode.NoNetwork:
|
|
131
|
+
return new ClientAuthError(ClientAuthErrorCodes.noNetworkConnectivity);
|
|
132
|
+
case BridgeStatusCode.AccountUnavailable:
|
|
133
|
+
return new ClientAuthError(ClientAuthErrorCodes.noAccountFound);
|
|
134
|
+
case BridgeStatusCode.Disabled:
|
|
135
|
+
return new ClientAuthError(ClientAuthErrorCodes.nestedAppAuthBridgeDisabled);
|
|
136
|
+
case BridgeStatusCode.NestedAppAuthUnavailable:
|
|
137
|
+
return new ClientAuthError(error.code ||
|
|
138
|
+
ClientAuthErrorCodes.nestedAppAuthBridgeDisabled, error.description);
|
|
139
|
+
case BridgeStatusCode.TransientError:
|
|
140
|
+
case BridgeStatusCode.PersistentError:
|
|
141
|
+
return new ServerError(error.code, error.description);
|
|
142
|
+
case BridgeStatusCode.UserInteractionRequired:
|
|
143
|
+
return new InteractionRequiredAuthError(error.code, error.description);
|
|
144
|
+
default:
|
|
145
|
+
return new AuthError(error.code, error.description);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return new AuthError("unknown_error", "An unknown error occurred");
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Returns an AuthenticationResult from the given cache items
|
|
154
|
+
*
|
|
155
|
+
* @param account
|
|
156
|
+
* @param idToken
|
|
157
|
+
* @param accessToken
|
|
158
|
+
* @param reqTimestamp
|
|
159
|
+
* @returns
|
|
160
|
+
*/
|
|
161
|
+
toAuthenticationResultFromCache(account, idToken, accessToken, request, correlationId) {
|
|
162
|
+
if (!idToken || !accessToken) {
|
|
163
|
+
throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);
|
|
164
|
+
}
|
|
165
|
+
const idTokenClaims = AuthToken.extractTokenClaims(idToken.secret, this.crypto.base64Decode);
|
|
166
|
+
const scopes = accessToken.target || request.scopes.join(" ");
|
|
167
|
+
const authenticationResult = {
|
|
168
|
+
authority: accessToken.environment || account.environment,
|
|
169
|
+
uniqueId: account.localAccountId,
|
|
170
|
+
tenantId: account.tenantId,
|
|
171
|
+
scopes: scopes.split(" "),
|
|
172
|
+
account,
|
|
173
|
+
idToken: idToken.secret,
|
|
174
|
+
idTokenClaims: idTokenClaims || {},
|
|
175
|
+
accessToken: accessToken.secret,
|
|
176
|
+
fromCache: true,
|
|
177
|
+
expiresOn: new Date(Number(accessToken.expiresOn) * 1000),
|
|
178
|
+
tokenType: request.authenticationScheme || AuthenticationScheme.BEARER,
|
|
179
|
+
correlationId,
|
|
180
|
+
extExpiresOn: new Date(Number(accessToken.extendedExpiresOn) * 1000),
|
|
181
|
+
state: request.state,
|
|
182
|
+
};
|
|
183
|
+
return authenticationResult;
|
|
184
|
+
}
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
export { NestedAppAuthAdapter };
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { NavigationOptions } from "./NavigationOptions";
|
|
2
|
-
export interface INavigationClient {
|
|
3
|
-
/**
|
|
4
|
-
* Navigates to other pages within the same web application
|
|
5
|
-
* Return false if this doesn't cause the page to reload i.e. Client-side navigation
|
|
6
|
-
* @param url
|
|
7
|
-
* @param options
|
|
8
|
-
*/
|
|
9
|
-
navigateInternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
10
|
-
/**
|
|
11
|
-
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
12
|
-
* @param url
|
|
13
|
-
* @param options
|
|
14
|
-
*/
|
|
15
|
-
navigateExternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
16
|
-
}
|
|
1
|
+
import { NavigationOptions } from "./NavigationOptions";
|
|
2
|
+
export interface INavigationClient {
|
|
3
|
+
/**
|
|
4
|
+
* Navigates to other pages within the same web application
|
|
5
|
+
* Return false if this doesn't cause the page to reload i.e. Client-side navigation
|
|
6
|
+
* @param url
|
|
7
|
+
* @param options
|
|
8
|
+
*/
|
|
9
|
+
navigateInternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
12
|
+
* @param url
|
|
13
|
+
* @param options
|
|
14
|
+
*/
|
|
15
|
+
navigateExternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
16
|
+
}
|
|
17
17
|
//# sourceMappingURL=INavigationClient.d.ts.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { INavigationClient } from "./INavigationClient";
|
|
2
|
-
import { NavigationOptions } from "./NavigationOptions";
|
|
3
|
-
export declare class NavigationClient implements INavigationClient {
|
|
4
|
-
/**
|
|
5
|
-
* Navigates to other pages within the same web application
|
|
6
|
-
* @param url
|
|
7
|
-
* @param options
|
|
8
|
-
*/
|
|
9
|
-
navigateInternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
10
|
-
/**
|
|
11
|
-
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
12
|
-
* @param url
|
|
13
|
-
* @param options
|
|
14
|
-
*/
|
|
15
|
-
navigateExternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
16
|
-
/**
|
|
17
|
-
* Default navigation implementation invoked by the internal and external functions
|
|
18
|
-
* @param url
|
|
19
|
-
* @param options
|
|
20
|
-
*/
|
|
21
|
-
private static defaultNavigateWindow;
|
|
22
|
-
}
|
|
1
|
+
import { INavigationClient } from "./INavigationClient";
|
|
2
|
+
import { NavigationOptions } from "./NavigationOptions";
|
|
3
|
+
export declare class NavigationClient implements INavigationClient {
|
|
4
|
+
/**
|
|
5
|
+
* Navigates to other pages within the same web application
|
|
6
|
+
* @param url
|
|
7
|
+
* @param options
|
|
8
|
+
*/
|
|
9
|
+
navigateInternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
12
|
+
* @param url
|
|
13
|
+
* @param options
|
|
14
|
+
*/
|
|
15
|
+
navigateExternal(url: string, options: NavigationOptions): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Default navigation implementation invoked by the internal and external functions
|
|
18
|
+
* @param url
|
|
19
|
+
* @param options
|
|
20
|
+
*/
|
|
21
|
+
private static defaultNavigateWindow;
|
|
22
|
+
}
|
|
23
23
|
//# sourceMappingURL=NavigationClient.d.ts.map
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
/*! @azure/msal-browser v3.
|
|
1
|
+
/*! @azure/msal-browser v3.22.0 2024-08-28 */
|
|
2
2
|
'use strict';
|
|
3
|
-
/*
|
|
4
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
-
* Licensed under the MIT License.
|
|
6
|
-
*/
|
|
7
|
-
class NavigationClient {
|
|
8
|
-
/**
|
|
9
|
-
* Navigates to other pages within the same web application
|
|
10
|
-
* @param url
|
|
11
|
-
* @param options
|
|
12
|
-
*/
|
|
13
|
-
navigateInternal(url, options) {
|
|
14
|
-
return NavigationClient.defaultNavigateWindow(url, options);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
18
|
-
* @param url
|
|
19
|
-
* @param options
|
|
20
|
-
*/
|
|
21
|
-
navigateExternal(url, options) {
|
|
22
|
-
return NavigationClient.defaultNavigateWindow(url, options);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Default navigation implementation invoked by the internal and external functions
|
|
26
|
-
* @param url
|
|
27
|
-
* @param options
|
|
28
|
-
*/
|
|
29
|
-
static defaultNavigateWindow(url, options) {
|
|
30
|
-
if (options.noHistory) {
|
|
31
|
-
window.location.replace(url);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
window.location.assign(url);
|
|
35
|
-
}
|
|
36
|
-
return new Promise((resolve) => {
|
|
37
|
-
setTimeout(() => {
|
|
38
|
-
resolve(true);
|
|
39
|
-
}, options.timeout);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
+
* Licensed under the MIT License.
|
|
6
|
+
*/
|
|
7
|
+
class NavigationClient {
|
|
8
|
+
/**
|
|
9
|
+
* Navigates to other pages within the same web application
|
|
10
|
+
* @param url
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
navigateInternal(url, options) {
|
|
14
|
+
return NavigationClient.defaultNavigateWindow(url, options);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Navigates to other pages outside the web application i.e. the Identity Provider
|
|
18
|
+
* @param url
|
|
19
|
+
* @param options
|
|
20
|
+
*/
|
|
21
|
+
navigateExternal(url, options) {
|
|
22
|
+
return NavigationClient.defaultNavigateWindow(url, options);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Default navigation implementation invoked by the internal and external functions
|
|
26
|
+
* @param url
|
|
27
|
+
* @param options
|
|
28
|
+
*/
|
|
29
|
+
static defaultNavigateWindow(url, options) {
|
|
30
|
+
if (options.noHistory) {
|
|
31
|
+
window.location.replace(url);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
window.location.assign(url);
|
|
35
|
+
}
|
|
36
|
+
return new Promise((resolve) => {
|
|
37
|
+
setTimeout(() => {
|
|
38
|
+
resolve(true);
|
|
39
|
+
}, options.timeout);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
export { NavigationClient };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { ApiId } from "../utils/BrowserConstants";
|
|
2
|
-
/**
|
|
3
|
-
* Additional information passed to the navigateInternal and navigateExternal functions
|
|
4
|
-
*/
|
|
5
|
-
export type NavigationOptions = {
|
|
6
|
-
/** The Id of the API that initiated navigation */
|
|
7
|
-
apiId: ApiId;
|
|
8
|
-
/** Suggested timeout (ms) based on the configuration provided to PublicClientApplication */
|
|
9
|
-
timeout: number;
|
|
10
|
-
/** When set to true the url should not be added to the browser history */
|
|
11
|
-
noHistory: boolean;
|
|
12
|
-
};
|
|
1
|
+
import { ApiId } from "../utils/BrowserConstants";
|
|
2
|
+
/**
|
|
3
|
+
* Additional information passed to the navigateInternal and navigateExternal functions
|
|
4
|
+
*/
|
|
5
|
+
export type NavigationOptions = {
|
|
6
|
+
/** The Id of the API that initiated navigation */
|
|
7
|
+
apiId: ApiId;
|
|
8
|
+
/** Suggested timeout (ms) based on the configuration provided to PublicClientApplication */
|
|
9
|
+
timeout: number;
|
|
10
|
+
/** When set to true the url should not be added to the browser history */
|
|
11
|
+
noHistory: boolean;
|
|
12
|
+
};
|
|
13
13
|
//# sourceMappingURL=NavigationOptions.d.ts.map
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common";
|
|
2
|
-
/**
|
|
3
|
-
* This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
|
|
4
|
-
*/
|
|
5
|
-
export declare class FetchClient implements INetworkModule {
|
|
6
|
-
/**
|
|
7
|
-
* Fetch Client for REST endpoints - Get request
|
|
8
|
-
* @param url
|
|
9
|
-
* @param headers
|
|
10
|
-
* @param body
|
|
11
|
-
*/
|
|
12
|
-
sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;
|
|
13
|
-
/**
|
|
14
|
-
* Fetch Client for REST endpoints - Post request
|
|
15
|
-
* @param url
|
|
16
|
-
* @param headers
|
|
17
|
-
* @param body
|
|
18
|
-
*/
|
|
19
|
-
sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;
|
|
20
|
-
/**
|
|
21
|
-
* Get Fetch API Headers object from string map
|
|
22
|
-
* @param inputHeaders
|
|
23
|
-
*/
|
|
24
|
-
private getFetchHeaders;
|
|
25
|
-
private getHeaderDict;
|
|
26
|
-
}
|
|
1
|
+
import { INetworkModule, NetworkRequestOptions, NetworkResponse } from "@azure/msal-common";
|
|
2
|
+
/**
|
|
3
|
+
* This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
|
|
4
|
+
*/
|
|
5
|
+
export declare class FetchClient implements INetworkModule {
|
|
6
|
+
/**
|
|
7
|
+
* Fetch Client for REST endpoints - Get request
|
|
8
|
+
* @param url
|
|
9
|
+
* @param headers
|
|
10
|
+
* @param body
|
|
11
|
+
*/
|
|
12
|
+
sendGetRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;
|
|
13
|
+
/**
|
|
14
|
+
* Fetch Client for REST endpoints - Post request
|
|
15
|
+
* @param url
|
|
16
|
+
* @param headers
|
|
17
|
+
* @param body
|
|
18
|
+
*/
|
|
19
|
+
sendPostRequestAsync<T>(url: string, options?: NetworkRequestOptions): Promise<NetworkResponse<T>>;
|
|
20
|
+
/**
|
|
21
|
+
* Get Fetch API Headers object from string map
|
|
22
|
+
* @param inputHeaders
|
|
23
|
+
*/
|
|
24
|
+
private getFetchHeaders;
|
|
25
|
+
private getHeaderDict;
|
|
26
|
+
}
|
|
27
27
|
//# sourceMappingURL=FetchClient.d.ts.map
|