@azure/msal-browser 2.25.0 → 2.28.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 (101) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_tslib.js +1 -1
  3. package/dist/app/ClientApplication.d.ts +12 -7
  4. package/dist/app/ClientApplication.d.ts.map +1 -1
  5. package/dist/app/ClientApplication.js +77 -24
  6. package/dist/app/ClientApplication.js.map +1 -1
  7. package/dist/app/IPublicClientApplication.js +1 -1
  8. package/dist/app/PublicClientApplication.d.ts.map +1 -1
  9. package/dist/app/PublicClientApplication.js +11 -3
  10. package/dist/app/PublicClientApplication.js.map +1 -1
  11. package/dist/broker/nativeBroker/NativeMessageHandler.js +1 -1
  12. package/dist/broker/nativeBroker/NativeResponse.d.ts +26 -1
  13. package/dist/broker/nativeBroker/NativeResponse.d.ts.map +1 -1
  14. package/dist/cache/AsyncMemoryStorage.js +1 -1
  15. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  16. package/dist/cache/BrowserCacheManager.js +40 -9
  17. package/dist/cache/BrowserCacheManager.js.map +1 -1
  18. package/dist/cache/BrowserStorage.js +1 -1
  19. package/dist/cache/DatabaseStorage.js +1 -1
  20. package/dist/cache/MemoryStorage.js +1 -1
  21. package/dist/cache/TokenCache.d.ts.map +1 -1
  22. package/dist/cache/TokenCache.js +4 -3
  23. package/dist/cache/TokenCache.js.map +1 -1
  24. package/dist/config/Configuration.d.ts +4 -0
  25. package/dist/config/Configuration.d.ts.map +1 -1
  26. package/dist/config/Configuration.js +2 -1
  27. package/dist/config/Configuration.js.map +1 -1
  28. package/dist/crypto/BrowserCrypto.js +1 -1
  29. package/dist/crypto/CryptoOps.js +1 -1
  30. package/dist/crypto/GuidGenerator.js +1 -1
  31. package/dist/crypto/PkceGenerator.js +1 -1
  32. package/dist/crypto/SignedHttpRequest.js +1 -1
  33. package/dist/encode/Base64Decode.js +1 -1
  34. package/dist/encode/Base64Encode.js +1 -1
  35. package/dist/error/BrowserAuthError.d.ts +1 -1
  36. package/dist/error/BrowserAuthError.js +3 -3
  37. package/dist/error/BrowserAuthError.js.map +1 -1
  38. package/dist/error/BrowserConfigurationAuthError.js +1 -1
  39. package/dist/error/NativeAuthError.d.ts +11 -1
  40. package/dist/error/NativeAuthError.d.ts.map +1 -1
  41. package/dist/error/NativeAuthError.js +15 -1
  42. package/dist/error/NativeAuthError.js.map +1 -1
  43. package/dist/event/EventHandler.js +1 -1
  44. package/dist/event/EventMessage.js +1 -1
  45. package/dist/event/EventType.js +1 -1
  46. package/dist/index.cjs.js +698 -306
  47. package/dist/index.cjs.js.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/interaction_client/BaseInteractionClient.js +1 -1
  50. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +1 -1
  51. package/dist/interaction_client/NativeInteractionClient.d.ts +30 -1
  52. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  53. package/dist/interaction_client/NativeInteractionClient.js +151 -30
  54. package/dist/interaction_client/NativeInteractionClient.js.map +1 -1
  55. package/dist/interaction_client/PopupClient.d.ts +2 -1
  56. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  57. package/dist/interaction_client/PopupClient.js +4 -3
  58. package/dist/interaction_client/PopupClient.js.map +1 -1
  59. package/dist/interaction_client/RedirectClient.d.ts +8 -1
  60. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  61. package/dist/interaction_client/RedirectClient.js +6 -4
  62. package/dist/interaction_client/RedirectClient.js.map +1 -1
  63. package/dist/interaction_client/SilentAuthCodeClient.js +1 -1
  64. package/dist/interaction_client/SilentAuthCodeClient.js.map +1 -1
  65. package/dist/interaction_client/SilentCacheClient.d.ts.map +1 -1
  66. package/dist/interaction_client/SilentCacheClient.js +4 -2
  67. package/dist/interaction_client/SilentCacheClient.js.map +1 -1
  68. package/dist/interaction_client/SilentIframeClient.d.ts +2 -1
  69. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  70. package/dist/interaction_client/SilentIframeClient.js +6 -3
  71. package/dist/interaction_client/SilentIframeClient.js.map +1 -1
  72. package/dist/interaction_client/SilentRefreshClient.d.ts.map +1 -1
  73. package/dist/interaction_client/SilentRefreshClient.js +3 -1
  74. package/dist/interaction_client/SilentRefreshClient.js.map +1 -1
  75. package/dist/interaction_client/StandardInteractionClient.d.ts.map +1 -1
  76. package/dist/interaction_client/StandardInteractionClient.js +4 -1
  77. package/dist/interaction_client/StandardInteractionClient.js.map +1 -1
  78. package/dist/interaction_handler/InteractionHandler.js +1 -1
  79. package/dist/interaction_handler/RedirectHandler.js +1 -1
  80. package/dist/interaction_handler/SilentHandler.js +1 -1
  81. package/dist/internals.js +1 -1
  82. package/dist/navigation/NavigationClient.js +1 -1
  83. package/dist/network/FetchClient.js +1 -1
  84. package/dist/network/XhrClient.js +1 -1
  85. package/dist/packageMetadata.d.ts +1 -1
  86. package/dist/packageMetadata.js +2 -2
  87. package/dist/packageMetadata.js.map +1 -1
  88. package/dist/telemetry/BrowserPerformanceClient.js +1 -1
  89. package/dist/telemetry/BrowserPerformanceMeasurement.js +1 -1
  90. package/dist/utils/BrowserConstants.d.ts +1 -0
  91. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  92. package/dist/utils/BrowserConstants.js +3 -2
  93. package/dist/utils/BrowserConstants.js.map +1 -1
  94. package/dist/utils/BrowserProtocolUtils.js +1 -1
  95. package/dist/utils/BrowserStringUtils.js +1 -1
  96. package/dist/utils/BrowserUtils.js +1 -1
  97. package/dist/utils/MathUtils.js +1 -1
  98. package/lib/msal-browser.js +698 -306
  99. package/lib/msal-browser.js.map +1 -1
  100. package/lib/msal-browser.min.js +42 -40
  101. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.25.0 2022-06-06 */
1
+ /*! @azure/msal-browser v2.28.0 2022-07-18 */
2
2
  'use strict';
3
3
  import * as internals from './internals.js';
4
4
  export { internals };
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.25.0 2022-06-06 */
1
+ /*! @azure/msal-browser v2.28.0 2022-07-18 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';
4
4
  import { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common';
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.25.0 2022-06-06 */
1
+ /*! @azure/msal-browser v2.28.0 2022-07-18 */
2
2
  'use strict';
3
3
  import { __extends } from '../_virtual/_tslib.js';
4
4
  import { AuthorizationCodeClient } from '@azure/msal-common';
@@ -12,16 +12,33 @@ import { NativeTokenRequest } from "../broker/nativeBroker/NativeRequest";
12
12
  import { NativeResponse } from "../broker/nativeBroker/NativeResponse";
13
13
  import { RedirectRequest } from "../request/RedirectRequest";
14
14
  import { INavigationClient } from "../navigation/INavigationClient";
15
+ import { SilentCacheClient } from "./SilentCacheClient";
15
16
  export declare class NativeInteractionClient extends BaseInteractionClient {
16
17
  protected apiId: ApiId;
17
18
  protected accountId: string;
18
19
  protected nativeMessageHandler: NativeMessageHandler;
19
- constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, correlationId?: string);
20
+ protected silentCacheClient: SilentCacheClient;
21
+ protected nativeStorageManager: BrowserCacheManager;
22
+ constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string);
20
23
  /**
21
24
  * Acquire token from native platform via browser extension
22
25
  * @param request
23
26
  */
24
27
  acquireToken(request: PopupRequest | SilentRequest | SsoSilentRequest): Promise<AuthenticationResult>;
28
+ /**
29
+ * Creates silent flow request
30
+ * @param request
31
+ * @param cachedAccount
32
+ * @returns CommonSilentFlowRequest
33
+ */
34
+ private createSilentCacheRequest;
35
+ /**
36
+ * Fetches the tokens from the cache if un-expired
37
+ * @param nativeAccountId
38
+ * @param request
39
+ * @returns authenticationResult
40
+ */
41
+ protected acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise<AuthenticationResult>;
25
42
  /**
26
43
  * Acquires a token from native platform then redirects to the redirectUri instead of returning the response
27
44
  * @param request
@@ -48,6 +65,18 @@ export declare class NativeInteractionClient extends BaseInteractionClient {
48
65
  * @param response
49
66
  */
50
67
  private validateNativeResponse;
68
+ /**
69
+ * Gets MATS telemetry from native response
70
+ * @param response
71
+ * @returns
72
+ */
73
+ private getMATSFromResponse;
74
+ /**
75
+ * Returns whether or not response came from native cache
76
+ * @param response
77
+ * @returns
78
+ */
79
+ private isResponseFromCache;
51
80
  /**
52
81
  * Translates developer provided request object into NativeRequest object
53
82
  * @param request
@@ -1 +1 @@
1
- {"version":3,"file":"NativeInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,EAA8L,kBAAkB,EAAsC,MAAM,oBAAoB,CAAC;AAC/T,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAyB,KAAK,EAAsB,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAA8B,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAGpE,qBAAa,uBAAwB,SAAQ,qBAAqB;IAC9D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;gBAEzC,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAOtT;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,YAAY,GAAC,aAAa,GAAC,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiCvG;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BnE;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAmCnE;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB;;;;;OAKG;cACa,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8FhJ;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;OAGG;cACa,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAgE/G"}
1
+ {"version":3,"file":"NativeInteractionClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,EAA8L,kBAAkB,EAAyH,MAAM,oBAAoB,CAAC;AAClZ,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACnF,OAAO,EAAyB,KAAK,EAAuC,MAAM,2BAA2B,CAAC;AAC9G,OAAO,EAA8B,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AACtG,OAAO,EAAQ,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,uBAAwB,SAAQ,qBAAqB;IAC9D,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACvB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACrD,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC/C,SAAS,CAAC,oBAAoB,EAAE,mBAAmB,CAAC;gBAExC,MAAM,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAE,MAAM;IAS9V;;;OAGG;IACG,YAAY,CAAC,OAAO,EAAE,YAAY,GAAC,aAAa,GAAC,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoDvG;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAUhC;;;;;OAKG;cACa,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmB3H;;;OAGG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BnE;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAmCnE;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAKvB;;;;;OAKG;cACa,oBAAoB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgIhJ;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;OAGG;cACa,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAgF/G"}
@@ -1,11 +1,12 @@
1
- /*! @azure/msal-browser v2.25.0 2022-06-06 */
1
+ /*! @azure/msal-browser v2.28.0 2022-07-18 */
2
2
  'use strict';
3
3
  import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
- import { TimeUtils, PerformanceEvents, AuthenticationScheme, PopTokenGenerator, ClientAuthError, AccountEntity, Constants, AuthorityType, ScopeSet, AuthToken, PromptValue, UrlString, OIDC_DEFAULT_SCOPES } from '@azure/msal-common';
4
+ import { PerformanceEvents, TimeUtils, ScopeSet, ClientAuthError, IdTokenEntity, Constants, AccessTokenEntity, AuthenticationScheme, PopTokenGenerator, AccountEntity, AuthorityType, AuthToken, UrlString, OIDC_DEFAULT_SCOPES, PromptValue } from '@azure/msal-common';
5
5
  import { BaseInteractionClient } from './BaseInteractionClient.js';
6
- import { TemporaryCacheKeys, NativeExtensionMethod, ApiId } from '../utils/BrowserConstants.js';
6
+ import { TemporaryCacheKeys, NativeExtensionMethod, NativeConstants, ApiId } from '../utils/BrowserConstants.js';
7
7
  import { NativeAuthError } from '../error/NativeAuthError.js';
8
8
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
9
+ import { SilentCacheClient } from './SilentCacheClient.js';
9
10
 
10
11
  /*
11
12
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -13,11 +14,13 @@ import { BrowserAuthError } from '../error/BrowserAuthError.js';
13
14
  */
14
15
  var NativeInteractionClient = /** @class */ (function (_super) {
15
16
  __extends(NativeInteractionClient, _super);
16
- function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, correlationId) {
17
+ function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, nativeStorageImpl, correlationId) {
17
18
  var _this = _super.call(this, config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId) || this;
18
19
  _this.apiId = apiId;
19
20
  _this.accountId = accountId;
20
21
  _this.nativeMessageHandler = provider;
22
+ _this.nativeStorageManager = nativeStorageImpl;
23
+ _this.silentCacheClient = new SilentCacheClient(config, _this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);
21
24
  return _this;
22
25
  }
23
26
  /**
@@ -26,22 +29,40 @@ var NativeInteractionClient = /** @class */ (function (_super) {
26
29
  */
27
30
  NativeInteractionClient.prototype.acquireToken = function (request) {
28
31
  return __awaiter(this, void 0, void 0, function () {
29
- var nativeATMeasurement, nativeRequest, messageBody, reqTimestamp, response, validatedResponse;
32
+ var nativeATMeasurement, reqTimestamp, nativeRequest, result, messageBody, response, validatedResponse;
30
33
  return __generator(this, function (_a) {
31
34
  switch (_a.label) {
32
35
  case 0:
33
36
  this.logger.trace("NativeInteractionClient - acquireToken called.");
34
37
  nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);
38
+ reqTimestamp = TimeUtils.nowSeconds();
35
39
  return [4 /*yield*/, this.initializeNativeRequest(request)];
36
40
  case 1:
37
41
  nativeRequest = _a.sent();
42
+ _a.label = 2;
43
+ case 2:
44
+ _a.trys.push([2, 4, , 5]);
45
+ return [4 /*yield*/, this.acquireTokensFromCache(this.accountId, nativeRequest)];
46
+ case 3:
47
+ result = _a.sent();
48
+ nativeATMeasurement.endMeasurement({
49
+ success: true,
50
+ isNativeBroker: true,
51
+ fromCache: true
52
+ });
53
+ return [2 /*return*/, result];
54
+ case 4:
55
+ _a.sent();
56
+ // continue with a native call for any and all errors
57
+ this.logger.info("MSAL internal Cache does not contain tokens, proceed to make a native call");
58
+ return [3 /*break*/, 5];
59
+ case 5:
38
60
  messageBody = {
39
61
  method: NativeExtensionMethod.GetToken,
40
62
  request: nativeRequest
41
63
  };
42
- reqTimestamp = TimeUtils.nowSeconds();
43
64
  return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];
44
- case 2:
65
+ case 6:
45
66
  response = _a.sent();
46
67
  validatedResponse = this.validateNativeResponse(response);
47
68
  return [2 /*return*/, this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)
@@ -55,6 +76,8 @@ var NativeInteractionClient = /** @class */ (function (_super) {
55
76
  .catch(function (error) {
56
77
  nativeATMeasurement.endMeasurement({
57
78
  success: false,
79
+ errorCode: error.errorCode,
80
+ subErrorCode: error.subError,
58
81
  isNativeBroker: true
59
82
  });
60
83
  throw error;
@@ -63,13 +86,61 @@ var NativeInteractionClient = /** @class */ (function (_super) {
63
86
  });
64
87
  });
65
88
  };
89
+ /**
90
+ * Creates silent flow request
91
+ * @param request
92
+ * @param cachedAccount
93
+ * @returns CommonSilentFlowRequest
94
+ */
95
+ NativeInteractionClient.prototype.createSilentCacheRequest = function (request, cachedAccount) {
96
+ return {
97
+ authority: request.authority,
98
+ correlationId: this.correlationId,
99
+ scopes: ScopeSet.fromString(request.scopes).asArray(),
100
+ account: cachedAccount,
101
+ forceRefresh: false,
102
+ };
103
+ };
104
+ /**
105
+ * Fetches the tokens from the cache if un-expired
106
+ * @param nativeAccountId
107
+ * @param request
108
+ * @returns authenticationResult
109
+ */
110
+ NativeInteractionClient.prototype.acquireTokensFromCache = function (nativeAccountId, request) {
111
+ return __awaiter(this, void 0, void 0, function () {
112
+ var accountEntity, account, silentRequest, result, e_2;
113
+ return __generator(this, function (_a) {
114
+ switch (_a.label) {
115
+ case 0:
116
+ accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);
117
+ if (!accountEntity) {
118
+ throw ClientAuthError.createNoAccountFoundError();
119
+ }
120
+ account = accountEntity.getAccountInfo();
121
+ _a.label = 1;
122
+ case 1:
123
+ _a.trys.push([1, 3, , 4]);
124
+ silentRequest = this.createSilentCacheRequest(request, account);
125
+ return [4 /*yield*/, this.silentCacheClient.acquireToken(silentRequest)];
126
+ case 2:
127
+ result = _a.sent();
128
+ return [2 /*return*/, result];
129
+ case 3:
130
+ e_2 = _a.sent();
131
+ throw e_2;
132
+ case 4: return [2 /*return*/];
133
+ }
134
+ });
135
+ });
136
+ };
66
137
  /**
67
138
  * Acquires a token from native platform then redirects to the redirectUri instead of returning the response
68
139
  * @param request
69
140
  */
70
141
  NativeInteractionClient.prototype.acquireTokenRedirect = function (request) {
71
142
  return __awaiter(this, void 0, void 0, function () {
72
- var nativeRequest, messageBody, response, e_1, navigationOptions, redirectUri;
143
+ var nativeRequest, messageBody, response, e_3, navigationOptions, redirectUri;
73
144
  return __generator(this, function (_a) {
74
145
  switch (_a.label) {
75
146
  case 0:
@@ -90,10 +161,10 @@ var NativeInteractionClient = /** @class */ (function (_super) {
90
161
  this.validateNativeResponse(response);
91
162
  return [3 /*break*/, 5];
92
163
  case 4:
93
- e_1 = _a.sent();
164
+ e_3 = _a.sent();
94
165
  // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise
95
- if (e_1 instanceof NativeAuthError && e_1.isFatal()) {
96
- throw e_1;
166
+ if (e_3 instanceof NativeAuthError && e_3.isFatal()) {
167
+ throw e_3;
97
168
  }
98
169
  return [3 /*break*/, 5];
99
170
  case 5:
@@ -117,7 +188,7 @@ var NativeInteractionClient = /** @class */ (function (_super) {
117
188
  */
118
189
  NativeInteractionClient.prototype.handleRedirectPromise = function () {
119
190
  return __awaiter(this, void 0, void 0, function () {
120
- var cachedRequest, messageBody, reqTimestamp, response, result, e_2;
191
+ var cachedRequest, messageBody, reqTimestamp, response, result, e_4;
121
192
  return __generator(this, function (_a) {
122
193
  switch (_a.label) {
123
194
  case 0:
@@ -149,9 +220,9 @@ var NativeInteractionClient = /** @class */ (function (_super) {
149
220
  this.browserStorage.setInteractionInProgress(false);
150
221
  return [2 /*return*/, result];
151
222
  case 3:
152
- e_2 = _a.sent();
223
+ e_4 = _a.sent();
153
224
  this.browserStorage.setInteractionInProgress(false);
154
- throw e_2;
225
+ throw e_4;
155
226
  case 4: return [2 /*return*/];
156
227
  }
157
228
  });
@@ -173,7 +244,7 @@ var NativeInteractionClient = /** @class */ (function (_super) {
173
244
  */
174
245
  NativeInteractionClient.prototype.handleNativeResponse = function (response, request, reqTimestamp) {
175
246
  return __awaiter(this, void 0, void 0, function () {
176
- var idTokenObj, authority, authorityPreferredCache, homeAccountIdentifier, accountEntity, responseScopes, accountProperties, uid, tid, responseAccessToken, responseTokenType, _a, popTokenGenerator, shrParameters, result;
247
+ var idTokenObj, authority, authorityPreferredCache, homeAccountIdentifier, accountEntity, responseScopes, accountProperties, uid, tid, responseAccessToken, responseTokenType, _a, popTokenGenerator, shrParameters, mats, result, idTokenEntity, expiresIn, tokenExpirationSeconds, accessTokenEntity;
177
248
  var _this = this;
178
249
  return __generator(this, function (_b) {
179
250
  switch (_b.label) {
@@ -189,7 +260,7 @@ var NativeInteractionClient = /** @class */ (function (_super) {
189
260
  authority = _b.sent();
190
261
  authorityPreferredCache = authority.getPreferredCache();
191
262
  homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);
192
- accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, undefined, authorityPreferredCache, response.account.id);
263
+ accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);
193
264
  this.browserStorage.setAccount(accountEntity);
194
265
  responseScopes = response.scopes ? ScopeSet.fromString(response.scopes) : ScopeSet.fromString(request.scopes);
195
266
  accountProperties = response.account.properties || {};
@@ -234,6 +305,7 @@ var NativeInteractionClient = /** @class */ (function (_super) {
234
305
  }
235
306
  _b.label = 5;
236
307
  case 5:
308
+ mats = this.getMATSFromResponse(response);
237
309
  result = {
238
310
  authority: authority.canonicalAuthority,
239
311
  uniqueId: uid,
@@ -243,14 +315,24 @@ var NativeInteractionClient = /** @class */ (function (_super) {
243
315
  idToken: response.id_token,
244
316
  idTokenClaims: idTokenObj.claims,
245
317
  accessToken: responseAccessToken,
246
- fromCache: false,
318
+ fromCache: mats ? this.isResponseFromCache(mats) : false,
247
319
  expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),
248
320
  tokenType: responseTokenType,
249
321
  correlationId: this.correlationId,
250
322
  state: response.state,
251
323
  fromNativeBroker: true
252
324
  };
253
- // Remove any existing cached tokens for this account
325
+ idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountIdentifier, request.authority, response.id_token || Constants.EMPTY_STRING, request.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);
326
+ this.nativeStorageManager.setIdTokenCredential(idTokenEntity);
327
+ expiresIn = (responseTokenType === AuthenticationScheme.POP)
328
+ ? Constants.SHR_NONCE_VALIDITY
329
+ : (typeof response.expires_in === "string"
330
+ ? parseInt(response.expires_in, 10)
331
+ : response.expires_in) || 0;
332
+ tokenExpirationSeconds = reqTimestamp + expiresIn;
333
+ accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountIdentifier, request.authority, responseAccessToken, request.clientId, tid, responseScopes.printScopes(), tokenExpirationSeconds, 0, this.browserCrypto);
334
+ this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);
335
+ // Remove any existing cached tokens for this account in browser storage
254
336
  this.browserStorage.removeAccountContext(accountEntity).catch(function (e) {
255
337
  _this.logger.error("Error occurred while removing account context from browser storage. " + e);
256
338
  });
@@ -276,13 +358,42 @@ var NativeInteractionClient = /** @class */ (function (_super) {
276
358
  throw NativeAuthError.createUnexpectedError("Response missing expected properties.");
277
359
  }
278
360
  };
361
+ /**
362
+ * Gets MATS telemetry from native response
363
+ * @param response
364
+ * @returns
365
+ */
366
+ NativeInteractionClient.prototype.getMATSFromResponse = function (response) {
367
+ if (response.properties.MATS) {
368
+ try {
369
+ return JSON.parse(response.properties.MATS);
370
+ }
371
+ catch (e) {
372
+ this.logger.error("NativeInteractionClient - Error parsing MATS telemetry, returning null instead");
373
+ }
374
+ }
375
+ return null;
376
+ };
377
+ /**
378
+ * Returns whether or not response came from native cache
379
+ * @param response
380
+ * @returns
381
+ */
382
+ NativeInteractionClient.prototype.isResponseFromCache = function (mats) {
383
+ if (typeof mats.is_cached === "undefined") {
384
+ this.logger.verbose("NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.");
385
+ return false;
386
+ }
387
+ return !!mats.is_cached;
388
+ };
279
389
  /**
280
390
  * Translates developer provided request object into NativeRequest object
281
391
  * @param request
282
392
  */
283
393
  NativeInteractionClient.prototype.initializeNativeRequest = function (request) {
284
394
  return __awaiter(this, void 0, void 0, function () {
285
- var authority, canonicalAuthority, scopes, scopeSet, validatedRequest, shrParameters, popTokenGenerator, reqCnfData;
395
+ var authority, canonicalAuthority, scopes, scopeSet, getPrompt, validatedRequest, shrParameters, popTokenGenerator, reqCnfData;
396
+ var _this = this;
286
397
  return __generator(this, function (_a) {
287
398
  switch (_a.label) {
288
399
  case 0:
@@ -293,18 +404,32 @@ var NativeInteractionClient = /** @class */ (function (_super) {
293
404
  scopes = request && request.scopes || [];
294
405
  scopeSet = new ScopeSet(scopes);
295
406
  scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);
296
- if (request.prompt) {
407
+ getPrompt = function () {
408
+ // If request is silent, prompt is always none
409
+ switch (_this.apiId) {
410
+ case ApiId.ssoSilent:
411
+ case ApiId.acquireTokenSilent_silentFlow:
412
+ _this.logger.trace("initializeNativeRequest: silent request sets prompt to none");
413
+ return PromptValue.NONE;
414
+ }
415
+ // Prompt not provided, request may proceed and native broker decides if it needs to prompt
416
+ if (!request.prompt) {
417
+ _this.logger.trace("initializeNativeRequest: prompt was not provided");
418
+ return undefined;
419
+ }
420
+ // If request is interactive, check if prompt provided is allowed to go directly to native broker
297
421
  switch (request.prompt) {
298
422
  case PromptValue.NONE:
299
423
  case PromptValue.CONSENT:
300
- this.logger.trace("initializeNativeRequest: prompt is compatible with native flow");
301
- break;
424
+ case PromptValue.LOGIN:
425
+ _this.logger.trace("initializeNativeRequest: prompt is compatible with native flow");
426
+ return request.prompt;
302
427
  default:
303
- this.logger.trace("initializeNativeRequest: prompt = " + request.prompt + " is not compatible with native flow");
428
+ _this.logger.trace("initializeNativeRequest: prompt = " + request.prompt + " is not compatible with native flow");
304
429
  throw BrowserAuthError.createNativePromptParameterNotSupportedError();
305
430
  }
306
- }
307
- validatedRequest = __assign(__assign({}, request), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scopes: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), correlationId: this.correlationId, tokenType: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), extendedExpiryToken: false // Make this configurable?
431
+ };
432
+ validatedRequest = __assign(__assign({}, request), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scopes: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), prompt: getPrompt(), correlationId: this.correlationId, tokenType: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), { telemetry: NativeConstants.MATS_TELEMETRY }), extendedExpiryToken: false // Make this configurable?
308
433
  });
309
434
  if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];
310
435
  shrParameters = {
@@ -321,11 +446,7 @@ var NativeInteractionClient = /** @class */ (function (_super) {
321
446
  validatedRequest.reqCnf = reqCnfData.reqCnfHash;
322
447
  validatedRequest.keyId = reqCnfData.kid;
323
448
  _a.label = 2;
324
- case 2:
325
- if (this.apiId === ApiId.ssoSilent || this.apiId === ApiId.acquireTokenSilent_silentFlow) {
326
- validatedRequest.prompt = PromptValue.NONE;
327
- }
328
- return [2 /*return*/, validatedRequest];
449
+ case 2: return [2 /*return*/, validatedRequest];
329
450
  }
330
451
  });
331
452
  });
@@ -1 +1 @@
1
- {"version":3,"file":"NativeInteractionClient.js","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, ClientAuthError } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants\";\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n protected apiId: ApiId;\n protected accountId: string;\n protected nativeMessageHandler: NativeMessageHandler;\n\n constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, correlationId?: string) {\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n this.apiId = apiId;\n this.accountId = accountId;\n this.nativeMessageHandler = provider;\n }\n\n /**\n * Acquire token from native platform via browser extension\n * @param request\n */\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n // start the perf measurement\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\n const nativeRequest = await this.initializeNativeRequest(request);\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\n\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\n .then((result: AuthenticationResult) => {\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n return result;\n })\n .catch((error) => {\n nativeATMeasurement.endMeasurement({\n success: false,\n isNativeBroker: true\n });\n throw error;\n });\n }\n\n /**\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\n const nativeRequest = await this.initializeNativeRequest(request);\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n try {\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n } catch (e) {\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n if (e instanceof NativeAuthError && e.isFatal()) {\n throw e;\n }\n }\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\n }\n\n /**\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n */\n async handleRedirectPromise(): Promise<AuthenticationResult | null> {\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\n if (!cachedRequest) {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\n return null;\n }\n\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: cachedRequest\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n const result = this.handleNativeResponse(response as NativeResponse, cachedRequest, reqTimestamp);\n this.browserStorage.setInteractionInProgress(false);\n return result;\n } catch (e) {\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n }\n }\n\n /**\n * Logout from native platform via browser extension\n * @param request\n */\n logout(): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - logout called.\");\n return Promise.reject(\"Logout not implemented yet\");\n }\n\n /**\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n * @param response\n * @param request\n * @param reqTimestamp\n */\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\n\n if (response.account.id !== request.accountId) {\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n throw NativeAuthError.createUserSwitchError();\n }\n\n // create an idToken object (not entity)\n const idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\n\n // Get the preferred_cache domain for the given authority\n const authority = await this.getDiscoveredAuthority(request.authority);\n const authorityPreferredCache = authority.getPreferredCache();\n\n // Save account in browser storage\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\n const accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\n this.browserStorage.setAccount(accountEntity);\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = response.scopes ? ScopeSet.fromString(response.scopes) : ScopeSet.fromString(request.scopes);\n\n const accountProperties = response.account.properties || {};\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\n\n // This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT is still received, SHR is calculated locally\n let responseAccessToken;\n let responseTokenType: AuthenticationScheme = AuthenticationScheme.BEARER;\n switch (request.tokenType) {\n case AuthenticationScheme.POP: {\n // Set the token type to POP in the response\n responseTokenType = AuthenticationScheme.POP;\n\n // Check if native layer returned an SHR token\n if (response.shr) {\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\n responseAccessToken = response.shr;\n break;\n }\n\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n /**\n * KeyID must be present in the native request from when the PoP key was generated in order for\n * PopTokenGenerator to query the full key for signing\n */\n if (!request.keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n responseAccessToken = await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\n break;\n\n }\n // assign the access token to the response for all non-POP cases (Should be Bearer only today)\n default: {\n responseAccessToken = response.access_token;\n }\n }\n\n const result: AuthenticationResult = {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes.asArray(),\n account: accountEntity.getAccountInfo(),\n idToken: response.id_token,\n idTokenClaims: idTokenObj.claims,\n accessToken: responseAccessToken,\n fromCache: false,\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\n tokenType: responseTokenType,\n correlationId: this.correlationId,\n state: response.state,\n fromNativeBroker: true\n };\n\n // Remove any existing cached tokens for this account\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\n });\n\n return result;\n }\n\n /**\n * Validates native platform response before processing\n * @param response\n */\n private validateNativeResponse(response: object): NativeResponse {\n if (\n response.hasOwnProperty(\"access_token\") &&\n response.hasOwnProperty(\"id_token\") &&\n response.hasOwnProperty(\"client_info\") &&\n response.hasOwnProperty(\"account\") &&\n response.hasOwnProperty(\"scopes\") &&\n response.hasOwnProperty(\"expires_in\")\n ) {\n return response as NativeResponse;\n } else {\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\n }\n }\n\n /**\n * Translates developer provided request object into NativeRequest object\n * @param request\n */\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise<NativeTokenRequest> {\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\n\n const authority = request.authority || this.config.auth.authority;\n const canonicalAuthority = new UrlString(authority);\n canonicalAuthority.validateAsUri();\n\n const scopes = request && request.scopes || [];\n const scopeSet = new ScopeSet(scopes);\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n if (request.prompt) {\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\n break;\n default:\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\n }\n }\n\n const validatedRequest: NativeTokenRequest = {\n ...request,\n accountId: this.accountId,\n clientId: this.config.auth.clientId,\n authority: canonicalAuthority.urlString,\n scopes: scopeSet.printScopes(),\n redirectUri: this.getRedirectUri(request.redirectUri),\n correlationId: this.correlationId,\n tokenType: request.authenticationScheme,\n windowTitleSubstring: document.title,\n extraParameters: {\n ...request.extraQueryParameters,\n ...request.tokenQueryParameters\n },\n extendedExpiryToken: false // Make this configurable?\n };\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n\n // add POP request type\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestUri: request.resourceRequestUri,\n resourceRequestMethod: request.resourceRequestMethod,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\n\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\n validatedRequest.keyId = reqCnfData.kid;\n }\n\n if (this.apiId === ApiId.ssoSilent || this.apiId === ApiId.acquireTokenSilent_silentFlow) {\n validatedRequest.prompt = PromptValue.NONE;\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AAAA;;;;;IAuB6C,2CAAqB;IAK9D,iCAAY,MAA4B,EAAE,cAAmC,EAAE,aAAsB,EAAE,MAAc,EAAE,YAA0B,EAAE,gBAAmC,EAAE,KAAY,EAAE,iBAAqC,EAAE,QAA8B,EAAE,SAAiB,EAAE,aAAsB;QAAtT,YACI,kBAAM,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,aAAa,CAAC,SAInI;QAHG,KAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,KAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;;KACxC;;;;;IAMK,8CAAY,GAAlB,UAAmB,OAAoD;;;;;;wBACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;wBAG9D,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,mCAAmC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;wBAC5H,qBAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAA;;wBAA3D,aAAa,GAAG,SAA2C;wBAE3D,WAAW,GAA+B;4BAC5C,MAAM,EAAE,qBAAqB,CAAC,QAAQ;4BACtC,OAAO,EAAE,aAAa;yBACzB,CAAC;wBAEI,YAAY,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;wBACnB,qBAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAA;;wBAA3E,QAAQ,GAAW,SAAwD;wBAC3E,iBAAiB,GAAmB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;wBAEhF,sBAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,EAAE,YAAY,CAAC;iCAC3E,IAAI,CAAC,UAAC,MAA4B;gCAC/B,mBAAmB,CAAC,cAAc,CAAC;oCAC/B,OAAO,EAAE,IAAI;oCACb,cAAc,EAAE,IAAI;iCACvB,CAAC,CAAC;gCACH,OAAO,MAAM,CAAC;6BACjB,CAAC;iCACD,KAAK,CAAC,UAAC,KAAK;gCACT,mBAAmB,CAAC,cAAc,CAAC;oCAC/B,OAAO,EAAE,KAAK;oCACd,cAAc,EAAE,IAAI;iCACvB,CAAC,CAAC;gCACH,MAAM,KAAK,CAAC;6BACf,CAAC,EAAC;;;;KACV;;;;;IAMK,sDAAoB,GAA1B,UAA2B,OAAwB;;;;;;wBAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;wBACtD,qBAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAA;;wBAA3D,aAAa,GAAG,SAA2C;wBAE3D,WAAW,GAA+B;4BAC5C,MAAM,EAAE,qBAAqB,CAAC,QAAQ;4BACtC,OAAO,EAAE,aAAa;yBACzB,CAAC;;;;wBAG2B,qBAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAA;;wBAA3E,QAAQ,GAAW,SAAwD;wBACjF,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;;;;;wBAGtC,IAAI,GAAC,YAAY,eAAe,IAAI,GAAC,CAAC,OAAO,EAAE,EAAE;4BAC7C,MAAM,GAAC,CAAC;yBACX;;;wBAEL,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;wBAExG,iBAAiB,GAAsB;4BACzC,KAAK,EAAE,KAAK,CAAC,oBAAoB;4BACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB;4BACrD,SAAS,EAAE,KAAK;yBACnB,CAAC;wBACI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBACjI,qBAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAA;;wBAA5E,SAA4E,CAAC;;;;;KAChF;;;;IAKK,uDAAqB,GAA3B;;;;;;wBACI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;wBAC7E,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE;4BACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;4BAC1G,sBAAO,IAAI,EAAC;yBACf;wBAEK,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;wBACnE,IAAI,CAAC,aAAa,EAAE;4BAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wGAAwG,CAAC,CAAC;4BAC9H,sBAAO,IAAI,EAAC;yBACf;wBAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;wBAElG,WAAW,GAA+B;4BAC5C,MAAM,EAAE,qBAAqB,CAAC,QAAQ;4BACtC,OAAO,EAAE,aAAa;yBACzB,CAAC;wBAEI,YAAY,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;;;;wBAGxC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mFAAmF,CAAC,CAAC;wBAChF,qBAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAA;;wBAA3E,QAAQ,GAAW,SAAwD;wBACjF,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;wBAChC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAA0B,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;wBAClG,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;wBACpD,sBAAO,MAAM,EAAC;;;wBAEd,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;wBACpD,MAAM,GAAC,CAAC;;;;;KAEf;;;;;IAMD,wCAAM,GAAN;QACI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;KACvD;;;;;;;IAQe,sDAAoB,GAApC,UAAqC,QAAwB,EAAE,OAA2B,EAAE,YAAoB;;;;;;;wBAC5G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;wBAE5E,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE;;4BAE3C,MAAM,eAAe,CAAC,qBAAqB,EAAE,CAAC;yBACjD;wBAGK,UAAU,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;wBAGhF,qBAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAA;;wBAAhE,SAAS,GAAG,SAAoD;wBAChE,uBAAuB,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;wBAGxD,qBAAqB,GAAG,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,WAAW,IAAI,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;wBAChL,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,uBAAuB,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACrM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;wBAGxC,cAAc,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAE9G,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;wBACtD,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC;wBAC3G,GAAG,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC;wBAIzF,iBAAiB,GAAyB,oBAAoB,CAAC,MAAM,CAAC;wBAClE,KAAA,OAAO,CAAC,SAAS,CAAA;;iCAChB,oBAAoB,CAAC,GAAG,EAAxB,wBAAwB;;;;;wBAEzB,iBAAiB,GAAG,oBAAoB,CAAC,GAAG,CAAC;;wBAG7C,IAAI,QAAQ,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;4BAChF,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC;4BACnC,wBAAM;yBACT;wBAGK,iBAAiB,GAAsB,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACjF,aAAa,GAAgC;4BAC/C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;4BACpD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;4BAC9C,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC7B,CAAC;;;;;wBAMF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;4BAChB,MAAM,eAAe,CAAC,uBAAuB,EAAE,CAAC;yBACnD;wBAEqB,qBAAM,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,EAAA;;wBAA/G,mBAAmB,GAAG,SAAyF,CAAC;wBAChH,wBAAM;;wBAID;4BACL,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC;yBAC/C;;;wBAGC,MAAM,GAAyB;4BACjC,SAAS,EAAE,SAAS,CAAC,kBAAkB;4BACvC,QAAQ,EAAE,GAAG;4BACb,QAAQ,EAAE,GAAG;4BACb,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE;4BAChC,OAAO,EAAE,aAAa,CAAC,cAAc,EAAE;4BACvC,OAAO,EAAE,QAAQ,CAAC,QAAQ;4BAC1B,aAAa,EAAE,UAAU,CAAC,MAAM;4BAChC,WAAW,EAAE,mBAAmB;4BAChC,SAAS,EAAE,KAAK;4BAChB,SAAS,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;4BACtE,SAAS,EAAE,iBAAiB;4BAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,gBAAgB,EAAE,IAAI;yBACzB,CAAC;;wBAGF,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,UAAC,CAAC;4BAC5D,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAuE,CAAG,CAAC,CAAC;yBACjG,CAAC,CAAC;wBAEH,sBAAO,MAAM,EAAC;;;;KACjB;;;;;IAMO,wDAAsB,GAA9B,UAA+B,QAAgB;QAC3C,IACI,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC;YACvC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;YACnC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC;YACtC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC;YAClC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;YACjC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EACvC;YACE,OAAO,QAA0B,CAAC;SACrC;aAAM;YACH,MAAM,eAAe,CAAC,qBAAqB,CAAC,uCAAuC,CAAC,CAAC;SACxF;KACJ;;;;;IAMe,yDAAuB,GAAvC,UAAwC,OAAsC;;;;;;wBAC1E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;wBAExE,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;wBAC5D,kBAAkB,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;wBACpD,kBAAkB,CAAC,aAAa,EAAE,CAAC;wBAE7B,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;wBACzC,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACtC,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;wBAE3C,IAAI,OAAO,CAAC,MAAM,EAAE;4BAChB,QAAQ,OAAO,CAAC,MAAM;gCAClB,KAAK,WAAW,CAAC,IAAI,CAAC;gCACtB,KAAK,WAAW,CAAC,OAAO;oCACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;oCACpF,MAAM;gCACV;oCACI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAqC,OAAO,CAAC,MAAM,wCAAqC,CAAC,CAAC;oCAC5G,MAAM,gBAAgB,CAAC,4CAA4C,EAAE,CAAC;6BAC7E;yBACJ;wBAEK,gBAAgB,yBACf,OAAO,KACV,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EACnC,SAAS,EAAE,kBAAkB,CAAC,SAAS,EACvC,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,EAC9B,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EACrD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,SAAS,EAAE,OAAO,CAAC,oBAAoB,EACvC,oBAAoB,EAAE,QAAQ,CAAC,KAAK,EACpC,eAAe,wBACR,OAAO,CAAC,oBAAoB,GAC5B,OAAO,CAAC,oBAAoB,GAEnC,mBAAmB,EAAE,KAAK;2BAC7B,CAAC;8BAEE,OAAO,CAAC,oBAAoB,KAAK,oBAAoB,CAAC,GAAG,CAAA,EAAzD,wBAAyD;wBAGnD,aAAa,GAAgC;4BAC/C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;4BAC9C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;4BACpD,SAAS,EAAE,OAAO,CAAC,SAAS;4BAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;yBAC7B,CAAC;wBAEI,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wBACjD,qBAAM,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,EAAA;;wBAA/D,UAAU,GAAG,SAAkD;;wBAGrE,gBAAgB,CAAC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC;wBAChD,gBAAgB,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC;;;wBAG5C,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,6BAA6B,EAAE;4BACtF,gBAAgB,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;yBAC9C;wBAED,sBAAO,gBAAgB,EAAC;;;;KAC3B;IACL,8BAAC;AAAD,CA5TA,CAA6C,qBAAqB;;;;"}
1
+ {"version":3,"file":"NativeInteractionClient.js","sources":["../../src/interaction_client/NativeInteractionClient.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthenticationResult, Logger, ICrypto, PromptValue, AuthToken, Constants, AccountEntity, AuthorityType, ScopeSet, TimeUtils, AuthenticationScheme, UrlString, OIDC_DEFAULT_SCOPES, PopTokenGenerator, SignedHttpRequestParameters, IPerformanceClient, PerformanceEvents, IdTokenEntity, AccessTokenEntity, ClientAuthError, AuthError, CommonSilentFlowRequest, AccountInfo } from \"@azure/msal-common\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient\";\nimport { BrowserConfiguration } from \"../config/Configuration\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager\";\nimport { EventHandler } from \"../event/EventHandler\";\nimport { PopupRequest } from \"../request/PopupRequest\";\nimport { SilentRequest } from \"../request/SilentRequest\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler\";\nimport { NativeExtensionMethod, ApiId, TemporaryCacheKeys, NativeConstants } from \"../utils/BrowserConstants\";\nimport { NativeExtensionRequestBody, NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest\";\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse\";\nimport { NativeAuthError } from \"../error/NativeAuthError\";\nimport { RedirectRequest } from \"../request/RedirectRequest\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions\";\nimport { INavigationClient } from \"../navigation/INavigationClient\";\nimport { BrowserAuthError } from \"../error/BrowserAuthError\";\nimport { SilentCacheClient } from \"./SilentCacheClient\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n protected apiId: ApiId;\n protected accountId: string;\n protected nativeMessageHandler: NativeMessageHandler;\n protected silentCacheClient: SilentCacheClient;\n protected nativeStorageManager: BrowserCacheManager;\n\n constructor(config: BrowserConfiguration, browserStorage: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, apiId: ApiId, performanceClient: IPerformanceClient, provider: NativeMessageHandler, accountId: string, nativeStorageImpl: BrowserCacheManager, correlationId?: string) {\n super(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n this.apiId = apiId;\n this.accountId = accountId;\n this.nativeMessageHandler = provider;\n this.nativeStorageManager = nativeStorageImpl;\n this.silentCacheClient = new SilentCacheClient(config, this.nativeStorageManager, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId);\n }\n\n /**\n * Acquire token from native platform via browser extension\n * @param request\n */\n async acquireToken(request: PopupRequest|SilentRequest|SsoSilentRequest): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n // start the perf measurement\n const nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\n const reqTimestamp = TimeUtils.nowSeconds();\n\n // initialize native request\n const nativeRequest = await this.initializeNativeRequest(request);\n\n // check if the tokens can be retrieved from internal cache\n try {\n const result = await this.acquireTokensFromCache(this.accountId, nativeRequest);\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true,\n fromCache: true\n });\n return result;\n } catch (e) {\n // continue with a native call for any and all errors\n this.logger.info(\"MSAL internal Cache does not contain tokens, proceed to make a native call\");\n }\n\n // fall back to native calls\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n const validatedResponse: NativeResponse = this.validateNativeResponse(response);\n\n return this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\n .then((result: AuthenticationResult) => {\n nativeATMeasurement.endMeasurement({\n success: true,\n isNativeBroker: true\n });\n return result;\n })\n .catch((error: AuthError) => {\n nativeATMeasurement.endMeasurement({\n success: false,\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n isNativeBroker: true\n });\n throw error;\n });\n }\n\n /**\n * Creates silent flow request\n * @param request\n * @param cachedAccount\n * @returns CommonSilentFlowRequest\n */\n private createSilentCacheRequest(request: NativeTokenRequest, cachedAccount: AccountInfo): CommonSilentFlowRequest {\n return {\n authority: request.authority,\n correlationId: this.correlationId,\n scopes: ScopeSet.fromString(request.scopes).asArray(),\n account: cachedAccount,\n forceRefresh: false,\n };\n }\n\n /**\n * Fetches the tokens from the cache if un-expired\n * @param nativeAccountId\n * @param request\n * @returns authenticationResult\n */\n protected async acquireTokensFromCache(nativeAccountId: string, request: NativeTokenRequest): Promise<AuthenticationResult> {\n\n // fetch the account from in-memory cache\n const accountEntity = this.browserStorage.readAccountFromCacheWithNativeAccountId(nativeAccountId);\n if (!accountEntity) {\n throw ClientAuthError.createNoAccountFoundError();\n }\n const account = accountEntity.getAccountInfo();\n\n // leverage silent flow for cached tokens retrieval\n try {\n const silentRequest = this.createSilentCacheRequest(request, account);\n const result = await this.silentCacheClient.acquireToken(silentRequest);\n return result;\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\n const nativeRequest = await this.initializeNativeRequest(request);\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest\n };\n\n try {\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n } catch (e) {\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n if (e instanceof NativeAuthError && e.isFatal()) {\n throw e;\n }\n }\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false\n };\n const redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\n await this.navigationClient.navigateExternal(redirectUri, navigationOptions); // Need to treat this as external to ensure handleRedirectPromise is run again\n }\n\n /**\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n */\n async handleRedirectPromise(): Promise<AuthenticationResult | null> {\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\n return null;\n }\n\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\n if (!cachedRequest) {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\n return null;\n }\n\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: cachedRequest\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\n const response: object = await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n const result = this.handleNativeResponse(response as NativeResponse, cachedRequest, reqTimestamp);\n this.browserStorage.setInteractionInProgress(false);\n return result;\n } catch (e) {\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n }\n }\n\n /**\n * Logout from native platform via browser extension\n * @param request\n */\n logout(): Promise<void> {\n this.logger.trace(\"NativeInteractionClient - logout called.\");\n return Promise.reject(\"Logout not implemented yet\");\n }\n\n /**\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n * @param response\n * @param request\n * @param reqTimestamp\n */\n protected async handleNativeResponse(response: NativeResponse, request: NativeTokenRequest, reqTimestamp: number): Promise<AuthenticationResult> {\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\n\n if (response.account.id !== request.accountId) {\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n throw NativeAuthError.createUserSwitchError();\n }\n\n // create an idToken object (not entity)\n const idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\n\n // Get the preferred_cache domain for the given authority\n const authority = await this.getDiscoveredAuthority(request.authority);\n const authorityPreferredCache = authority.getPreferredCache();\n\n // Save account in browser storage\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\n const accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\n this.browserStorage.setAccount(accountEntity);\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = response.scopes ? ScopeSet.fromString(response.scopes) : ScopeSet.fromString(request.scopes);\n\n const accountProperties = response.account.properties || {};\n const uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\n const tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\n\n // This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT is still received, SHR is calculated locally\n let responseAccessToken;\n let responseTokenType: AuthenticationScheme = AuthenticationScheme.BEARER;\n switch (request.tokenType) {\n case AuthenticationScheme.POP: {\n // Set the token type to POP in the response\n responseTokenType = AuthenticationScheme.POP;\n\n // Check if native layer returned an SHR token\n if (response.shr) {\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\n responseAccessToken = response.shr;\n break;\n }\n\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n /**\n * KeyID must be present in the native request from when the PoP key was generated in order for\n * PopTokenGenerator to query the full key for signing\n */\n if (!request.keyId) {\n throw ClientAuthError.createKeyIdMissingError();\n }\n\n responseAccessToken = await popTokenGenerator.signPopToken(response.access_token, request.keyId, shrParameters);\n break;\n\n }\n // assign the access token to the response for all non-POP cases (Should be Bearer only today)\n default: {\n responseAccessToken = response.access_token;\n }\n }\n\n const mats = this.getMATSFromResponse(response);\n\n const result: AuthenticationResult = {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes.asArray(),\n account: accountEntity.getAccountInfo(),\n idToken: response.id_token,\n idTokenClaims: idTokenObj.claims,\n accessToken: responseAccessToken,\n fromCache: mats ? this.isResponseFromCache(mats) : false,\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\n tokenType: responseTokenType,\n correlationId: this.correlationId,\n state: response.state,\n fromNativeBroker: true\n };\n\n // cache idToken in inmemory storage\n const idTokenEntity = IdTokenEntity.createIdTokenEntity(\n homeAccountIdentifier,\n request.authority,\n response.id_token || Constants.EMPTY_STRING,\n request.clientId,\n idTokenObj.claims.tid || Constants.EMPTY_STRING,\n );\n this.nativeStorageManager.setIdTokenCredential(idTokenEntity);\n\n // cache accessToken in inmemory storage\n const expiresIn: number = (responseTokenType === AuthenticationScheme.POP)\n ? Constants.SHR_NONCE_VALIDITY\n : (\n typeof response.expires_in === \"string\"\n ? parseInt(response.expires_in, 10)\n : response.expires_in\n ) || 0;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(\n homeAccountIdentifier,\n request.authority,\n responseAccessToken,\n request.clientId,\n tid,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n 0,\n this.browserCrypto\n );\n this.nativeStorageManager.setAccessTokenCredential(accessTokenEntity);\n\n // Remove any existing cached tokens for this account in browser storage\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n this.logger.error(`Error occurred while removing account context from browser storage. ${e}`);\n });\n\n return result;\n }\n\n /**\n * Validates native platform response before processing\n * @param response\n */\n private validateNativeResponse(response: object): NativeResponse {\n if (\n response.hasOwnProperty(\"access_token\") &&\n response.hasOwnProperty(\"id_token\") &&\n response.hasOwnProperty(\"client_info\") &&\n response.hasOwnProperty(\"account\") &&\n response.hasOwnProperty(\"scopes\") &&\n response.hasOwnProperty(\"expires_in\")\n ) {\n return response as NativeResponse;\n } else {\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\n }\n }\n\n /**\n * Gets MATS telemetry from native response\n * @param response\n * @returns\n */\n private getMATSFromResponse(response: NativeResponse): MATS|null {\n if (response.properties.MATS) {\n try {\n return JSON.parse(response.properties.MATS);\n } catch (e) {\n this.logger.error(\"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\");\n }\n }\n\n return null;\n }\n\n /**\n * Returns whether or not response came from native cache\n * @param response\n * @returns\n */\n private isResponseFromCache(mats: MATS): boolean {\n if (typeof mats.is_cached === \"undefined\") {\n this.logger.verbose(\"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\");\n return false;\n }\n\n return !!mats.is_cached;\n }\n\n /**\n * Translates developer provided request object into NativeRequest object\n * @param request\n */\n protected async initializeNativeRequest(request: PopupRequest|SsoSilentRequest): Promise<NativeTokenRequest> {\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\n\n const authority = request.authority || this.config.auth.authority;\n const canonicalAuthority = new UrlString(authority);\n canonicalAuthority.validateAsUri();\n\n const scopes = request && request.scopes || [];\n const scopeSet = new ScopeSet(scopes);\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n const getPrompt = () => {\n // If request is silent, prompt is always none\n switch (this.apiId) {\n case ApiId.ssoSilent:\n case ApiId.acquireTokenSilent_silentFlow:\n this.logger.trace(\"initializeNativeRequest: silent request sets prompt to none\");\n return PromptValue.NONE;\n default:\n break;\n }\n\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\n if (!request.prompt) {\n this.logger.trace(\"initializeNativeRequest: prompt was not provided\");\n return undefined;\n }\n\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\n return request.prompt;\n default:\n this.logger.trace(`initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`);\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\n }\n };\n\n const validatedRequest: NativeTokenRequest = {\n ...request,\n accountId: this.accountId,\n clientId: this.config.auth.clientId,\n authority: canonicalAuthority.urlString,\n scopes: scopeSet.printScopes(),\n redirectUri: this.getRedirectUri(request.redirectUri),\n prompt: getPrompt(),\n correlationId: this.correlationId,\n tokenType: request.authenticationScheme,\n windowTitleSubstring: document.title,\n extraParameters: {\n ...request.extraQueryParameters,\n ...request.tokenQueryParameters,\n telemetry: NativeConstants.MATS_TELEMETRY\n },\n extendedExpiryToken: false // Make this configurable?\n };\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n\n // add POP request type\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestUri: request.resourceRequestUri,\n resourceRequestMethod: request.resourceRequestMethod,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce\n };\n\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n const reqCnfData = await popTokenGenerator.generateCnf(shrParameters);\n\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\n validatedRequest.reqCnf = reqCnfData.reqCnfHash;\n validatedRequest.keyId = reqCnfData.kid;\n }\n\n return validatedRequest;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -16,7 +16,8 @@ export declare type PopupParams = InteractionParams & {
16
16
  };
17
17
  export declare class PopupClient extends StandardInteractionClient {
18
18
  private currentWindow;
19
- constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeMessageHandler?: NativeMessageHandler, correlationId?: string);
19
+ protected nativeStorage: BrowserCacheManager;
20
+ constructor(config: BrowserConfiguration, storageImpl: BrowserCacheManager, browserCrypto: ICrypto, logger: Logger, eventHandler: EventHandler, navigationClient: INavigationClient, performanceClient: IPerformanceClient, nativeStorageImpl: BrowserCacheManager, nativeMessageHandler?: NativeMessageHandler, correlationId?: string);
20
21
  /**
21
22
  * Acquires tokens by opening a popup window to the /authorize endpoint of the authority
22
23
  * @param request
@@ -1 +1 @@
1
- {"version":3,"file":"PopupClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/PopupClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAA4E,uBAAuB,EAAwI,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACxU,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAG3E,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAEnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAsB,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,oBAAY,WAAW,GAAG,iBAAiB,GAAG;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,qBAAqB,CAAA;CAC/C,CAAC;AAEF,qBAAa,WAAY,SAAQ,yBAAyB;IACtD,OAAO,CAAC,aAAa,CAAmB;gBAE5B,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,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,MAAM;IAM/R;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqBlE;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7D;;;;;;;;OAQG;cACa,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2FlL;;;;;;;;OAQG;cACa,gBAAgB,CAAC,YAAY,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAC,IAAI,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2DvO;;;OAGG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM;IAapE;;;;OAIG;IACH,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoEzD;;;;OAIG;IACH,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCtD;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM;IAgChE;;;;;;OAMG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,EAAE,qBAAqB,GAAG,MAAM,GAAC,IAAI;IA0CjH;;OAEG;IACH,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAS5B;;;OAGG;IACH,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAYtC;;;;OAIG;IACH,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAInE;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM;CAIpE"}
1
+ {"version":3,"file":"PopupClient.d.ts","sourceRoot":"","sources":["../../src/interaction_client/PopupClient.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v2.25.0 2022-06-06 */
1
+ /*! @azure/msal-browser v2.28.0 2022-07-18 */
2
2
  'use strict';
3
3
  import { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
4
4
  import { OIDC_DEFAULT_SCOPES, StringUtils, UrlString, Constants, AuthError, ThrottlingUtils, ProtocolUtils, PerformanceEvents } from '@azure/msal-common';
@@ -17,10 +17,11 @@ import { InteractionHandler } from '../interaction_handler/InteractionHandler.js
17
17
  */
18
18
  var PopupClient = /** @class */ (function (_super) {
19
19
  __extends(PopupClient, _super);
20
- function PopupClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {
20
+ function PopupClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {
21
21
  var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;
22
22
  // Properly sets this reference for the unload event.
23
23
  _this.unloadWindow = _this.unloadWindow.bind(_this);
24
+ _this.nativeStorage = nativeStorageImpl;
24
25
  return _this;
25
26
  }
26
27
  /**
@@ -145,7 +146,7 @@ var PopupClient = /** @class */ (function (_super) {
145
146
  if (!this.nativeMessageHandler) {
146
147
  throw BrowserAuthError.createNativeConnectionNotEstablishedError();
147
148
  }
148
- nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, validRequest.correlationId);
149
+ nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.nativeStorage, validRequest.correlationId);
149
150
  userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state_1).userRequestState;
150
151
  return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, validRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently
151
152
  })).finally(function () {