@azure/msal-browser 2.23.0 → 2.25.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 +58 -1
- package/dist/app/ClientApplication.d.ts.map +1 -1
- package/dist/app/ClientApplication.js +290 -75
- package/dist/app/ClientApplication.js.map +1 -1
- package/dist/app/IPublicClientApplication.d.ts +1 -0
- package/dist/app/IPublicClientApplication.d.ts.map +1 -1
- package/dist/app/IPublicClientApplication.js +4 -1
- package/dist/app/IPublicClientApplication.js.map +1 -1
- package/dist/app/PublicClientApplication.d.ts.map +1 -1
- package/dist/app/PublicClientApplication.js +48 -42
- 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.js +1 -1
- package/dist/cache/BrowserCacheManager.d.ts +11 -0
- package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
- package/dist/cache/BrowserCacheManager.js +44 -2
- package/dist/cache/BrowserCacheManager.js.map +1 -1
- package/dist/cache/BrowserStorage.js +1 -1
- package/dist/cache/DatabaseStorage.js +1 -1
- package/dist/cache/MemoryStorage.js +1 -1
- package/dist/cache/TokenCache.d.ts +1 -0
- package/dist/cache/TokenCache.d.ts.map +1 -1
- package/dist/cache/TokenCache.js +2 -2
- package/dist/cache/TokenCache.js.map +1 -1
- package/dist/config/Configuration.d.ts +99 -38
- package/dist/config/Configuration.d.ts.map +1 -1
- package/dist/config/Configuration.js +4 -3
- package/dist/config/Configuration.js.map +1 -1
- package/dist/crypto/BrowserCrypto.js +1 -1
- package/dist/crypto/CryptoOps.d.ts.map +1 -1
- package/dist/crypto/CryptoOps.js +7 -10
- package/dist/crypto/CryptoOps.js.map +1 -1
- package/dist/crypto/GuidGenerator.js +1 -1
- package/dist/crypto/PkceGenerator.js +1 -1
- package/dist/crypto/SignedHttpRequest.js +1 -1
- package/dist/encode/Base64Decode.js +1 -1
- package/dist/encode/Base64Encode.js +1 -1
- package/dist/error/BrowserAuthError.d.ts +58 -0
- package/dist/error/BrowserAuthError.d.ts.map +1 -1
- package/dist/error/BrowserAuthError.js +75 -3
- package/dist/error/BrowserAuthError.js.map +1 -1
- package/dist/error/BrowserConfigurationAuthError.js +1 -1
- package/dist/error/NativeAuthError.d.ts +47 -0
- package/dist/error/NativeAuthError.d.ts.map +1 -0
- package/dist/error/NativeAuthError.js +83 -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 +6130 -4824
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +6 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -13
- package/dist/index.js.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.d.ts +12 -2
- package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
- package/dist/interaction_client/BaseInteractionClient.js +35 -3
- 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 +337 -0
- package/dist/interaction_client/NativeInteractionClient.js.map +1 -0
- package/dist/interaction_client/PopupClient.d.ts +75 -2
- package/dist/interaction_client/PopupClient.d.ts.map +1 -1
- package/dist/interaction_client/PopupClient.js +315 -46
- 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 +38 -9
- package/dist/interaction_client/RedirectClient.js.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts +2 -1
- package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
- package/dist/interaction_client/SilentAuthCodeClient.js +3 -3
- 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 +2 -4
- 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 +38 -25
- package/dist/interaction_client/SilentIframeClient.js.map +1 -1
- package/dist/interaction_client/SilentRefreshClient.js +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 +5 -9
- package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
- package/dist/interaction_handler/InteractionHandler.d.ts +3 -8
- package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
- package/dist/interaction_handler/InteractionHandler.js +19 -8
- package/dist/interaction_handler/InteractionHandler.js.map +1 -1
- package/dist/interaction_handler/RedirectHandler.d.ts +2 -2
- package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
- package/dist/interaction_handler/RedirectHandler.js +27 -20
- package/dist/interaction_handler/RedirectHandler.js.map +1 -1
- package/dist/interaction_handler/SilentHandler.d.ts +1 -1
- package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
- package/dist/interaction_handler/SilentHandler.js +5 -5
- package/dist/interaction_handler/SilentHandler.js.map +1 -1
- package/dist/internals.d.ts +17 -0
- package/dist/internals.d.ts.map +1 -0
- package/dist/internals.js +19 -0
- package/dist/internals.js.map +1 -0
- package/dist/navigation/NavigationClient.js +1 -1
- package/dist/network/FetchClient.js +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/EndSessionPopupRequest.d.ts +1 -1
- package/dist/request/EndSessionPopupRequest.d.ts.map +1 -1
- package/dist/request/PopupRequest.d.ts +2 -2
- package/dist/request/PopupRequest.d.ts.map +1 -1
- package/dist/request/PopupWindowAttributes.d.ts +16 -0
- package/dist/request/PopupWindowAttributes.d.ts.map +1 -0
- package/dist/request/RedirectRequest.d.ts +1 -1
- package/dist/request/RedirectRequest.d.ts.map +1 -1
- package/dist/request/SsoSilentRequest.d.ts +2 -2
- package/dist/request/SsoSilentRequest.d.ts.map +1 -1
- package/dist/telemetry/BrowserPerformanceClient.js +1 -1
- package/dist/telemetry/BrowserPerformanceMeasurement.js +1 -1
- 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.js +1 -1
- package/dist/utils/BrowserUtils.d.ts +6 -0
- package/dist/utils/BrowserUtils.d.ts.map +1 -1
- package/dist/utils/BrowserUtils.js +11 -1
- package/dist/utils/BrowserUtils.js.map +1 -1
- package/dist/utils/MathUtils.js +1 -1
- package/lib/msal-browser.js +6130 -4824
- package/lib/msal-browser.js.map +1 -1
- package/lib/msal-browser.min.js +40 -40
- package/package.json +2 -2
- package/dist/interaction_handler/PopupHandler.d.ts +0 -29
- package/dist/interaction_handler/PopupHandler.d.ts.map +0 -1
- package/dist/interaction_handler/PopupHandler.js +0 -69
- package/dist/interaction_handler/PopupHandler.js.map +0 -1
- package/dist/utils/PopupUtils.d.ts +0 -73
- package/dist/utils/PopupUtils.d.ts.map +0 -1
- package/dist/utils/PopupUtils.js +0 -185
- package/dist/utils/PopupUtils.js.map +0 -1
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Logger, AuthenticationScheme } from "@azure/msal-common";
|
|
2
|
+
import { NativeExtensionRequestBody } from "./NativeRequest";
|
|
3
|
+
import { BrowserConfiguration } from "../../config/Configuration";
|
|
4
|
+
export declare class NativeMessageHandler {
|
|
5
|
+
private extensionId;
|
|
6
|
+
private logger;
|
|
7
|
+
private handshakeTimeoutMs;
|
|
8
|
+
private responseId;
|
|
9
|
+
private timeoutId;
|
|
10
|
+
private resolvers;
|
|
11
|
+
private handshakeResolvers;
|
|
12
|
+
private messageChannel;
|
|
13
|
+
private windowListener;
|
|
14
|
+
constructor(logger: Logger, handshakeTimeoutMs: number, extensionId?: string);
|
|
15
|
+
/**
|
|
16
|
+
* Sends a given message to the extension and resolves with the extension response
|
|
17
|
+
* @param body
|
|
18
|
+
*/
|
|
19
|
+
sendMessage(body: NativeExtensionRequestBody): Promise<object>;
|
|
20
|
+
/**
|
|
21
|
+
* Returns an instance of the MessageHandler that has successfully established a connection with an extension
|
|
22
|
+
* @param logger
|
|
23
|
+
* @param handshakeTimeoutMs
|
|
24
|
+
*/
|
|
25
|
+
static createProvider(logger: Logger, handshakeTimeoutMs: number): Promise<NativeMessageHandler>;
|
|
26
|
+
/**
|
|
27
|
+
* Send handshake request helper.
|
|
28
|
+
*/
|
|
29
|
+
private sendHandshakeRequest;
|
|
30
|
+
/**
|
|
31
|
+
* Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.
|
|
32
|
+
* @param event
|
|
33
|
+
*/
|
|
34
|
+
private onWindowMessage;
|
|
35
|
+
/**
|
|
36
|
+
* Invoked when a message is received from the extension on the MessageChannel port
|
|
37
|
+
* @param event
|
|
38
|
+
*/
|
|
39
|
+
private onChannelMessage;
|
|
40
|
+
/**
|
|
41
|
+
* Returns boolean indicating whether or not the request should attempt to use native broker
|
|
42
|
+
* @param logger
|
|
43
|
+
* @param config
|
|
44
|
+
* @param nativeExtensionProvider
|
|
45
|
+
* @param authenticationScheme
|
|
46
|
+
*/
|
|
47
|
+
static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=NativeMessageHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeMessageHandler.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeMessageHandler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAa,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAA0B,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAOlE,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,cAAc,CAAgC;gBAE1C,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAW5E;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBpE;;;;OAIG;WACU,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IActG;;OAEG;YACW,oBAAoB;IAqClC;;;OAGG;IACH,OAAO,CAAC,eAAe;IA+BvB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuDxB;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,OAAO;CA4B/K"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/*! @azure/msal-browser v2.25.0 2022-06-06 */
|
|
2
|
+
'use strict';
|
|
3
|
+
import { __awaiter, __generator } from '../../_virtual/_tslib.js';
|
|
4
|
+
import { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.js';
|
|
5
|
+
import { AuthError, AuthenticationScheme } from '@azure/msal-common';
|
|
6
|
+
import { NativeAuthError } from '../../error/NativeAuthError.js';
|
|
7
|
+
import { BrowserAuthError } from '../../error/BrowserAuthError.js';
|
|
8
|
+
|
|
9
|
+
/*
|
|
10
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
11
|
+
* Licensed under the MIT License.
|
|
12
|
+
*/
|
|
13
|
+
var NativeMessageHandler = /** @class */ (function () {
|
|
14
|
+
function NativeMessageHandler(logger, handshakeTimeoutMs, extensionId) {
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
this.handshakeTimeoutMs = handshakeTimeoutMs;
|
|
17
|
+
this.extensionId = extensionId;
|
|
18
|
+
this.resolvers = new Map(); // Used for non-handshake messages
|
|
19
|
+
this.handshakeResolvers = new Map(); // Used for handshake messages
|
|
20
|
+
this.responseId = 0;
|
|
21
|
+
this.messageChannel = new MessageChannel();
|
|
22
|
+
this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Sends a given message to the extension and resolves with the extension response
|
|
26
|
+
* @param body
|
|
27
|
+
*/
|
|
28
|
+
NativeMessageHandler.prototype.sendMessage = function (body) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
30
|
+
var req;
|
|
31
|
+
var _this = this;
|
|
32
|
+
return __generator(this, function (_a) {
|
|
33
|
+
this.logger.trace("NativeMessageHandler - sendMessage called.");
|
|
34
|
+
req = {
|
|
35
|
+
channel: NativeConstants.CHANNEL_ID,
|
|
36
|
+
extensionId: this.extensionId,
|
|
37
|
+
responseId: this.responseId++,
|
|
38
|
+
body: body
|
|
39
|
+
};
|
|
40
|
+
this.logger.trace("NativeMessageHandler - Sending request to browser extension");
|
|
41
|
+
this.logger.tracePii("NativeMessageHandler - Sending request to browser extension: " + JSON.stringify(req));
|
|
42
|
+
this.messageChannel.port1.postMessage(req);
|
|
43
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
44
|
+
_this.resolvers.set(req.responseId, { resolve: resolve, reject: reject });
|
|
45
|
+
})];
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Returns an instance of the MessageHandler that has successfully established a connection with an extension
|
|
51
|
+
* @param logger
|
|
52
|
+
* @param handshakeTimeoutMs
|
|
53
|
+
*/
|
|
54
|
+
NativeMessageHandler.createProvider = function (logger, handshakeTimeoutMs) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
+
var preferredProvider, backupProvider;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
switch (_a.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
logger.trace("NativeMessageHandler - createProvider called.");
|
|
61
|
+
_a.label = 1;
|
|
62
|
+
case 1:
|
|
63
|
+
_a.trys.push([1, 3, , 5]);
|
|
64
|
+
preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);
|
|
65
|
+
return [4 /*yield*/, preferredProvider.sendHandshakeRequest()];
|
|
66
|
+
case 2:
|
|
67
|
+
_a.sent();
|
|
68
|
+
return [2 /*return*/, preferredProvider];
|
|
69
|
+
case 3:
|
|
70
|
+
_a.sent();
|
|
71
|
+
backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);
|
|
72
|
+
return [4 /*yield*/, backupProvider.sendHandshakeRequest()];
|
|
73
|
+
case 4:
|
|
74
|
+
_a.sent();
|
|
75
|
+
return [2 /*return*/, backupProvider];
|
|
76
|
+
case 5: return [2 /*return*/];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Send handshake request helper.
|
|
83
|
+
*/
|
|
84
|
+
NativeMessageHandler.prototype.sendHandshakeRequest = function () {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86
|
+
var req;
|
|
87
|
+
var _this = this;
|
|
88
|
+
return __generator(this, function (_a) {
|
|
89
|
+
this.logger.trace("NativeMessageHandler - sendHandshakeRequest called.");
|
|
90
|
+
// Register this event listener before sending handshake
|
|
91
|
+
window.addEventListener("message", this.windowListener, false); // false is important, because content script message processing should work first
|
|
92
|
+
req = {
|
|
93
|
+
channel: NativeConstants.CHANNEL_ID,
|
|
94
|
+
extensionId: this.extensionId,
|
|
95
|
+
responseId: this.responseId++,
|
|
96
|
+
body: {
|
|
97
|
+
method: NativeExtensionMethod.HandshakeRequest
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
this.messageChannel.port1.onmessage = function (event) {
|
|
101
|
+
_this.onChannelMessage(event);
|
|
102
|
+
};
|
|
103
|
+
window.postMessage(req, window.origin, [this.messageChannel.port2]);
|
|
104
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
105
|
+
_this.handshakeResolvers.set(req.responseId, { resolve: resolve, reject: reject });
|
|
106
|
+
_this.timeoutId = window.setTimeout(function () {
|
|
107
|
+
/*
|
|
108
|
+
* Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.
|
|
109
|
+
* This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port
|
|
110
|
+
*/
|
|
111
|
+
window.removeEventListener("message", _this.windowListener, false);
|
|
112
|
+
_this.messageChannel.port1.close();
|
|
113
|
+
_this.messageChannel.port2.close();
|
|
114
|
+
reject(BrowserAuthError.createNativeHandshakeTimeoutError());
|
|
115
|
+
_this.handshakeResolvers.delete(req.responseId);
|
|
116
|
+
}, _this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here
|
|
117
|
+
})];
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.
|
|
123
|
+
* @param event
|
|
124
|
+
*/
|
|
125
|
+
NativeMessageHandler.prototype.onWindowMessage = function (event) {
|
|
126
|
+
this.logger.trace("NativeMessageHandler - onWindowMessage called");
|
|
127
|
+
// We only accept messages from ourselves
|
|
128
|
+
if (event.source !== window) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
var request = event.data;
|
|
132
|
+
if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (request.extensionId && request.extensionId !== this.extensionId) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (request.body.method === NativeExtensionMethod.HandshakeRequest) {
|
|
139
|
+
// If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed
|
|
140
|
+
this.logger.verbose(request.extensionId ? "Extension with id: " + request.extensionId + " not installed" : "No extension installed");
|
|
141
|
+
clearTimeout(this.timeoutId);
|
|
142
|
+
this.messageChannel.port1.close();
|
|
143
|
+
this.messageChannel.port2.close();
|
|
144
|
+
window.removeEventListener("message", this.windowListener, false);
|
|
145
|
+
var handshakeResolver = this.handshakeResolvers.get(request.responseId);
|
|
146
|
+
if (handshakeResolver) {
|
|
147
|
+
handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Invoked when a message is received from the extension on the MessageChannel port
|
|
153
|
+
* @param event
|
|
154
|
+
*/
|
|
155
|
+
NativeMessageHandler.prototype.onChannelMessage = function (event) {
|
|
156
|
+
this.logger.trace("NativeMessageHandler - onChannelMessage called.");
|
|
157
|
+
var request = event.data;
|
|
158
|
+
var resolver = this.resolvers.get(request.responseId);
|
|
159
|
+
var handshakeResolver = this.handshakeResolvers.get(request.responseId);
|
|
160
|
+
try {
|
|
161
|
+
var method = request.body.method;
|
|
162
|
+
if (method === NativeExtensionMethod.Response) {
|
|
163
|
+
if (!resolver) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
var response = request.body.response;
|
|
167
|
+
this.logger.trace("NativeMessageHandler - Received response from browser extension");
|
|
168
|
+
this.logger.tracePii("NativeMessageHandler - Received response from browser extension: " + JSON.stringify(response));
|
|
169
|
+
if (response.status !== "Success") {
|
|
170
|
+
resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));
|
|
171
|
+
}
|
|
172
|
+
else if (response.result) {
|
|
173
|
+
if (response.result["code"] && response.result["description"]) {
|
|
174
|
+
resolver.reject(NativeAuthError.createError(response.result["code"], response.result["description"], response.result["ext"]));
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
resolver.resolve(response.result);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
throw AuthError.createUnexpectedError("Event does not contain result.");
|
|
182
|
+
}
|
|
183
|
+
this.resolvers.delete(request.responseId);
|
|
184
|
+
}
|
|
185
|
+
else if (method === NativeExtensionMethod.HandshakeResponse) {
|
|
186
|
+
if (!handshakeResolver) {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
clearTimeout(this.timeoutId); // Clear setTimeout
|
|
190
|
+
window.removeEventListener("message", this.windowListener, false); // Remove 'No extension' listener
|
|
191
|
+
this.extensionId = request.extensionId;
|
|
192
|
+
this.logger.verbose("NativeMessageHandler - Received HandshakeResponse from extension: " + this.extensionId);
|
|
193
|
+
handshakeResolver.resolve();
|
|
194
|
+
this.handshakeResolvers.delete(request.responseId);
|
|
195
|
+
}
|
|
196
|
+
// Do nothing if method is not Response or HandshakeResponse
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
this.logger.error("Error parsing response from WAM Extension");
|
|
200
|
+
this.logger.errorPii("Error parsing response from WAM Extension: " + err.toString());
|
|
201
|
+
this.logger.errorPii("Unable to parse " + event);
|
|
202
|
+
if (resolver) {
|
|
203
|
+
resolver.reject(err);
|
|
204
|
+
}
|
|
205
|
+
else if (handshakeResolver) {
|
|
206
|
+
handshakeResolver.reject(err);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Returns boolean indicating whether or not the request should attempt to use native broker
|
|
212
|
+
* @param logger
|
|
213
|
+
* @param config
|
|
214
|
+
* @param nativeExtensionProvider
|
|
215
|
+
* @param authenticationScheme
|
|
216
|
+
*/
|
|
217
|
+
NativeMessageHandler.isNativeAvailable = function (config, logger, nativeExtensionProvider, authenticationScheme) {
|
|
218
|
+
logger.trace("isNativeAvailable called");
|
|
219
|
+
if (!config.system.allowNativeBroker) {
|
|
220
|
+
logger.trace("isNativeAvailable: allowNativeBroker is not enabled, returning false");
|
|
221
|
+
// Developer disabled WAM
|
|
222
|
+
return false;
|
|
223
|
+
}
|
|
224
|
+
if (!nativeExtensionProvider) {
|
|
225
|
+
logger.trace("isNativeAvailable: WAM extension provider is not initialized, returning false");
|
|
226
|
+
// Extension is not available
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
if (authenticationScheme) {
|
|
230
|
+
switch (authenticationScheme) {
|
|
231
|
+
case AuthenticationScheme.BEARER:
|
|
232
|
+
case AuthenticationScheme.POP:
|
|
233
|
+
logger.trace("isNativeAvailable: authenticationScheme is supported, returning true");
|
|
234
|
+
return true;
|
|
235
|
+
default:
|
|
236
|
+
logger.trace("isNativeAvailable: authenticationScheme is not supported, returning false");
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return true;
|
|
241
|
+
};
|
|
242
|
+
return NativeMessageHandler;
|
|
243
|
+
}());
|
|
244
|
+
|
|
245
|
+
export { NativeMessageHandler };
|
|
246
|
+
//# sourceMappingURL=NativeMessageHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeMessageHandler.js","sources":["../../../src/broker/nativeBroker/NativeMessageHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NativeConstants, NativeExtensionMethod } from \"../../utils/BrowserConstants\";\nimport { Logger, AuthError, AuthenticationScheme } from \"@azure/msal-common\";\nimport { NativeExtensionRequest, NativeExtensionRequestBody } from \"./NativeRequest\";\nimport { NativeAuthError } from \"../../error/NativeAuthError\";\nimport { BrowserAuthError } from \"../../error/BrowserAuthError\";\nimport { BrowserConfiguration } from \"../../config/Configuration\";\n\ntype ResponseResolvers<T> = {\n resolve: (value:T|PromiseLike<T>) => void;\n reject: (value:AuthError|Error|PromiseLike<Error>|PromiseLike<AuthError>) => void;\n};\n\nexport class NativeMessageHandler {\n private extensionId: string | undefined;\n private logger: Logger;\n private handshakeTimeoutMs: number;\n private responseId: number;\n private timeoutId: number | undefined;\n private resolvers: Map<number, ResponseResolvers<object>>;\n private handshakeResolvers: Map<number, ResponseResolvers<void>>;\n private messageChannel: MessageChannel;\n private windowListener: (event: MessageEvent) => void;\n\n constructor(logger: Logger, handshakeTimeoutMs: number, extensionId?: string) {\n this.logger = logger;\n this.handshakeTimeoutMs = handshakeTimeoutMs;\n this.extensionId = extensionId;\n this.resolvers = new Map(); // Used for non-handshake messages\n this.handshakeResolvers = new Map(); // Used for handshake messages\n this.responseId = 0;\n this.messageChannel = new MessageChannel();\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\n }\n\n /**\n * Sends a given message to the extension and resolves with the extension response\n * @param body \n */\n async sendMessage(body: NativeExtensionRequestBody): Promise<object> {\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n body: body\n };\n\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(req)}`);\n this.messageChannel.port1.postMessage(req);\n\n return new Promise((resolve, reject) => {\n this.resolvers.set(req.responseId, {resolve, reject});\n });\n }\n\n /**\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\n * @param logger \n * @param handshakeTimeoutMs\n */\n static async createProvider(logger: Logger, handshakeTimeoutMs: number): Promise<NativeMessageHandler> {\n logger.trace(\"NativeMessageHandler - createProvider called.\");\n try {\n const preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\n await preferredProvider.sendHandshakeRequest();\n return preferredProvider;\n } catch (e) {\n // If preferred extension fails for whatever reason, fallback to using any installed extension\n const backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\n await backupProvider.sendHandshakeRequest();\n return backupProvider;\n }\n }\n\n /**\n * Send handshake request helper.\n */\n private async sendHandshakeRequest(): Promise<void> {\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\n // Register this event listener before sending handshake\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\n\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: this.responseId++,\n\n body: {\n method: NativeExtensionMethod.HandshakeRequest\n }\n };\n\n this.messageChannel.port1.onmessage = (event) => {\n this.onChannelMessage(event);\n };\n\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\n\n return new Promise((resolve, reject) => {\n this.handshakeResolvers.set(req.responseId, {resolve, reject});\n this.timeoutId = window.setTimeout(() => {\n /*\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\n */\n window.removeEventListener(\"message\", this.windowListener, false);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\n this.handshakeResolvers.delete(req.responseId);\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\n });\n }\n\n /**\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\n * @param event \n */\n private onWindowMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\n // We only accept messages from ourselves\n if (event.source !== window) {\n return;\n }\n\n const request = event.data;\n\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\n return;\n }\n\n if (request.extensionId && request.extensionId !== this.extensionId) {\n return;\n }\n\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\n this.logger.verbose(request.extensionId ? `Extension with id: ${request.extensionId} not installed` : \"No extension installed\");\n clearTimeout(this.timeoutId);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n window.removeEventListener(\"message\", this.windowListener, false);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n if (handshakeResolver) {\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\n }\n }\n }\n\n /**\n * Invoked when a message is received from the extension on the MessageChannel port\n * @param event \n */\n private onChannelMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\n const request = event.data;\n \n const resolver = this.resolvers.get(request.responseId);\n const handshakeResolver = this.handshakeResolvers.get(request.responseId);\n\n try {\n const method = request.body.method;\n \n if (method === NativeExtensionMethod.Response) {\n if (!resolver) {\n return;\n }\n const response = request.body.response;\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\n this.logger.tracePii(`NativeMessageHandler - Received response from browser extension: ${JSON.stringify(response)}`);\n if (response.status !== \"Success\") {\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\n } else if (response.result) {\n if (response.result[\"code\"] && response.result[\"description\"]) {\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\n } else {\n resolver.resolve(response.result);\n }\n } else {\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\n }\n this.resolvers.delete(request.responseId);\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\n if (!handshakeResolver) {\n return;\n }\n clearTimeout(this.timeoutId); // Clear setTimeout\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\n this.extensionId = request.extensionId;\n this.logger.verbose(`NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`);\n\n handshakeResolver.resolve();\n this.handshakeResolvers.delete(request.responseId);\n } \n // Do nothing if method is not Response or HandshakeResponse\n } catch (err) {\n this.logger.error(\"Error parsing response from WAM Extension\");\n this.logger.errorPii(`Error parsing response from WAM Extension: ${err.toString()}`);\n this.logger.errorPii(`Unable to parse ${event}`);\n\n if (resolver) {\n resolver.reject(err as AuthError);\n } else if (handshakeResolver) {\n handshakeResolver.reject(err as AuthError);\n }\n }\n }\n \n /**\n * Returns boolean indicating whether or not the request should attempt to use native broker\n * @param logger\n * @param config\n * @param nativeExtensionProvider\n * @param authenticationScheme \n */\n static isNativeAvailable(config: BrowserConfiguration, logger: Logger, nativeExtensionProvider?: NativeMessageHandler, authenticationScheme?: AuthenticationScheme): boolean {\n logger.trace(\"isNativeAvailable called\");\n if (!config.system.allowNativeBroker) {\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\n // Developer disabled WAM\n return false;\n }\n\n if (!nativeExtensionProvider) {\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\n // Extension is not available\n return false;\n }\n\n if (authenticationScheme) {\n switch(authenticationScheme) {\n case AuthenticationScheme.BEARER:\n case AuthenticationScheme.POP:\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\n return true;\n default:\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\n return false;\n }\n }\n\n return true;\n }\n} \n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { NativeExtensionMethod } from "../../utils/BrowserConstants";
|
|
2
|
+
import { StringDict } from "@azure/msal-common";
|
|
3
|
+
/**
|
|
4
|
+
* Token request which native broker will use to acquire tokens
|
|
5
|
+
*/
|
|
6
|
+
export declare type NativeTokenRequest = {
|
|
7
|
+
accountId: string;
|
|
8
|
+
clientId: string;
|
|
9
|
+
authority: string;
|
|
10
|
+
redirectUri: string;
|
|
11
|
+
scopes: string;
|
|
12
|
+
correlationId: string;
|
|
13
|
+
windowTitleSubstring: string;
|
|
14
|
+
prompt?: string;
|
|
15
|
+
nonce?: string;
|
|
16
|
+
claims?: string;
|
|
17
|
+
state?: string;
|
|
18
|
+
reqCnf?: string;
|
|
19
|
+
keyId?: string;
|
|
20
|
+
tokenType?: string;
|
|
21
|
+
shrClaims?: string;
|
|
22
|
+
shrNonce?: string;
|
|
23
|
+
resourceRequestMethod?: string;
|
|
24
|
+
resourceRequestUri?: string;
|
|
25
|
+
extendedExpiryToken?: boolean;
|
|
26
|
+
extraParameters?: StringDict;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Request which will be forwarded to native broker by the browser extension
|
|
30
|
+
*/
|
|
31
|
+
export declare type NativeExtensionRequestBody = {
|
|
32
|
+
method: NativeExtensionMethod;
|
|
33
|
+
request?: NativeTokenRequest;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Browser extension request
|
|
37
|
+
*/
|
|
38
|
+
export declare type NativeExtensionRequest = {
|
|
39
|
+
channel: string;
|
|
40
|
+
responseId: number;
|
|
41
|
+
extensionId?: string;
|
|
42
|
+
body: NativeExtensionRequestBody;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=NativeRequest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeRequest.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeRequest.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,oBAAY,kBAAkB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,oBAAY,0BAA0B,GAAG;IACrC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,oBAAY,sBAAsB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,0BAA0B,CAAA;CACnC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Account properties returned by Native Platform e.g. WAM
|
|
3
|
+
*/
|
|
4
|
+
export declare type NativeAccountInfo = {
|
|
5
|
+
id: string;
|
|
6
|
+
properties: object;
|
|
7
|
+
userName: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Token response returned by Native Platform e.g. WAM
|
|
11
|
+
*/
|
|
12
|
+
export declare type NativeResponse = {
|
|
13
|
+
access_token: string;
|
|
14
|
+
account: NativeAccountInfo;
|
|
15
|
+
client_info: string;
|
|
16
|
+
expires_in: number;
|
|
17
|
+
id_token: string;
|
|
18
|
+
properties: object;
|
|
19
|
+
scopes: string;
|
|
20
|
+
state: string;
|
|
21
|
+
shr?: string;
|
|
22
|
+
extendedLifetimeToken?: boolean;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=NativeResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeResponse.d.ts","sourceRoot":"","sources":["../../../src/broker/nativeBroker/NativeResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,oBAAY,cAAc,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACnC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { CacheOptions } from "../config/Configuration";
|
|
|
3
3
|
import { BrowserCacheLocation, InteractionType } from "../utils/BrowserConstants";
|
|
4
4
|
import { MemoryStorage } from "./MemoryStorage";
|
|
5
5
|
import { IWindowStorage } from "./IWindowStorage";
|
|
6
|
+
import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest";
|
|
6
7
|
/**
|
|
7
8
|
* This class implements the cache storage interface for MSAL through browser local or session storage.
|
|
8
9
|
* Cookies are only used if storeAuthStateInCookie is true, and are only used for
|
|
@@ -153,6 +154,12 @@ export declare class BrowserCacheManager extends CacheManager {
|
|
|
153
154
|
* @param account
|
|
154
155
|
*/
|
|
155
156
|
getAccountInfoByFilter(accountFilter: Partial<Omit<AccountInfo, "idTokenClaims" | "name">>): AccountInfo[];
|
|
157
|
+
/**
|
|
158
|
+
* Checks the cache for accounts matching loginHint or SID
|
|
159
|
+
* @param loginHint
|
|
160
|
+
* @param sid
|
|
161
|
+
*/
|
|
162
|
+
getAccountInfoByHints(loginHint?: string, sid?: string): AccountInfo | null;
|
|
156
163
|
/**
|
|
157
164
|
* fetch throttling entity from the platform cache
|
|
158
165
|
* @param throttlingCacheKey
|
|
@@ -283,6 +290,10 @@ export declare class BrowserCacheManager extends CacheManager {
|
|
|
283
290
|
* Gets the token exchange parameters from the cache. Throws an error if nothing is found.
|
|
284
291
|
*/
|
|
285
292
|
getCachedRequest(state: string, browserCrypto: ICrypto): CommonAuthorizationCodeRequest;
|
|
293
|
+
/**
|
|
294
|
+
* Gets cached native request for redirect flows
|
|
295
|
+
*/
|
|
296
|
+
getCachedNativeRequest(): NativeTokenRequest | null;
|
|
286
297
|
isInteractionInProgress(matchClientId?: boolean): boolean;
|
|
287
298
|
getInteractionInProgress(): string | null;
|
|
288
299
|
setInteractionInProgress(inProgress: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserCacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/BrowserCacheManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAA+C,8BAA8B,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,qBAAqB,EAAE,gBAAgB,EAAiB,MAAM,EAAE,uBAAuB,EAAiC,WAAW,EAA6C,mBAAmB,
|
|
1
|
+
{"version":3,"file":"BrowserCacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/BrowserCacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*! @azure/msal-browser v2.
|
|
1
|
+
/*! @azure/msal-browser v2.25.0 2022-06-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';
|
|
4
|
-
import { AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';
|
|
4
|
+
import { AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ClientAuthError, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';
|
|
5
5
|
import { BrowserAuthError } from '../error/BrowserAuthError.js';
|
|
6
6
|
import { BrowserCacheLocation, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';
|
|
7
7
|
import { BrowserStorage } from './BrowserStorage.js';
|
|
@@ -398,6 +398,30 @@ var BrowserCacheManager = /** @class */ (function (_super) {
|
|
|
398
398
|
return true;
|
|
399
399
|
});
|
|
400
400
|
};
|
|
401
|
+
/**
|
|
402
|
+
* Checks the cache for accounts matching loginHint or SID
|
|
403
|
+
* @param loginHint
|
|
404
|
+
* @param sid
|
|
405
|
+
*/
|
|
406
|
+
BrowserCacheManager.prototype.getAccountInfoByHints = function (loginHint, sid) {
|
|
407
|
+
var matchingAccounts = this.getAllAccounts().filter(function (accountInfo) {
|
|
408
|
+
if (sid) {
|
|
409
|
+
var accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims["sid"];
|
|
410
|
+
return sid === accountSid;
|
|
411
|
+
}
|
|
412
|
+
if (loginHint) {
|
|
413
|
+
return loginHint === accountInfo.username;
|
|
414
|
+
}
|
|
415
|
+
return false;
|
|
416
|
+
});
|
|
417
|
+
if (matchingAccounts.length === 1) {
|
|
418
|
+
return matchingAccounts[0];
|
|
419
|
+
}
|
|
420
|
+
else if (matchingAccounts.length > 1) {
|
|
421
|
+
throw ClientAuthError.createMultipleMatchingAccountsInCacheError();
|
|
422
|
+
}
|
|
423
|
+
return null;
|
|
424
|
+
};
|
|
401
425
|
/**
|
|
402
426
|
* fetch throttling entity from the platform cache
|
|
403
427
|
* @param throttlingCacheKey
|
|
@@ -715,6 +739,7 @@ var BrowserCacheManager = /** @class */ (function (_super) {
|
|
|
715
739
|
this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));
|
|
716
740
|
this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));
|
|
717
741
|
this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));
|
|
742
|
+
this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));
|
|
718
743
|
this.setInteractionInProgress(false);
|
|
719
744
|
};
|
|
720
745
|
/**
|
|
@@ -792,6 +817,23 @@ var BrowserCacheManager = /** @class */ (function (_super) {
|
|
|
792
817
|
}
|
|
793
818
|
return parsedRequest;
|
|
794
819
|
};
|
|
820
|
+
/**
|
|
821
|
+
* Gets cached native request for redirect flows
|
|
822
|
+
*/
|
|
823
|
+
BrowserCacheManager.prototype.getCachedNativeRequest = function () {
|
|
824
|
+
this.logger.trace("BrowserCacheManager.getCachedNativeRequest called");
|
|
825
|
+
var cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);
|
|
826
|
+
if (!cachedRequest) {
|
|
827
|
+
this.logger.trace("BrowserCacheManager.getCachedNativeRequest: No cached native request found");
|
|
828
|
+
return null;
|
|
829
|
+
}
|
|
830
|
+
var parsedRequest = this.validateAndParseJson(cachedRequest);
|
|
831
|
+
if (!parsedRequest) {
|
|
832
|
+
this.logger.error("BrowserCacheManager.getCachedNativeRequest: Unable to parse native request");
|
|
833
|
+
return null;
|
|
834
|
+
}
|
|
835
|
+
return parsedRequest;
|
|
836
|
+
};
|
|
795
837
|
BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {
|
|
796
838
|
var clientId = this.getInteractionInProgress();
|
|
797
839
|
if (matchClientId) {
|