@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
@@ -1,12 +1,8 @@
1
- import { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, CommonEndSessionRequest, AccountInfo, AzureCloudOptions, IPerformanceClient } from "@azure/msal-common";
1
+ import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, ServerAuthorizationCodeResponse, CommonEndSessionRequest, AccountInfo, AzureCloudOptions } from "@azure/msal-common";
2
2
  import { BaseInteractionClient } from "./BaseInteractionClient";
3
- import { BrowserConfiguration } from "../config/Configuration";
4
3
  import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
5
- import { BrowserCacheManager } from "../cache/BrowserCacheManager";
6
- import { EventHandler } from "../event/EventHandler";
7
4
  import { InteractionType } from "../utils/BrowserConstants";
8
5
  import { EndSessionRequest } from "../request/EndSessionRequest";
9
- import { INavigationClient } from "../navigation/INavigationClient";
10
6
  import { RedirectRequest } from "../request/RedirectRequest";
11
7
  import { PopupRequest } from "../request/PopupRequest";
12
8
  import { SsoSilentRequest } from "../request/SsoSilentRequest";
@@ -14,8 +10,6 @@ import { SsoSilentRequest } from "../request/SsoSilentRequest";
14
10
  * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
15
11
  */
16
12
  export declare abstract class StandardInteractionClient extends BaseInteractionClient {
17
- protected navigationClient: INavigationClient;
18
- constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, correlationId?: string);
19
13
  /**
20
14
  * Generates an auth code request tied to the url request.
21
15
  * @param request
@@ -49,7 +43,7 @@ export declare abstract class StandardInteractionClient extends BaseInteractionC
49
43
  * @param hash
50
44
  * @param interactionType
51
45
  */
52
- protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string;
46
+ protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string;
53
47
  /**
54
48
  * Used to get a discovered version of the default authority.
55
49
  * @param requestAuthority
@@ -1 +1 @@
1
- {"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,8BAA8B,EAAa,uBAAuB,EAAE,mBAAmB,EAAoB,SAAS,EAAgE,uBAAuB,EAA2D,WAAW,EAAE,iBAAiB,EAAqB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1Z,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE,SAAS,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;gBAElC,MAAM,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,MAAM;IAKlP;;;OAGG;cACa,kCAAkC,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAiB7H;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,uBAAuB;IAuD7F;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAe7E;;;;OAIG;cACa,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM3L;;;;;OAKG;cACa,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkC7L;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAqBhI;;;;OAIG;cACa,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAiCnI;;;;OAIG;cACa,8BAA8B,CAAC,OAAO,EAAE,eAAe,GAAC,YAAY,GAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC7K"}
1
+ {"version":3,"file":"StandardInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,8BAA8B,EAAa,uBAAuB,EAAE,mBAAmB,EAAoB,SAAS,EAAoB,+BAA+B,EAAa,uBAAuB,EAA2D,WAAW,EAAE,iBAAiB,EAAqB,MAAM,oBAAoB,CAAC;AACrX,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAoB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAI9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;GAEG;AACH,8BAAsB,yBAA0B,SAAQ,qBAAqB;IACzE;;;OAGG;cACa,kCAAkC,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAiB7H;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,uBAAuB;IAuD7F;;;;OAIG;IACH,SAAS,CAAC,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI;IAe7E;;;;OAIG;cACa,oBAAoB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAM3L;;;;;OAKG;cACa,sBAAsB,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkC7L;;;OAGG;IACH,SAAS,CAAC,+BAA+B,CAAC,YAAY,EAAE,+BAA+B,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM;IAmBjK;;;;OAIG;cACa,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,wBAAwB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC;IAiCnI;;;;OAIG;cACa,8BAA8B,CAAC,OAAO,EAAE,eAAe,GAAC,YAAY,GAAC,gBAAgB,EAAE,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAqC7K"}
@@ -1,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 { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
4
  import { UrlString, Constants, AuthorizationCodeClient, PerformanceEvents, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';
@@ -18,10 +18,8 @@ import { BrowserUtils } from '../utils/BrowserUtils.js';
18
18
  */
19
19
  var StandardInteractionClient = /** @class */ (function (_super) {
20
20
  __extends(StandardInteractionClient, _super);
21
- function StandardInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, correlationId) {
22
- var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, performanceClient, correlationId) || this;
23
- _this.navigationClient = navigationClient;
24
- return _this;
21
+ function StandardInteractionClient() {
22
+ return _super !== null && _super.apply(this, arguments) || this;
25
23
  }
26
24
  /**
27
25
  * Generates an auth code request tied to the url request.
@@ -51,7 +49,7 @@ var StandardInteractionClient = /** @class */ (function (_super) {
51
49
  */
52
50
  StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {
53
51
  this.logger.verbose("initializeLogoutRequest called", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);
54
- var validLogoutRequest = __assign({ correlationId: this.browserCrypto.createNewGuid() }, logoutRequest);
52
+ var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);
55
53
  /**
56
54
  * Set logout_hint to be login_hint from ID Token Claims if present
57
55
  * and logoutHint attribute wasn't manually set in logout request
@@ -193,10 +191,8 @@ var StandardInteractionClient = /** @class */ (function (_super) {
193
191
  * @param hash
194
192
  * @param interactionType
195
193
  */
196
- StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (hash, interactionType, requestCorrelationId) {
194
+ StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {
197
195
  this.logger.verbose("validateAndExtractStateFromHash called", requestCorrelationId);
198
- // Deserialize hash fragment response parameters.
199
- var serverParams = UrlString.getDeserializedHash(hash);
200
196
  if (!serverParams.state) {
201
197
  throw BrowserAuthError.createHashDoesNotContainStateError();
202
198
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StandardInteractionClient.js","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, Logger, ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents, IPerformanceClient } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n protected navigationClient: INavigationClient;\n\n constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, correlationId?: string) {\n super(config, storageImpl, browserCrypto, logger, eventHandler, performanceClient, correlationId);\n this.navigationClient = navigationClient;\n }\n\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n },\n telemetry: this.config.telemetry\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(hash: string, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n // Deserialize hash fragment response parameters.\n const serverParams: ServerAuthorizationCodeResponse = UrlString.getDeserializedHash(hash);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n const getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\n .then((result: Authority) => {\n getAuthorityMeasurement.endMeasurement({\n success: true\n });\n\n return result;\n })\n .catch((error:Error) => {\n getAuthorityMeasurement.endMeasurement({\n success: false\n });\n\n throw error;\n });\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StandardInteractionClient.js","sources":["../../src/interaction_client/StandardInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerTelemetryManager, CommonAuthorizationCodeRequest, Constants, AuthorizationCodeClient, ClientConfiguration, AuthorityOptions, Authority, AuthorityFactory, ServerAuthorizationCodeResponse, UrlString, CommonEndSessionRequest, ProtocolUtils, ResponseMode, StringUtils, IdTokenClaims, AccountInfo, AzureCloudOptions, PerformanceEvents } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest\";\nimport { BrowserConstants, InteractionType } from \"../utils/BrowserConstants\";\nimport { version } from \"../packageMetadata\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { BrowserProtocolUtils, BrowserStateObject } from \"../utils/BrowserProtocolUtils\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest\";\nimport { BrowserUtils } from \"../utils/BrowserUtils\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\n const generatedPkceParams = await this.browserCrypto.generatePkceCodes();\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest {\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest?.correlationId);\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.correlationId || this.browserCrypto.createNewGuid(),\n ...logoutRequest\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if(logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\n if (logoutHint) {\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\n }\n } else {\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\n }\n } else {\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\n } else {\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\n }\n } else {\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\n }\n } else {\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param serverTelemetryManager\n * @param authorityUrl\n */\n protected async createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient> {\n // Create auth module.\n const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions);\n return new AuthorizationCodeClient(clientConfig);\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param serverTelemetryManager\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration> {\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\n const discoveredAuthority = await this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions);\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities\n },\n systemOptions: {\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true\n },\n loggerOptions: {\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\n logLevel: this.config.system.loggerOptions.logLevel,\n correlationId: this.correlationId\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING\n },\n telemetry: this.config.telemetry\n };\n }\n\n /**\n * @param hash\n * @param interactionType\n */\n protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string {\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\n if (!serverParams.state) {\n throw BrowserAuthError.createHashDoesNotContainStateError();\n }\n\n const platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\n if (!platformStateObj) {\n throw BrowserAuthError.createUnableToParseStateError();\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\n }\n\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\n return serverParams.state;\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param requestAuthority\n * @param requestCorrelationId\n */\n protected async getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority> {\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\n const getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority( userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\n return await AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\n .then((result: Authority) => {\n getAuthorityMeasurement.endMeasurement({\n success: true\n });\n\n return result;\n })\n .catch((error:Error) => {\n getAuthorityMeasurement.endMeasurement({\n success: false\n });\n\n throw error;\n });\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(request: RedirectRequest|PopupRequest|SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest> {\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state)|| Constants.EMPTY_STRING,\n browserState\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...await this.initializeBaseRequest(request),\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || this.browserCrypto.createNewGuid(),\n responseMode: ResponseMode.FRAGMENT\n };\n\n const account = request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\n this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -4,17 +4,12 @@ export declare type InteractionParams = {};
4
4
  /**
5
5
  * Abstract class which defines operations for a browser interaction handling class.
6
6
  */
7
- export declare abstract class InteractionHandler {
7
+ export declare class InteractionHandler {
8
8
  protected authModule: AuthorizationCodeClient;
9
9
  protected browserStorage: BrowserCacheManager;
10
10
  protected authCodeRequest: CommonAuthorizationCodeRequest;
11
- protected browserRequestLogger: Logger;
12
- constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger);
13
- /**
14
- * Function to enable user interaction.
15
- * @param requestUrl
16
- */
17
- abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise<HTMLIFrameElement> | Promise<void>;
11
+ protected logger: Logger;
12
+ constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger);
18
13
  /**
19
14
  * Function to handle response parameters from hash.
20
15
  * @param locationHash
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAAgB,8BAA8B,EAAE,oBAAoB,EAAE,uBAAuB,EAAoB,SAAS,EAAE,cAAc,EAAmB,aAAa,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEhP,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,oBAAY,iBAAiB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,8BAAsB,kBAAkB;IAEpC,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC1D,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;gBAE3B,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM;IAOpK;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhI;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkBzJ;;;;;;;OAOG;IACG,4BAA4B,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,GAAE,OAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6ChN;;;;;OAKG;cACa,4BAA4B,CAAC,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/I;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAaxD"}
1
+ {"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/InteractionHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAAgB,8BAA8B,EAAE,oBAAoB,EAAE,uBAAuB,EAAoB,SAAS,EAAE,cAAc,EAAmB,aAAa,EAAE,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAE7P,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAInE,oBAAY,iBAAiB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,SAAS,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC9C,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC;IAC9C,SAAS,CAAC,eAAe,EAAE,8BAA8B,CAAC;IAC1D,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM;IAOtJ;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6BzJ;;;;;;;OAOG;IACG,4BAA4B,CAAC,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,GAAE,OAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6ChN;;;;;OAKG;cACa,4BAA4B,CAAC,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/I;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,aAAa,GAAG,IAAI;CAaxD"}
@@ -1,8 +1,8 @@
1
- /*! @azure/msal-browser v2.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
- import { StringUtils, ClientAuthError, AuthorityFactory } from '@azure/msal-common';
5
- import { BrowserAuthError } from '../error/BrowserAuthError.js';
4
+ import { StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';
5
+ import { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';
6
6
  import { TemporaryCacheKeys } from '../utils/BrowserConstants.js';
7
7
 
8
8
  /*
@@ -13,11 +13,11 @@ import { TemporaryCacheKeys } from '../utils/BrowserConstants.js';
13
13
  * Abstract class which defines operations for a browser interaction handling class.
14
14
  */
15
15
  var InteractionHandler = /** @class */ (function () {
16
- function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) {
16
+ function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, logger) {
17
17
  this.authModule = authCodeModule;
18
18
  this.browserStorage = storageImpl;
19
19
  this.authCodeRequest = authCodeRequest;
20
- this.browserRequestLogger = browserRequestLogger;
20
+ this.logger = logger;
21
21
  }
22
22
  /**
23
23
  * Function to handle response parameters from hash.
@@ -27,7 +27,7 @@ var InteractionHandler = /** @class */ (function () {
27
27
  return __awaiter(this, void 0, void 0, function () {
28
28
  var stateKey, requestState, authCodeResponse;
29
29
  return __generator(this, function (_a) {
30
- this.browserRequestLogger.verbose("InteractionHandler.handleCodeResponse called");
30
+ this.logger.verbose("InteractionHandler.handleCodeResponse called");
31
31
  // Check that location hash isn't empty.
32
32
  if (StringUtils.isEmpty(locationHash)) {
33
33
  throw BrowserAuthError.createEmptyHashError(locationHash);
@@ -37,7 +37,18 @@ var InteractionHandler = /** @class */ (function () {
37
37
  if (!requestState) {
38
38
  throw ClientAuthError.createStateNotFoundError("Cached State");
39
39
  }
40
- authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);
40
+ try {
41
+ authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);
42
+ }
43
+ catch (e) {
44
+ if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {
45
+ // Translate server error caused by user closing native prompt to corresponding first class MSAL error
46
+ throw BrowserAuthError.createUserCancelledError();
47
+ }
48
+ else {
49
+ throw e;
50
+ }
51
+ }
41
52
  return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];
42
53
  });
43
54
  });
@@ -57,7 +68,7 @@ var InteractionHandler = /** @class */ (function () {
57
68
  return __generator(this, function (_a) {
58
69
  switch (_a.label) {
59
70
  case 0:
60
- this.browserRequestLogger.trace("InteractionHandler.handleCodeResponseFromServer called");
71
+ this.logger.trace("InteractionHandler.handleCodeResponseFromServer called");
61
72
  stateKey = this.browserStorage.generateStateKey(state);
62
73
  requestState = this.browserStorage.getTemporaryCache(stateKey);
63
74
  if (!requestState) {
@@ -1 +1 @@
1
- {"version":3,"file":"InteractionHandler.js","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodePayload , StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport abstract class InteractionHandler {\n\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected browserRequestLogger: Logger;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.browserRequestLogger = browserRequestLogger;\n }\n\n /**\n * Function to enable user interaction.\n * @param requestUrl\n */\n abstract initiateAuthRequest(requestUrl: string, params: InteractionParams): Window | Promise<HTMLIFrameElement> | Promise<void>;\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.browserRequestLogger.verbose(\"InteractionHandler.handleCodeResponse called\");\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\n }\n\n /**\n * Process auth code response from AAD\n * @param authCodeResponse \n * @param state \n * @param authority \n * @param networkModule \n * @returns \n */\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise<AuthenticationResult> {\n this.browserRequestLogger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n \n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n if (validateNonce) {\n authCodeResponse.nonce = cachedNonce || undefined;\n }\n \n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Updates authority based on cloudInstanceHostname\n * @param cloudInstanceHostname \n * @param authority \n * @param networkModule \n */\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n this.authModule.updateAuthority(cloudInstanceAuthority);\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\"Cache credential could not be parsed\");\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n }\n }\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InteractionHandler.js","sources":["../../src/interaction_handler/InteractionHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodePayload , StringUtils, CommonAuthorizationCodeRequest, AuthenticationResult, AuthorizationCodeClient, AuthorityFactory, Authority, INetworkModule, ClientAuthError, CcsCredential, Logger, ServerError } from \"@azure/msal-common\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { TemporaryCacheKeys } from \"../utils/BrowserConstants\";\n\nexport type InteractionParams = {};\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport class InteractionHandler {\n\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected logger: Logger;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.logger = logger;\n }\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.logger.verbose(\"InteractionHandler.handleCodeResponse called\");\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n return this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule);\n }\n\n /**\n * Process auth code response from AAD\n * @param authCodeResponse \n * @param state \n * @param authority \n * @param networkModule \n * @returns \n */\n async handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, state: string, authority: Authority, networkModule: INetworkModule, validateNonce: boolean = true): Promise<AuthenticationResult> {\n this.logger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n \n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n if (validateNonce) {\n authCodeResponse.nonce = cachedNonce || undefined;\n }\n \n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Updates authority based on cloudInstanceHostname\n * @param cloudInstanceHostname \n * @param authority \n * @param networkModule \n */\n protected async updateTokenEndpointAuthority(cloudInstanceHostname: string, authority: Authority, networkModule: INetworkModule): Promise<void> {\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${authority.tenant}/`;\n const cloudInstanceAuthority = await AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options);\n this.authModule.updateAuthority(cloudInstanceAuthority);\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\"Cache credential could not be parsed\");\n this.authModule.logger.errorPii(`Cache credential could not be parsed: ${cachedCcsCred}`);\n }\n }\n return null;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export declare type RedirectParams = InteractionParams & {
10
10
  };
11
11
  export declare class RedirectHandler extends InteractionHandler {
12
12
  private browserCrypto;
13
- constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, browserCrypto: ICrypto);
13
+ constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto);
14
14
  /**
15
15
  * Redirects window to given URL.
16
16
  * @param urlNavigate
@@ -20,6 +20,6 @@ export declare class RedirectHandler extends InteractionHandler {
20
20
  * Handle authorization code response in the window.
21
21
  * @param hash
22
22
  */
23
- handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise<AuthenticationResult>;
23
+ handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult>;
24
24
  }
25
25
  //# sourceMappingURL=RedirectHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAe,8BAA8B,EAAE,OAAO,EAAE,oBAAoB,EAAmB,SAAS,EAAE,cAAc,EAAmB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG9M,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,oBAAY,cAAc,GAAG,iBAAiB,GAAG;IAC7C,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CACxD,CAAC;AAEF,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,aAAa,CAAU;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IAK5L;;;OAGG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CpF;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuD/K"}
1
+ {"version":3,"file":"RedirectHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/RedirectHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAe,8BAA8B,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,cAAc,EAAmB,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAG1M,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,oBAAY,cAAc,GAAG,iBAAiB,GAAG;IAC7C,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC;CACxD,CAAC;AAEF,qBAAa,eAAgB,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,aAAa,CAAU;gBAEnB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO;IAK9K;;;OAGG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CpF;;;OAGG;IACG,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA6D5J"}
@@ -1,8 +1,8 @@
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, __awaiter, __generator } from '../_virtual/_tslib.js';
4
- import { StringUtils, ThrottlingUtils, ClientAuthError } from '@azure/msal-common';
5
- import { BrowserAuthError } from '../error/BrowserAuthError.js';
4
+ import { StringUtils, ClientAuthError, ServerError } from '@azure/msal-common';
5
+ import { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';
6
6
  import { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.js';
7
7
  import { InteractionHandler } from './InteractionHandler.js';
8
8
 
@@ -12,8 +12,8 @@ import { InteractionHandler } from './InteractionHandler.js';
12
12
  */
13
13
  var RedirectHandler = /** @class */ (function (_super) {
14
14
  __extends(RedirectHandler, _super);
15
- function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger, browserCrypto) {
16
- var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) || this;
15
+ function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, logger, browserCrypto) {
16
+ var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;
17
17
  _this.browserCrypto = browserCrypto;
18
18
  return _this;
19
19
  }
@@ -27,38 +27,38 @@ var RedirectHandler = /** @class */ (function (_super) {
27
27
  return __generator(this, function (_a) {
28
28
  switch (_a.label) {
29
29
  case 0:
30
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest called");
30
+ this.logger.verbose("RedirectHandler.initiateAuthRequest called");
31
31
  if (!!StringUtils.isEmpty(requestUrl)) return [3 /*break*/, 7];
32
32
  // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true
33
33
  if (params.redirectStartPage) {
34
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page");
34
+ this.logger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page");
35
35
  this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);
36
36
  }
37
37
  // Set interaction status in the library.
38
38
  this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);
39
39
  this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);
40
- this.browserRequestLogger.infoPii("RedirectHandler.initiateAuthRequest: Navigate to: " + requestUrl);
40
+ this.logger.infoPii("RedirectHandler.initiateAuthRequest: Navigate to: " + requestUrl);
41
41
  navigationOptions = {
42
42
  apiId: ApiId.acquireTokenRedirect,
43
43
  timeout: params.redirectTimeout,
44
44
  noHistory: false
45
45
  };
46
46
  if (!(typeof params.onRedirectNavigate === "function")) return [3 /*break*/, 4];
47
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback");
47
+ this.logger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback");
48
48
  navigate = params.onRedirectNavigate(requestUrl);
49
49
  if (!(navigate !== false)) return [3 /*break*/, 2];
50
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating");
50
+ this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating");
51
51
  return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];
52
52
  case 1:
53
53
  _a.sent();
54
54
  return [2 /*return*/];
55
55
  case 2:
56
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation");
56
+ this.logger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation");
57
57
  return [2 /*return*/];
58
58
  case 3: return [3 /*break*/, 6];
59
59
  case 4:
60
60
  // Navigate window to request URL
61
- this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url");
61
+ this.logger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url");
62
62
  return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];
63
63
  case 5:
64
64
  _a.sent();
@@ -66,7 +66,7 @@ var RedirectHandler = /** @class */ (function (_super) {
66
66
  case 6: return [3 /*break*/, 8];
67
67
  case 7:
68
68
  // Throw error if request URL is empty.
69
- this.browserRequestLogger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty");
69
+ this.logger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty");
70
70
  throw BrowserAuthError.createEmptyNavigationUriError();
71
71
  case 8: return [2 /*return*/];
72
72
  }
@@ -77,13 +77,13 @@ var RedirectHandler = /** @class */ (function (_super) {
77
77
  * Handle authorization code response in the window.
78
78
  * @param hash
79
79
  */
80
- RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule, clientId) {
80
+ RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {
81
81
  return __awaiter(this, void 0, void 0, function () {
82
82
  var stateKey, requestState, authCodeResponse, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;
83
83
  return __generator(this, function (_a) {
84
84
  switch (_a.label) {
85
85
  case 0:
86
- this.browserRequestLogger.verbose("RedirectHandler.handleCodeResponse called");
86
+ this.logger.verbose("RedirectHandler.handleCodeResponse called");
87
87
  // Check that location hash isn't empty.
88
88
  if (StringUtils.isEmpty(locationHash)) {
89
89
  throw BrowserAuthError.createEmptyHashError(locationHash);
@@ -95,7 +95,18 @@ var RedirectHandler = /** @class */ (function (_super) {
95
95
  if (!requestState) {
96
96
  throw ClientAuthError.createStateNotFoundError("Cached State");
97
97
  }
98
- authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);
98
+ try {
99
+ authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);
100
+ }
101
+ catch (e) {
102
+ if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {
103
+ // Translate server error caused by user closing native prompt to corresponding first class MSAL error
104
+ throw BrowserAuthError.createUserCancelledError();
105
+ }
106
+ else {
107
+ throw e;
108
+ }
109
+ }
99
110
  nonceKey = this.browserStorage.generateNonceKey(requestState);
100
111
  cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);
101
112
  // Assign code to request
@@ -118,10 +129,6 @@ var RedirectHandler = /** @class */ (function (_super) {
118
129
  this.authCodeRequest.ccsCredential = cachedCcsCred;
119
130
  }
120
131
  }
121
- // Remove throttle if it exists
122
- if (clientId) {
123
- ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest);
124
- }
125
132
  return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];
126
133
  case 3:
127
134
  tokenResponse = _a.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"RedirectHandler.js","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, ThrottlingUtils, Authority, INetworkModule, ClientAuthError, Logger } from \"@azure/msal-common\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n private browserCrypto: ICrypto;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, browserCrypto: ICrypto) {\n super(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger);\n this.browserCrypto = browserCrypto;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (!StringUtils.isEmpty(requestUrl)) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n }\n\n // Set interaction status in the library.\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n this.browserRequestLogger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false\n };\n \n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n } else {\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n return;\n }\n } else {\n // Navigate window to request URL\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.browserRequestLogger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule, clientId?: string): Promise<AuthenticationResult> {\n this.browserRequestLogger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n const authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Remove throttle if it exists\n if (clientId) {\n ThrottlingUtils.removeThrottle(this.browserStorage, clientId, this.authCodeRequest);\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedirectHandler.js","sources":["../../src/interaction_handler/RedirectHandler.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorizationCodeClient, StringUtils, CommonAuthorizationCodeRequest, ICrypto, AuthenticationResult, Authority, INetworkModule, ClientAuthError, Logger, ServerError } from \"@azure/msal-common\";\nimport { BrowserAuthError, BrowserAuthErrorMessage } from \"../error/BrowserAuthError\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { InteractionHandler, InteractionParams } from \"./InteractionHandler\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\n\nexport type RedirectParams = InteractionParams & {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler extends InteractionHandler {\n\n private browserCrypto: ICrypto;\n\n constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, browserCrypto: ICrypto) {\n super(authCodeModule, storageImpl, authCodeRequest, logger);\n this.browserCrypto = browserCrypto;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(requestUrl: string, params: RedirectParams): Promise<void> {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (!StringUtils.isEmpty(requestUrl)) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\n }\n\n // Set interaction status in the library.\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\n this.logger.infoPii(`RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`);\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false\n };\n \n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n } else {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\n return;\n }\n } else {\n // Navigate window to request URL\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\n await params.navigationClient.navigateExternal(requestUrl, navigationOptions);\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.logger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\n throw BrowserAuthError.createEmptyNavigationUriError();\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponseFromHash(locationHash: string, state: string, authority: Authority, networkModule: INetworkModule): Promise<AuthenticationResult> {\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Check that location hash isn't empty.\n if (StringUtils.isEmpty(locationHash)) {\n throw BrowserAuthError.createEmptyHashError(locationHash);\n }\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\n } catch (e) {\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw BrowserAuthError.createUserCancelledError();\n } else {\n throw e;\n }\n }\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule);\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = await this.authModule.acquireToken(this.authCodeRequest, authCodeResponse);\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { InteractionHandler } from "./InteractionHandler";
3
3
  import { BrowserCacheManager } from "../cache/BrowserCacheManager";
4
4
  export declare class SilentHandler extends InteractionHandler {
5
5
  private navigateFrameWait;
6
- constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, browserRequestLogger: Logger, navigateFrameWait: number);
6
+ constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, navigateFrameWait: number);
7
7
  /**
8
8
  * Creates a hidden iframe to given URL using user-requested scopes as an id.
9
9
  * @param urlNavigate
@@ -1 +1 @@
1
- {"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,8BAA8B,EAAE,uBAAuB,EAAa,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,qBAAa,aAAc,SAAQ,kBAAkB;IAEjD,OAAO,CAAC,iBAAiB,CAAS;gBACtB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAK/L;;;;OAIG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUzE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDjF;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAsBjB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
1
+ {"version":3,"file":"SilentHandler.d.ts","sourceRoot":"","sources":["../../src/interaction_handler/SilentHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,8BAA8B,EAAE,uBAAuB,EAAa,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxI,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGnE,qBAAa,aAAc,SAAQ,kBAAkB;IAEjD,OAAO,CAAC,iBAAiB,CAAS;gBACtB,cAAc,EAAE,uBAAuB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAKjL;;;;OAIG;IACG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAUzE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgDjF;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAsBjB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;CAK7B"}
@@ -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 { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { StringUtils, Constants, UrlString } from '@azure/msal-common';
@@ -13,8 +13,8 @@ import { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.js';
13
13
  */
14
14
  var SilentHandler = /** @class */ (function (_super) {
15
15
  __extends(SilentHandler, _super);
16
- function SilentHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger, navigateFrameWait) {
17
- var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) || this;
16
+ function SilentHandler(authCodeModule, storageImpl, authCodeRequest, logger, navigateFrameWait) {
17
+ var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, logger) || this;
18
18
  _this.navigateFrameWait = navigateFrameWait;
19
19
  return _this;
20
20
  }
@@ -31,7 +31,7 @@ var SilentHandler = /** @class */ (function (_super) {
31
31
  case 0:
32
32
  if (StringUtils.isEmpty(requestUrl)) {
33
33
  // Throw error if request URL is empty.
34
- this.browserRequestLogger.info("Navigate url is empty");
34
+ this.logger.info("Navigate url is empty");
35
35
  throw BrowserAuthError.createEmptyNavigationUriError();
36
36
  }
37
37
  if (!this.navigateFrameWait) return [3 /*break*/, 2];
@@ -56,7 +56,7 @@ var SilentHandler = /** @class */ (function (_super) {
56
56
  var _this = this;
57
57
  return new Promise(function (resolve, reject) {
58
58
  if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {
59
- _this.browserRequestLogger.warning("system.loadFrameTimeout or system.iframeHashTimeout set to lower (" + timeout + "ms) than the default (" + DEFAULT_IFRAME_TIMEOUT_MS + "ms). This may result in timeouts.");
59
+ _this.logger.warning("system.loadFrameTimeout or system.iframeHashTimeout set to lower (" + timeout + "ms) than the default (" + DEFAULT_IFRAME_TIMEOUT_MS + "ms). This may result in timeouts.");
60
60
  }
61
61
  /*
62
62
  * Polling for iframes can be purely timing based,