@azure/msal-browser 2.22.1 → 2.24.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/README.md +1 -1
- package/dist/_virtual/_tslib.js +1 -1
- package/dist/app/ClientApplication.d.ts +82 -2
- package/dist/app/ClientApplication.d.ts.map +1 -1
- package/dist/app/ClientApplication.js +388 -72
- package/dist/app/ClientApplication.js.map +1 -1
- package/dist/app/IPublicClientApplication.d.ts +4 -1
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.js +10 -1
- package/dist/app/IPublicClientApplication.js.map +1 -1
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.js +80 -38
- package/dist/app/PublicClientApplication.js.map +1 -1
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +49 -0
- package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -0
- package/dist/broker/nativeBroker/NativeMessageHandler.js +246 -0
- package/dist/broker/nativeBroker/NativeMessageHandler.js.map +1 -0
- package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -0
- package/dist/broker/nativeBroker/NativeRequest.d.ts.map +1 -0
- package/dist/broker/nativeBroker/NativeResponse.d.ts +24 -0
- package/dist/broker/nativeBroker/NativeResponse.d.ts.map +1 -0
- package/dist/cache/AsyncMemoryStorage.d.ts +3 -2
- package/dist/cache/AsyncMemoryStorage.d.ts.map +1 -1
- package/dist/cache/AsyncMemoryStorage.js +17 -6
- package/dist/cache/AsyncMemoryStorage.js.map +1 -1
- package/dist/cache/BrowserCacheManager.d.ts +11 -0
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +49 -7
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.js +1 -1
- package/dist/cache/DatabaseStorage.d.ts +5 -0
- package/dist/cache/DatabaseStorage.d.ts.map +1 -1
- package/dist/cache/DatabaseStorage.js +65 -13
- package/dist/cache/DatabaseStorage.js.map +1 -1
- package/dist/cache/MemoryStorage.js +1 -1
- package/dist/cache/TokenCache.js +1 -1
- package/dist/config/Configuration.d.ts +109 -36
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.js +19 -11
- package/dist/config/Configuration.js.map +1 -1
- package/dist/crypto/BrowserCrypto.d.ts.map +1 -1
- package/dist/crypto/BrowserCrypto.js +7 -6
- package/dist/crypto/BrowserCrypto.js.map +1 -1
- package/dist/crypto/CryptoOps.d.ts +12 -3
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +71 -36
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.d.ts +3 -2
- package/dist/crypto/GuidGenerator.d.ts.map +1 -1
- package/dist/crypto/GuidGenerator.js +4 -3
- package/dist/crypto/GuidGenerator.js.map +1 -1
- package/dist/crypto/PkceGenerator.js +1 -1
- package/dist/crypto/SignedHttpRequest.js +1 -1
- package/dist/encode/Base64Decode.d.ts.map +1 -1
- package/dist/encode/Base64Decode.js +3 -2
- package/dist/encode/Base64Decode.js.map +1 -1
- package/dist/encode/Base64Encode.d.ts.map +1 -1
- package/dist/encode/Base64Encode.js +5 -4
- package/dist/encode/Base64Encode.js.map +1 -1
- package/dist/error/BrowserAuthError.d.ts +58 -0
- package/dist/error/BrowserAuthError.d.ts.map +1 -1
- package/dist/error/BrowserAuthError.js +73 -1
- package/dist/error/BrowserAuthError.js.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.js +1 -1
- package/dist/error/NativeAuthError.d.ts +46 -0
- package/dist/error/NativeAuthError.d.ts.map +1 -0
- package/dist/error/NativeAuthError.js +82 -0
- package/dist/error/NativeAuthError.js.map +1 -0
- package/dist/event/EventHandler.js +1 -1
- package/dist/event/EventMessage.js +1 -1
- package/dist/event/EventType.d.ts +2 -0
- package/dist/event/EventType.d.ts.map +1 -1
- package/dist/event/EventType.js +3 -1
- package/dist/event/EventType.js.map +1 -1
- package/dist/index.cjs.js +5899 -3880
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +7 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -13
- package/dist/index.js.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +13 -2
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +37 -4
- package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
- package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +1 -1
- package/dist/interaction_client/NativeInteractionClient.d.ts +57 -0
- package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -0
- package/dist/interaction_client/NativeInteractionClient.js +334 -0
- package/dist/interaction_client/NativeInteractionClient.js.map +1 -0
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.js +37 -8
- 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 +40 -11
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +3 -2
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.js +5 -5
- 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 +12 -6
- package/dist/interaction_client/SilentCacheClient.js.map +1 -1
- package/dist/interaction_client/SilentIframeClient.d.ts +5 -3
- package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentIframeClient.js +51 -24
- 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 +16 -4
- package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.d.ts +2 -8
- package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/StandardInteractionClient.js +32 -22
- package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.js +15 -4
- package/dist/interaction_handler/InteractionHandler.js.map +1 -1
- package/dist/interaction_handler/PopupHandler.js +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 +16 -9
- package/dist/interaction_handler/RedirectHandler.js.map +1 -1
- package/dist/interaction_handler/SilentHandler.js +1 -1
- package/dist/internals.d.ts +18 -0
- package/dist/internals.d.ts.map +1 -0
- package/dist/internals.js +20 -0
- package/dist/internals.js.map +1 -0
- package/dist/navigation/NavigationClient.js +1 -1
- package/dist/network/FetchClient.d.ts.map +1 -1
- package/dist/network/FetchClient.js +3 -2
- package/dist/network/FetchClient.js.map +1 -1
- package/dist/network/XhrClient.js +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.js +2 -2
- package/dist/packageMetadata.js.map +1 -1
- package/dist/request/AuthorizationCodeRequest.d.ts +2 -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/PopupRequest.d.ts +1 -1
- package/dist/request/PopupRequest.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/SsoSilentRequest.d.ts +1 -1
- package/dist/request/SsoSilentRequest.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.d.ts +19 -0
- package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -0
- package/dist/telemetry/BrowserPerformanceClient.js +52 -0
- package/dist/telemetry/BrowserPerformanceClient.js.map +1 -0
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +13 -0
- package/dist/telemetry/BrowserPerformanceMeasurement.d.ts.map +1 -0
- package/dist/telemetry/BrowserPerformanceMeasurement.js +66 -0
- package/dist/telemetry/BrowserPerformanceMeasurement.js.map +1 -0
- package/dist/utils/BrowserConstants.d.ts +12 -1
- package/dist/utils/BrowserConstants.d.ts.map +1 -1
- package/dist/utils/BrowserConstants.js +14 -2
- package/dist/utils/BrowserConstants.js.map +1 -1
- package/dist/utils/BrowserProtocolUtils.js +1 -1
- package/dist/utils/BrowserStringUtils.d.ts.map +1 -1
- package/dist/utils/BrowserStringUtils.js +4 -2
- package/dist/utils/BrowserStringUtils.js.map +1 -1
- package/dist/utils/BrowserUtils.d.ts +6 -0
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +12 -2
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MathUtils.js +1 -1
- package/dist/utils/PopupUtils.js +1 -1
- package/lib/msal-browser.js +5899 -3880
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +41 -36
- package/package.json +2 -2
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.24.0 2022-05-02 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
|
|
4
|
-
import { AuthError, StringUtils, PromptValue } from '@azure/msal-common';
|
|
4
|
+
import { AuthError, Constants, PerformanceEvents, StringUtils, PromptValue, UrlString, ProtocolUtils } from '@azure/msal-common';
|
|
5
5
|
import { StandardInteractionClient } from './StandardInteractionClient.js';
|
|
6
6
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
7
7
|
import { InteractionType } from '../utils/BrowserConstants.js';
|
|
8
8
|
import { SilentHandler } from '../interaction_handler/SilentHandler.js';
|
|
9
|
+
import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';
|
|
10
|
+
import { NativeInteractionClient } from './NativeInteractionClient.js';
|
|
9
11
|
|
|
10
12
|
/*
|
|
11
13
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -13,8 +15,8 @@ import { SilentHandler } from '../interaction_handler/SilentHandler.js';
|
|
|
13
15
|
*/
|
|
14
16
|
var SilentIframeClient = /** @class */ (function (_super) {
|
|
15
17
|
__extends(SilentIframeClient, _super);
|
|
16
|
-
function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, correlationId) {
|
|
17
|
-
var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, correlationId) || this;
|
|
18
|
+
function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {
|
|
19
|
+
var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;
|
|
18
20
|
_this.apiId = apiId;
|
|
19
21
|
return _this;
|
|
20
22
|
}
|
|
@@ -24,48 +26,55 @@ var SilentIframeClient = /** @class */ (function (_super) {
|
|
|
24
26
|
*/
|
|
25
27
|
SilentIframeClient.prototype.acquireToken = function (request) {
|
|
26
28
|
return __awaiter(this, void 0, void 0, function () {
|
|
27
|
-
var silentRequest, serverTelemetryManager,
|
|
29
|
+
var acquireTokenMeasurement, silentRequest, serverTelemetryManager, authClient, e_1;
|
|
28
30
|
return __generator(this, function (_a) {
|
|
29
31
|
switch (_a.label) {
|
|
30
32
|
case 0:
|
|
31
33
|
this.logger.verbose("acquireTokenByIframe called");
|
|
34
|
+
acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);
|
|
32
35
|
// Check that we have some SSO data
|
|
33
36
|
if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {
|
|
34
37
|
this.logger.warning("No user hint provided. The authorization server may need more information to complete this request.");
|
|
35
38
|
}
|
|
36
39
|
// Check that prompt is set to none, throw error if it is set to anything else.
|
|
37
40
|
if (request.prompt && request.prompt !== PromptValue.NONE) {
|
|
41
|
+
acquireTokenMeasurement.endMeasurement({
|
|
42
|
+
success: false
|
|
43
|
+
});
|
|
38
44
|
throw BrowserAuthError.createSilentPromptValueError(request.prompt);
|
|
39
45
|
}
|
|
40
46
|
return [4 /*yield*/, this.initializeAuthorizationRequest(__assign(__assign({}, request), { prompt: PromptValue.NONE }), InteractionType.Silent)];
|
|
41
47
|
case 1:
|
|
42
48
|
silentRequest = _a.sent();
|
|
43
|
-
this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint ||
|
|
49
|
+
this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);
|
|
44
50
|
serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);
|
|
45
51
|
_a.label = 2;
|
|
46
52
|
case 2:
|
|
47
|
-
_a.trys.push([2,
|
|
48
|
-
return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];
|
|
49
|
-
case 3:
|
|
50
|
-
authCodeRequest = _a.sent();
|
|
53
|
+
_a.trys.push([2, 5, , 6]);
|
|
51
54
|
return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];
|
|
52
|
-
case
|
|
55
|
+
case 3:
|
|
53
56
|
authClient = _a.sent();
|
|
54
57
|
this.logger.verbose("Auth code client created");
|
|
55
|
-
return [4 /*yield*/,
|
|
58
|
+
return [4 /*yield*/, this.silentTokenHelper(authClient, silentRequest).then(function (result) {
|
|
59
|
+
acquireTokenMeasurement.endMeasurement({
|
|
60
|
+
success: true,
|
|
61
|
+
fromCache: false
|
|
62
|
+
});
|
|
63
|
+
return result;
|
|
64
|
+
})];
|
|
65
|
+
case 4: return [2 /*return*/, _a.sent()];
|
|
56
66
|
case 5:
|
|
57
|
-
navigateUrl = _a.sent();
|
|
58
|
-
return [4 /*yield*/, this.silentTokenHelper(navigateUrl, authCodeRequest, authClient, this.logger)];
|
|
59
|
-
case 6: return [2 /*return*/, _a.sent()];
|
|
60
|
-
case 7:
|
|
61
67
|
e_1 = _a.sent();
|
|
62
68
|
if (e_1 instanceof AuthError) {
|
|
63
69
|
e_1.setCorrelationId(this.correlationId);
|
|
64
70
|
}
|
|
65
71
|
serverTelemetryManager.cacheFailedRequest(e_1);
|
|
66
72
|
this.browserStorage.cleanRequestByState(silentRequest.state);
|
|
73
|
+
acquireTokenMeasurement.endMeasurement({
|
|
74
|
+
success: false
|
|
75
|
+
});
|
|
67
76
|
throw e_1;
|
|
68
|
-
case
|
|
77
|
+
case 6: return [2 /*return*/];
|
|
69
78
|
}
|
|
70
79
|
});
|
|
71
80
|
});
|
|
@@ -83,20 +92,38 @@ var SilentIframeClient = /** @class */ (function (_super) {
|
|
|
83
92
|
* @param navigateUrl
|
|
84
93
|
* @param userRequestScopes
|
|
85
94
|
*/
|
|
86
|
-
SilentIframeClient.prototype.silentTokenHelper = function (
|
|
95
|
+
SilentIframeClient.prototype.silentTokenHelper = function (authClient, silentRequest) {
|
|
87
96
|
return __awaiter(this, void 0, void 0, function () {
|
|
88
|
-
var silentHandler, msalFrame, hash, state;
|
|
97
|
+
var authCodeRequest, navigateUrl, silentHandler, msalFrame, hash, serverParams, state, nativeInteractionClient, userRequestState;
|
|
98
|
+
var _this = this;
|
|
89
99
|
return __generator(this, function (_a) {
|
|
90
100
|
switch (_a.label) {
|
|
91
|
-
case 0:
|
|
92
|
-
silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, browserRequestLogger, this.config.system.navigateFrameWait);
|
|
93
|
-
return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];
|
|
101
|
+
case 0: return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];
|
|
94
102
|
case 1:
|
|
103
|
+
authCodeRequest = _a.sent();
|
|
104
|
+
return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, silentRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme) }))];
|
|
105
|
+
case 2:
|
|
106
|
+
navigateUrl = _a.sent();
|
|
107
|
+
silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);
|
|
108
|
+
return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];
|
|
109
|
+
case 3:
|
|
95
110
|
msalFrame = _a.sent();
|
|
96
111
|
return [4 /*yield*/, silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout)];
|
|
97
|
-
case
|
|
112
|
+
case 4:
|
|
98
113
|
hash = _a.sent();
|
|
99
|
-
|
|
114
|
+
serverParams = UrlString.getDeserializedHash(hash);
|
|
115
|
+
state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);
|
|
116
|
+
if (serverParams.accountId) {
|
|
117
|
+
this.logger.verbose("Account id found in hash, calling WAM for token");
|
|
118
|
+
if (!this.nativeMessageHandler) {
|
|
119
|
+
throw BrowserAuthError.createNativeConnectionNotEstablishedError();
|
|
120
|
+
}
|
|
121
|
+
nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.correlationId);
|
|
122
|
+
userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;
|
|
123
|
+
return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, silentRequest), { state: userRequestState, prompt: PromptValue.NONE })).finally(function () {
|
|
124
|
+
_this.browserStorage.cleanRequestByState(state);
|
|
125
|
+
})];
|
|
126
|
+
}
|
|
100
127
|
// Handle response from hash string
|
|
101
128
|
return [2 /*return*/, silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];
|
|
102
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentIframeClient.js","sources":["../../src/interaction_client/SilentIframeClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n protected apiId: ApiId;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, correlationId);\n this.apiId = apiId;\n }\n\n /**\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\n * @param request\n */\n async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.verbose(\"acquireTokenByIframe called\");\n // Check that we have some SSO data\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\n }\n\n // Check that prompt is set to none, throw error if it is set to anything else.\n if (request.prompt && request.prompt !== PromptValue.NONE) {\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n ...request,\n prompt: PromptValue.NONE\n }, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || \"\", silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n // Create authorize request url\n const navigateUrl = await authClient.getAuthCodeUrl(silentRequest);\n\n return await this.silentTokenHelper(navigateUrl, authCodeRequest, authClient, this.logger);\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Helper which acquires an authorization code silently using a hidden iframe from given url\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n * @param navigateUrl\n * @param userRequestScopes\n */\n protected async silentTokenHelper(navigateUrl: string, authCodeRequest: CommonAuthorizationCodeRequest, authClient: AuthorizationCodeClient, browserRequestLogger: Logger): Promise<AuthenticationResult> {\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, browserRequestLogger, this.config.system.navigateFrameWait);\n // Get the frame handle for the silent request\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n const state = this.validateAndExtractStateFromHash(hash, InteractionType.Silent, authCodeRequest.correlationId);\n\n // Handle response from hash string\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SilentIframeClient.js","sources":["../../src/interaction_client/SilentIframeClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, ICrypto, Logger, StringUtils, PromptValue, CommonAuthorizationCodeRequest, AuthorizationCodeClient, AuthError, Constants, UrlString, ServerAuthorizationCodeResponse, ProtocolUtils, IPerformanceClient, PerformanceEvents } from \"@azure/msal-common\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants\";\nimport { SilentHandler } from \"../interaction_handler/SilentHandler\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n protected apiId: ApiId;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);\n this.apiId = apiId;\n }\n\n /**\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\n * @param request\n */\n async acquireToken(request: SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.verbose(\"acquireTokenByIframe called\");\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\n // Check that we have some SSO data\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\n }\n\n // Check that prompt is set to none, throw error if it is set to anything else.\n if (request.prompt && request.prompt !== PromptValue.NONE) {\n acquireTokenMeasurement.endMeasurement({\n success: false\n });\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await this.initializeAuthorizationRequest({\n ...request,\n prompt: PromptValue.NONE\n }, InteractionType.Silent);\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\n\n try {\n // Initialize the client\n const authClient: AuthorizationCodeClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Auth code client created\");\n\n return await this.silentTokenHelper(authClient, silentRequest).then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: false\n });\n return result;\n });\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n this.browserStorage.cleanRequestByState(silentRequest.state);\n acquireTokenMeasurement.endMeasurement({\n success: false\n });\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Helper which acquires an authorization code silently using a hidden iframe from given url\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n * @param navigateUrl\n * @param userRequestScopes\n */\n protected async silentTokenHelper(authClient: AuthorizationCodeClient, silentRequest: AuthorizationUrlRequest): Promise<AuthenticationResult> {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);\n // Create authorize request url\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...silentRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme)\n });\n // Create silent handler\n const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\n // Get the frame handle for the silent request\n const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\n\n if (serverParams.accountId) {\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\n if (!this.nativeMessageHandler) {\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\n }\n const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.correlationId);\n const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);\n return nativeInteractionClient.acquireToken({\n ...silentRequest,\n state: userRequestState,\n prompt: PromptValue.NONE\n }).finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Handle response from hash string\n return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentRefreshClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAa,iBAAiB,
|
|
1
|
+
{"version":3,"file":"SilentRefreshClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,kBAAkB,EAAa,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AAIhL,qBAAa,mBAAoB,SAAQ,yBAAyB;IAC9D;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiCnF;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB;;;;OAIG;cACa,wBAAwB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAKtL"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.24.0 2022-05-02 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
|
|
4
4
|
import { StandardInteractionClient } from './StandardInteractionClient.js';
|
|
5
|
-
import { AuthError, RefreshTokenClient } from '@azure/msal-common';
|
|
5
|
+
import { AuthError, PerformanceEvents, RefreshTokenClient } from '@azure/msal-common';
|
|
6
6
|
import { ApiId } from '../utils/BrowserConstants.js';
|
|
7
7
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
8
8
|
|
|
@@ -21,7 +21,7 @@ var SilentRefreshClient = /** @class */ (function (_super) {
|
|
|
21
21
|
*/
|
|
22
22
|
SilentRefreshClient.prototype.acquireToken = function (request) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function () {
|
|
24
|
-
var silentRequest, _a, serverTelemetryManager, refreshTokenClient;
|
|
24
|
+
var silentRequest, _a, acquireTokenMeasurement, serverTelemetryManager, refreshTokenClient;
|
|
25
25
|
var _this = this;
|
|
26
26
|
return __generator(this, function (_b) {
|
|
27
27
|
switch (_b.label) {
|
|
@@ -30,17 +30,29 @@ var SilentRefreshClient = /** @class */ (function (_super) {
|
|
|
30
30
|
return [4 /*yield*/, this.initializeBaseRequest(request)];
|
|
31
31
|
case 1:
|
|
32
32
|
silentRequest = __assign.apply(void 0, _a.concat([_b.sent()]));
|
|
33
|
+
acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);
|
|
33
34
|
serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);
|
|
34
35
|
return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];
|
|
35
36
|
case 2:
|
|
36
37
|
refreshTokenClient = _b.sent();
|
|
37
38
|
this.logger.verbose("Refresh token client created");
|
|
38
39
|
// Send request to renew token. Auth module will throw errors if token cannot be renewed.
|
|
39
|
-
return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)
|
|
40
|
+
return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)
|
|
41
|
+
.then(function (result) {
|
|
42
|
+
acquireTokenMeasurement.endMeasurement({
|
|
43
|
+
success: true,
|
|
44
|
+
fromCache: result.fromCache
|
|
45
|
+
});
|
|
46
|
+
return result;
|
|
47
|
+
})
|
|
48
|
+
.catch(function (e) {
|
|
40
49
|
if (e instanceof AuthError) {
|
|
41
50
|
e.setCorrelationId(_this.correlationId);
|
|
42
51
|
}
|
|
43
52
|
serverTelemetryManager.cacheFailedRequest(e);
|
|
53
|
+
acquireTokenMeasurement.endMeasurement({
|
|
54
|
+
success: false
|
|
55
|
+
});
|
|
44
56
|
throw e;
|
|
45
57
|
})];
|
|
46
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SilentRefreshClient.js","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...await this.initializeBaseRequest(request)\n };\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Refresh token client created\");\n\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest).catch(e
|
|
1
|
+
{"version":3,"file":"SilentRefreshClient.js","sources":["../../src/interaction_client/SilentRefreshClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient\";\nimport { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AuthError, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\nimport { ApiId } from \"../utils/BrowserConstants\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request\n */\n async acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult> {\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...await this.initializeBaseRequest(request)\n };\n const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\n const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\n\n const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);\n this.logger.verbose(\"Refresh token client created\");\n\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\n .then((result: AuthenticationResult) => {\n acquireTokenMeasurement.endMeasurement({\n success: true,\n fromCache: result.fromCache\n });\n\n return result;\n })\n .catch((e:AuthError)=> {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n }\n serverTelemetryManager.cacheFailedRequest(e);\n acquireTokenMeasurement.endMeasurement({\n success: false\n });\n throw e;\n });\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise<void> {\n // Synchronous so we must reject\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\n }\n\n /**\n * Creates a Refresh Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);\n return new RefreshTokenClient(clientConfig);\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;IAUyC,uCAAyB;IAAlE;;KAwDC;;;;;IAnDS,0CAAY,GAAlB,UAAmB,OAAgC;;;;;;;2CAExC,OAAO;wBACP,qBAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAA;;wBAF1C,aAAa,qCAEZ,SAAyC,GAC/C;wBACK,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,+BAA+B,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;wBAClJ,sBAAsB,GAAG,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBAE/E,qBAAM,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,EAAE,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAAA;;wBAA1I,kBAAkB,GAAG,SAAqH;wBAChJ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;;wBAGpD,sBAAO,kBAAkB,CAAC,0BAA0B,CAAC,aAAa,CAAC;iCAC9D,IAAI,CAAC,UAAC,MAA4B;gCAC/B,uBAAuB,CAAC,cAAc,CAAC;oCACnC,OAAO,EAAE,IAAI;oCACb,SAAS,EAAE,MAAM,CAAC,SAAS;iCAC9B,CAAC,CAAC;gCAEH,OAAO,MAAM,CAAC;6BACjB,CAAC;iCACD,KAAK,CAAC,UAAC,CAAW;gCACf,IAAI,CAAC,YAAY,SAAS,EAAE;oCACvB,CAAe,CAAC,gBAAgB,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;iCACzD;gCACD,sBAAsB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gCAC7C,uBAAuB,CAAC,cAAc,CAAC;oCACnC,OAAO,EAAE,KAAK;iCACjB,CAAC,CAAC;gCACH,MAAM,CAAC,CAAC;6BACX,CAAC,EAAC;;;;KACV;;;;IAKD,oCAAM,GAAN;;QAEI,OAAO,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,kCAAkC,EAAE,CAAC,CAAC;KAChF;;;;;;IAOe,sDAAwB,GAAxC,UAAyC,sBAA8C,EAAE,YAAqB,EAAE,iBAAqC;;;;;4BAE5H,qBAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAA;;wBAAzG,YAAY,GAAG,SAA0F;wBAC/G,sBAAO,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAC;;;;KAC/C;IACL,0BAAC;AAAD,CAxDA,CAAyC,yBAAyB;;;;"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, ServerAuthorizationCodeResponse, CommonEndSessionRequest, AccountInfo, AzureCloudOptions } from "@azure/msal-common";
|
|
2
2
|
import { BaseInteractionClient } from "./BaseInteractionClient";
|
|
3
|
-
import { BrowserConfiguration } from "../config/Configuration";
|
|
4
3
|
import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
|
|
5
|
-
import { BrowserCacheManager } from "../cache/BrowserCacheManager";
|
|
6
|
-
import { EventHandler } from "../event/EventHandler";
|
|
7
4
|
import { InteractionType } from "../utils/BrowserConstants";
|
|
8
5
|
import { EndSessionRequest } from "../request/EndSessionRequest";
|
|
9
|
-
import { INavigationClient } from "../navigation/INavigationClient";
|
|
10
6
|
import { RedirectRequest } from "../request/RedirectRequest";
|
|
11
7
|
import { PopupRequest } from "../request/PopupRequest";
|
|
12
8
|
import { SsoSilentRequest } from "../request/SsoSilentRequest";
|
|
@@ -14,8 +10,6 @@ import { SsoSilentRequest } from "../request/SsoSilentRequest";
|
|
|
14
10
|
* Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
|
|
15
11
|
*/
|
|
16
12
|
export declare abstract class StandardInteractionClient extends BaseInteractionClient {
|
|
17
|
-
protected navigationClient: INavigationClient;
|
|
18
|
-
constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, correlationId?: string);
|
|
19
13
|
/**
|
|
20
14
|
* Generates an auth code request tied to the url request.
|
|
21
15
|
* @param request
|
|
@@ -49,7 +43,7 @@ export declare abstract class StandardInteractionClient extends BaseInteractionC
|
|
|
49
43
|
* @param hash
|
|
50
44
|
* @param interactionType
|
|
51
45
|
*/
|
|
52
|
-
protected validateAndExtractStateFromHash(
|
|
46
|
+
protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string;
|
|
53
47
|
/**
|
|
54
48
|
* Used to get a discovered version of the default authority.
|
|
55
49
|
* @param requestAuthority
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,8BAA8B,EAAa,uBAAuB,EAAE,mBAAmB,EAAoB,SAAS,EAAoB,+BAA+B,EAAa,uBAAuB,EAA2D,WAAW,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AACrX,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE;;;OAGG;cACa,kCAAkC,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAiB7H;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,uBAAuB;IAuD7F;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAe7E;;;;OAIG;cACa,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM3L;;;;;OAKG;cACa,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkC7L;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,YAAY,EAAE,+BAA+B,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAmBjK;;;;OAIG;cACa,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAiCnI;;;;OAIG;cACa,8BAA8B,CAAC,OAAO,EAAE,eAAe,GAAC,YAAY,GAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC7K"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.24.0 2022-05-02 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
|
|
4
|
-
import { UrlString, Constants, AuthorizationCodeClient, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';
|
|
4
|
+
import { UrlString, Constants, AuthorizationCodeClient, PerformanceEvents, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';
|
|
5
5
|
import { BaseInteractionClient } from './BaseInteractionClient.js';
|
|
6
6
|
import { BrowserConstants } from '../utils/BrowserConstants.js';
|
|
7
7
|
import { version } from '../packageMetadata.js';
|
|
@@ -18,10 +18,8 @@ import { BrowserUtils } from '../utils/BrowserUtils.js';
|
|
|
18
18
|
*/
|
|
19
19
|
var StandardInteractionClient = /** @class */ (function (_super) {
|
|
20
20
|
__extends(StandardInteractionClient, _super);
|
|
21
|
-
function StandardInteractionClient(
|
|
22
|
-
|
|
23
|
-
_this.navigationClient = navigationClient;
|
|
24
|
-
return _this;
|
|
21
|
+
function StandardInteractionClient() {
|
|
22
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
27
25
|
* Generates an auth code request tied to the url request.
|
|
@@ -37,7 +35,7 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
37
35
|
return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];
|
|
38
36
|
case 1:
|
|
39
37
|
generatedPkceParams = _a.sent();
|
|
40
|
-
authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code:
|
|
38
|
+
authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: Constants.EMPTY_STRING, codeVerifier: generatedPkceParams.verifier });
|
|
41
39
|
request.codeChallenge = generatedPkceParams.challenge;
|
|
42
40
|
request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;
|
|
43
41
|
return [2 /*return*/, authCodeRequest];
|
|
@@ -51,7 +49,7 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
51
49
|
*/
|
|
52
50
|
StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {
|
|
53
51
|
this.logger.verbose("initializeLogoutRequest called", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);
|
|
54
|
-
var validLogoutRequest = __assign({ correlationId: this.browserCrypto.createNewGuid() }, logoutRequest);
|
|
52
|
+
var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);
|
|
55
53
|
/**
|
|
56
54
|
* Set logout_hint to be login_hint from ID Token Claims if present
|
|
57
55
|
* and logoutHint attribute wasn't manually set in logout request
|
|
@@ -153,7 +151,7 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
153
151
|
return __generator(this, function (_a) {
|
|
154
152
|
switch (_a.label) {
|
|
155
153
|
case 0:
|
|
156
|
-
this.logger.verbose("getClientConfiguration called");
|
|
154
|
+
this.logger.verbose("getClientConfiguration called", this.correlationId);
|
|
157
155
|
return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions)];
|
|
158
156
|
case 1:
|
|
159
157
|
discoveredAuthority = _a.sent();
|
|
@@ -180,9 +178,10 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
180
178
|
libraryInfo: {
|
|
181
179
|
sku: BrowserConstants.MSAL_SKU,
|
|
182
180
|
version: version,
|
|
183
|
-
cpu:
|
|
184
|
-
os:
|
|
185
|
-
}
|
|
181
|
+
cpu: Constants.EMPTY_STRING,
|
|
182
|
+
os: Constants.EMPTY_STRING
|
|
183
|
+
},
|
|
184
|
+
telemetry: this.config.telemetry
|
|
186
185
|
}];
|
|
187
186
|
}
|
|
188
187
|
});
|
|
@@ -192,10 +191,8 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
192
191
|
* @param hash
|
|
193
192
|
* @param interactionType
|
|
194
193
|
*/
|
|
195
|
-
StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (
|
|
194
|
+
StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {
|
|
196
195
|
this.logger.verbose("validateAndExtractStateFromHash called", requestCorrelationId);
|
|
197
|
-
// Deserialize hash fragment response parameters.
|
|
198
|
-
var serverParams = UrlString.getDeserializedHash(hash);
|
|
199
196
|
if (!serverParams.state) {
|
|
200
197
|
throw BrowserAuthError.createHashDoesNotContainStateError();
|
|
201
198
|
}
|
|
@@ -216,11 +213,12 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
216
213
|
*/
|
|
217
214
|
StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority, requestAzureCloudOptions) {
|
|
218
215
|
return __awaiter(this, void 0, void 0, function () {
|
|
219
|
-
var authorityOptions, userAuthority, builtAuthority;
|
|
216
|
+
var getAuthorityMeasurement, authorityOptions, userAuthority, builtAuthority;
|
|
220
217
|
return __generator(this, function (_a) {
|
|
221
218
|
switch (_a.label) {
|
|
222
219
|
case 0:
|
|
223
|
-
this.logger.verbose("getDiscoveredAuthority called");
|
|
220
|
+
this.logger.verbose("getDiscoveredAuthority called", this.correlationId);
|
|
221
|
+
getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);
|
|
224
222
|
authorityOptions = {
|
|
225
223
|
protocolMode: this.config.auth.protocolMode,
|
|
226
224
|
knownAuthorities: this.config.auth.knownAuthorities,
|
|
@@ -229,8 +227,20 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
229
227
|
};
|
|
230
228
|
userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;
|
|
231
229
|
builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);
|
|
232
|
-
this.logger.verbose("Creating discovered authority with configured authority");
|
|
233
|
-
return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)
|
|
230
|
+
this.logger.verbose("Creating discovered authority with configured authority", this.correlationId);
|
|
231
|
+
return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)
|
|
232
|
+
.then(function (result) {
|
|
233
|
+
getAuthorityMeasurement.endMeasurement({
|
|
234
|
+
success: true
|
|
235
|
+
});
|
|
236
|
+
return result;
|
|
237
|
+
})
|
|
238
|
+
.catch(function (error) {
|
|
239
|
+
getAuthorityMeasurement.endMeasurement({
|
|
240
|
+
success: false
|
|
241
|
+
});
|
|
242
|
+
throw error;
|
|
243
|
+
})];
|
|
234
244
|
case 1: return [2 /*return*/, _a.sent()];
|
|
235
245
|
}
|
|
236
246
|
});
|
|
@@ -247,7 +257,7 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
247
257
|
return __generator(this, function (_b) {
|
|
248
258
|
switch (_b.label) {
|
|
249
259
|
case 0:
|
|
250
|
-
this.logger.verbose("initializeAuthorizationRequest called");
|
|
260
|
+
this.logger.verbose("initializeAuthorizationRequest called", this.correlationId);
|
|
251
261
|
redirectUri = this.getRedirectUri(request.redirectUri);
|
|
252
262
|
browserState = {
|
|
253
263
|
interactionType: interactionType
|
|
@@ -259,8 +269,8 @@ var StandardInteractionClient = /** @class */ (function (_super) {
|
|
|
259
269
|
validatedRequest = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT }]);
|
|
260
270
|
account = request.account || this.browserStorage.getActiveAccount();
|
|
261
271
|
if (account) {
|
|
262
|
-
this.logger.verbose("Setting validated request account");
|
|
263
|
-
this.logger.verbosePii("Setting validated request account: " + account);
|
|
272
|
+
this.logger.verbose("Setting validated request account", this.correlationId);
|
|
273
|
+
this.logger.verbosePii("Setting validated request account: " + account.homeAccountId, this.correlationId);
|
|
264
274
|
validatedRequest.account = account;
|
|
265
275
|
}
|
|
266
276
|
// Check for ADAL/MSAL v1 SSO
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardInteractionClient.js","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n protected navigationClient: INavigationClient;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, correlationId);\n this.navigationClient = navigationClient;\n }\n\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: \"\",\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\");\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: \"\",\n os: \"\"\n }\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\");\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\");\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions);\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\");\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\");\n this.logger.verbosePii(`Setting validated request account: ${account}`);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StandardInteractionClient.js","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n },\n telemetry: this.config.telemetry\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n const getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\n .then((result: Authority) => {\n getAuthorityMeasurement.endMeasurement({\n success: true\n });\n\n return result;\n })\n .catch((error:Error) => {\n getAuthorityMeasurement.endMeasurement({\n success: false\n });\n\n throw error;\n });\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAAgB,8BAA8B,EAAE,oBAAoB,EAAE,uBAAuB,EAAoB,SAAS,EAAE,cAAc,EAAmB,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAAgB,8BAA8B,EAAE,oBAAoB,EAAE,uBAAuB,EAAoB,SAAS,EAAE,cAAc,EAAmB,aAAa,EAAE,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAE7P,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,oBAAY,iBAAiB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,8BAAsB,kBAAkB;IAEpC,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC1D,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;gBAE3B,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM;IAOpK;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhI;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6BzJ;;;;;;;OAOG;IACG,4BAA4B,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,GAAE,OAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6ChN;;;;;OAKG;cACa,4BAA4B,CAAC,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/I;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAaxD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.24.0 2022-05-02 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __awaiter, __generator } from '../_virtual/_tslib.js';
|
|
4
|
-
import { StringUtils, ClientAuthError, AuthorityFactory } from '@azure/msal-common';
|
|
5
|
-
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
4
|
+
import { StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';
|
|
5
|
+
import { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';
|
|
6
6
|
import { TemporaryCacheKeys } from '../utils/BrowserConstants.js';
|
|
7
7
|
|
|
8
8
|
/*
|
|
@@ -37,7 +37,18 @@ var InteractionHandler = /** @class */ (function () {
|
|
|
37
37
|
if (!requestState) {
|
|
38
38
|
throw ClientAuthError.createStateNotFoundError("Cached State");
|
|
39
39
|
}
|
|
40
|
-
|
|
40
|
+
try {
|
|
41
|
+
authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {
|
|
45
|
+
// Translate server error caused by user closing native prompt to corresponding first class MSAL error
|
|
46
|
+
throw BrowserAuthError.createUserCancelledError();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw e;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
41
52
|
return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];
|
|
42
53
|
});
|
|
43
54
|
});
|