@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.
Files changed (160) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_tslib.js +1 -1
  3. package/dist/app/ClientApplication.d.ts +58 -1
  4. package/dist/app/ClientApplication.d.ts.map +1 -1
  5. package/dist/app/ClientApplication.js +290 -75
  6. package/dist/app/ClientApplication.js.map +1 -1
  7. package/dist/app/IPublicClientApplication.d.ts +1 -0
  8. package/dist/app/IPublicClientApplication.d.ts.map +1 -1
  9. package/dist/app/IPublicClientApplication.js +4 -1
  10. package/dist/app/IPublicClientApplication.js.map +1 -1
  11. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  12. package/dist/app/PublicClientApplication.js +48 -42
  13. package/dist/app/PublicClientApplication.js.map +1 -1
  14. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +49 -0
  15. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts.map +1 -0
  16. package/dist/broker/nativeBroker/NativeMessageHandler.js +246 -0
  17. package/dist/broker/nativeBroker/NativeMessageHandler.js.map +1 -0
  18. package/dist/broker/nativeBroker/NativeRequest.d.ts +44 -0
  19. package/dist/broker/nativeBroker/NativeRequest.d.ts.map +1 -0
  20. package/dist/broker/nativeBroker/NativeResponse.d.ts +24 -0
  21. package/dist/broker/nativeBroker/NativeResponse.d.ts.map +1 -0
  22. package/dist/cache/AsyncMemoryStorage.js +1 -1
  23. package/dist/cache/BrowserCacheManager.d.ts +11 -0
  24. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  25. package/dist/cache/BrowserCacheManager.js +44 -2
  26. package/dist/cache/BrowserCacheManager.js.map +1 -1
  27. package/dist/cache/BrowserStorage.js +1 -1
  28. package/dist/cache/DatabaseStorage.js +1 -1
  29. package/dist/cache/MemoryStorage.js +1 -1
  30. package/dist/cache/TokenCache.d.ts +1 -0
  31. package/dist/cache/TokenCache.d.ts.map +1 -1
  32. package/dist/cache/TokenCache.js +2 -2
  33. package/dist/cache/TokenCache.js.map +1 -1
  34. package/dist/config/Configuration.d.ts +99 -38
  35. package/dist/config/Configuration.d.ts.map +1 -1
  36. package/dist/config/Configuration.js +4 -3
  37. package/dist/config/Configuration.js.map +1 -1
  38. package/dist/crypto/BrowserCrypto.js +1 -1
  39. package/dist/crypto/CryptoOps.d.ts.map +1 -1
  40. package/dist/crypto/CryptoOps.js +7 -10
  41. package/dist/crypto/CryptoOps.js.map +1 -1
  42. package/dist/crypto/GuidGenerator.js +1 -1
  43. package/dist/crypto/PkceGenerator.js +1 -1
  44. package/dist/crypto/SignedHttpRequest.js +1 -1
  45. package/dist/encode/Base64Decode.js +1 -1
  46. package/dist/encode/Base64Encode.js +1 -1
  47. package/dist/error/BrowserAuthError.d.ts +58 -0
  48. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  49. package/dist/error/BrowserAuthError.js +75 -3
  50. package/dist/error/BrowserAuthError.js.map +1 -1
  51. package/dist/error/BrowserConfigurationAuthError.js +1 -1
  52. package/dist/error/NativeAuthError.d.ts +47 -0
  53. package/dist/error/NativeAuthError.d.ts.map +1 -0
  54. package/dist/error/NativeAuthError.js +83 -0
  55. package/dist/error/NativeAuthError.js.map +1 -0
  56. package/dist/event/EventHandler.js +1 -1
  57. package/dist/event/EventMessage.js +1 -1
  58. package/dist/event/EventType.d.ts +2 -0
  59. package/dist/event/EventType.d.ts.map +1 -1
  60. package/dist/event/EventType.js +3 -1
  61. package/dist/event/EventType.js.map +1 -1
  62. package/dist/index.cjs.js +6130 -4824
  63. package/dist/index.cjs.js.map +1 -1
  64. package/dist/index.d.ts +6 -13
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +4 -13
  67. package/dist/index.js.map +1 -1
  68. package/dist/interaction_client/BaseInteractionClient.d.ts +12 -2
  69. package/dist/interaction_client/BaseInteractionClient.d.ts.map +1 -1
  70. package/dist/interaction_client/BaseInteractionClient.js +35 -3
  71. package/dist/interaction_client/BaseInteractionClient.js.map +1 -1
  72. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +1 -1
  73. package/dist/interaction_client/NativeInteractionClient.d.ts +57 -0
  74. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -0
  75. package/dist/interaction_client/NativeInteractionClient.js +337 -0
  76. package/dist/interaction_client/NativeInteractionClient.js.map +1 -0
  77. package/dist/interaction_client/PopupClient.d.ts +75 -2
  78. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  79. package/dist/interaction_client/PopupClient.js +315 -46
  80. package/dist/interaction_client/PopupClient.js.map +1 -1
  81. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  82. package/dist/interaction_client/RedirectClient.js +38 -9
  83. package/dist/interaction_client/RedirectClient.js.map +1 -1
  84. package/dist/interaction_client/SilentAuthCodeClient.d.ts +2 -1
  85. package/dist/interaction_client/SilentAuthCodeClient.d.ts.map +1 -1
  86. package/dist/interaction_client/SilentAuthCodeClient.js +3 -3
  87. package/dist/interaction_client/SilentAuthCodeClient.js.map +1 -1
  88. package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
  89. package/dist/interaction_client/SilentCacheClient.js +2 -4
  90. package/dist/interaction_client/SilentCacheClient.js.map +1 -1
  91. package/dist/interaction_client/SilentIframeClient.d.ts +5 -3
  92. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  93. package/dist/interaction_client/SilentIframeClient.js +38 -25
  94. package/dist/interaction_client/SilentIframeClient.js.map +1 -1
  95. package/dist/interaction_client/SilentRefreshClient.js +1 -1
  96. package/dist/interaction_client/StandardInteractionClient.d.ts +2 -8
  97. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  98. package/dist/interaction_client/StandardInteractionClient.js +5 -9
  99. package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
  100. package/dist/interaction_handler/InteractionHandler.d.ts +3 -8
  101. package/dist/interaction_handler/InteractionHandler.d.ts.map +1 -1
  102. package/dist/interaction_handler/InteractionHandler.js +19 -8
  103. package/dist/interaction_handler/InteractionHandler.js.map +1 -1
  104. package/dist/interaction_handler/RedirectHandler.d.ts +2 -2
  105. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  106. package/dist/interaction_handler/RedirectHandler.js +27 -20
  107. package/dist/interaction_handler/RedirectHandler.js.map +1 -1
  108. package/dist/interaction_handler/SilentHandler.d.ts +1 -1
  109. package/dist/interaction_handler/SilentHandler.d.ts.map +1 -1
  110. package/dist/interaction_handler/SilentHandler.js +5 -5
  111. package/dist/interaction_handler/SilentHandler.js.map +1 -1
  112. package/dist/internals.d.ts +17 -0
  113. package/dist/internals.d.ts.map +1 -0
  114. package/dist/internals.js +19 -0
  115. package/dist/internals.js.map +1 -0
  116. package/dist/navigation/NavigationClient.js +1 -1
  117. package/dist/network/FetchClient.js +1 -1
  118. package/dist/network/XhrClient.js +1 -1
  119. package/dist/packageMetadata.d.ts +1 -1
  120. package/dist/packageMetadata.js +2 -2
  121. package/dist/packageMetadata.js.map +1 -1
  122. package/dist/request/AuthorizationCodeRequest.d.ts +2 -1
  123. package/dist/request/AuthorizationCodeRequest.d.ts.map +1 -1
  124. package/dist/request/AuthorizationUrlRequest.d.ts +1 -1
  125. package/dist/request/AuthorizationUrlRequest.d.ts.map +1 -1
  126. package/dist/request/EndSessionPopupRequest.d.ts +1 -1
  127. package/dist/request/EndSessionPopupRequest.d.ts.map +1 -1
  128. package/dist/request/PopupRequest.d.ts +2 -2
  129. package/dist/request/PopupRequest.d.ts.map +1 -1
  130. package/dist/request/PopupWindowAttributes.d.ts +16 -0
  131. package/dist/request/PopupWindowAttributes.d.ts.map +1 -0
  132. package/dist/request/RedirectRequest.d.ts +1 -1
  133. package/dist/request/RedirectRequest.d.ts.map +1 -1
  134. package/dist/request/SsoSilentRequest.d.ts +2 -2
  135. package/dist/request/SsoSilentRequest.d.ts.map +1 -1
  136. package/dist/telemetry/BrowserPerformanceClient.js +1 -1
  137. package/dist/telemetry/BrowserPerformanceMeasurement.js +1 -1
  138. package/dist/utils/BrowserConstants.d.ts +12 -1
  139. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  140. package/dist/utils/BrowserConstants.js +14 -2
  141. package/dist/utils/BrowserConstants.js.map +1 -1
  142. package/dist/utils/BrowserProtocolUtils.js +1 -1
  143. package/dist/utils/BrowserStringUtils.js +1 -1
  144. package/dist/utils/BrowserUtils.d.ts +6 -0
  145. package/dist/utils/BrowserUtils.d.ts.map +1 -1
  146. package/dist/utils/BrowserUtils.js +11 -1
  147. package/dist/utils/BrowserUtils.js.map +1 -1
  148. package/dist/utils/MathUtils.js +1 -1
  149. package/lib/msal-browser.js +6130 -4824
  150. package/lib/msal-browser.js.map +1 -1
  151. package/lib/msal-browser.min.js +40 -40
  152. package/package.json +2 -2
  153. package/dist/interaction_handler/PopupHandler.d.ts +0 -29
  154. package/dist/interaction_handler/PopupHandler.d.ts.map +0 -1
  155. package/dist/interaction_handler/PopupHandler.js +0 -69
  156. package/dist/interaction_handler/PopupHandler.js.map +0 -1
  157. package/dist/utils/PopupUtils.d.ts +0 -73
  158. package/dist/utils/PopupUtils.d.ts.map +0 -1
  159. package/dist/utils/PopupUtils.js +0 -185
  160. 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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.23.0 2022-04-04 */
1
+ /*! @azure/msal-browser v2.25.0 2022-06-06 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';
@@ -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":"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"}
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,EAAmB,MAAM,oBAAoB,CAAC;AACtb,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAyC,MAAM,2BAA2B,CAAC;AAEzH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAE1E;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IAGjD,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE9C,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAEjD,SAAS,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAEjD,SAAS,CAAC,qBAAqB,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAExD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAGzB,SAAS,CAAC,QAAQ,CAAC,sBAAsB,SAAuB;gBAEpD,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAatG;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,oBAAoB,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAmBnG;;;OAGG;IACH,SAAS,CAAC,0BAA0B,CAAC,aAAa,EAAE,oBAAoB,GAAG,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;IAiB1G;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAiBrC;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAMrE;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAehE;;;OAGG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAcpD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMxC;;;OAGG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAiB9D;;;OAGG;IACH,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAMlD;;;OAGG;IACH,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAgB1E;;;OAGG;IACH,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAM9D;;;OAGG;IACH,yBAAyB,CAAC,eAAe,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAgB7E;;;OAGG;IACH,yBAAyB,CAAC,YAAY,EAAE,kBAAkB,GAAG,IAAI;IAMjE;;;OAGG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAiBhE;;;OAGG;IACH,cAAc,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI;IAMpD;;;OAGG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAgB5E;;;;OAIG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE,qBAAqB,GAAG,IAAI;IAK5F;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAI,uBAAuB,GAAG,IAAI;IAclE;;OAEG;IACH,wBAAwB,IAAI,KAAK,CAAC,MAAM,CAAC;IAOzC;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAKpE;;OAEG;IACH,kBAAkB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;IAMtC;;;OAGG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAKxE;;OAEG;IACH,gBAAgB,IAAI,WAAW,GAAG,IAAI;IAStC;;;OAGG;IACH,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI;IAWnD;;;OAGG;IACH,sBAAsB,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,GAAC,MAAM,CAAC,CAAC,GAAG,WAAW,EAAE;IA2BxG;;;;OAIG;IACH,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAuB3E;;;OAGG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAiBvE;;;;OAIG;IACH,kBAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE,eAAe,EAAE,gBAAgB,GAAG,IAAI;IAKvF;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IA2BzE;;;;;;OAMG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;IAU/E;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUhC;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAOnB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;;;;OAKG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAc9E;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAezC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAexB;;;OAGG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIzC;;;OAGG;IACH,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAMvD;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;;;OAIG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAYrC;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAUjD;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAU7C;;;OAGG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAU7C;;OAEG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWtD;;;;OAIG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAC,IAAI,GAAG,IAAI;IA6B/H;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IA0BtC;;;OAGG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAY9C;;;;OAIG;IACH,6BAA6B,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAyBrE,gBAAgB,CAAC,eAAe,EAAE,8BAA8B,EAAE,aAAa,EAAE,OAAO,GAAG,IAAI;IAO/F;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,8BAA8B;IA2BvF;;OAEG;IACH,sBAAsB,IAAI,kBAAkB,GAAG,IAAI;IAiBnD,uBAAuB,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO;IAUzD,wBAAwB,IAAI,MAAM,GAAG,IAAI;IAKzC,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAenD;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAkCnC;;OAEG;IACH,wBAAwB,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,MAAM;CAiB7F;AAED,eAAO,MAAM,6BAA6B,aAAc,MAAM,UAAU,MAAM,KAAG,mBAOhF,CAAC"}
@@ -1,7 +1,7 @@
1
- /*! @azure/msal-browser v2.23.0 2022-04-04 */
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) {