@azure/msal-browser 3.0.0-alpha.1 → 3.0.0-alpha.2

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 (142) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +213 -213
  3. package/dist/app/IPublicClientApplication.d.ts +45 -45
  4. package/dist/app/IPublicClientApplication.js +96 -96
  5. package/dist/app/PublicClientApplication.d.ts +244 -244
  6. package/dist/app/PublicClientApplication.js +307 -307
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +63 -63
  8. package/dist/broker/nativeBroker/NativeMessageHandler.js +255 -255
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +43 -43
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/cache/AsyncMemoryStorage.d.ts +51 -51
  12. package/dist/cache/AsyncMemoryStorage.js +132 -132
  13. package/dist/cache/BrowserCacheManager.d.ts +377 -377
  14. package/dist/cache/BrowserCacheManager.js +1276 -1276
  15. package/dist/cache/BrowserStorage.d.ts +11 -11
  16. package/dist/cache/BrowserStorage.js +35 -35
  17. package/dist/cache/CryptoKeyStore.d.ts +17 -17
  18. package/dist/cache/CryptoKeyStore.js +41 -41
  19. package/dist/cache/DatabaseStorage.d.ts +56 -56
  20. package/dist/cache/DatabaseStorage.js +190 -190
  21. package/dist/cache/IAsyncMemoryStorage.d.ts +27 -27
  22. package/dist/cache/ITokenCache.d.ts +10 -10
  23. package/dist/cache/IWindowStorage.d.ts +27 -27
  24. package/dist/cache/MemoryStorage.d.ts +11 -11
  25. package/dist/cache/MemoryStorage.js +31 -31
  26. package/dist/cache/TokenCache.d.ts +76 -76
  27. package/dist/cache/TokenCache.js +225 -225
  28. package/dist/config/Configuration.d.ts +203 -203
  29. package/dist/config/Configuration.js +101 -101
  30. package/dist/controllers/ControllerFactory.d.ts +9 -9
  31. package/dist/controllers/ControllerFactory.js +37 -37
  32. package/dist/controllers/IController.d.ts +66 -66
  33. package/dist/controllers/StandardController.d.ts +413 -413
  34. package/dist/controllers/StandardController.js +1272 -1272
  35. package/dist/crypto/BrowserCrypto.d.ts +61 -61
  36. package/dist/crypto/BrowserCrypto.js +131 -131
  37. package/dist/crypto/CryptoOps.d.ts +73 -73
  38. package/dist/crypto/CryptoOps.js +150 -150
  39. package/dist/crypto/GuidGenerator.d.ts +12 -12
  40. package/dist/crypto/GuidGenerator.js +96 -96
  41. package/dist/crypto/ISubtleCrypto.d.ts +9 -9
  42. package/dist/crypto/ModernBrowserCrypto.d.ts +9 -9
  43. package/dist/crypto/ModernBrowserCrypto.js +24 -24
  44. package/dist/crypto/MsBrowserCrypto.d.ts +9 -9
  45. package/dist/crypto/MsBrowserCrypto.js +79 -79
  46. package/dist/crypto/MsrBrowserCrypto.d.ts +17 -17
  47. package/dist/crypto/MsrBrowserCrypto.js +28 -28
  48. package/dist/crypto/PkceGenerator.d.ts +24 -24
  49. package/dist/crypto/PkceGenerator.js +58 -58
  50. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  51. package/dist/crypto/SignedHttpRequest.js +39 -39
  52. package/dist/encode/Base64Decode.d.ts +22 -22
  53. package/dist/encode/Base64Decode.js +73 -73
  54. package/dist/encode/Base64Encode.d.ts +31 -31
  55. package/dist/encode/Base64Encode.js +79 -79
  56. package/dist/error/BrowserAuthError.d.ts +382 -382
  57. package/dist/error/BrowserAuthError.js +483 -483
  58. package/dist/error/BrowserConfigurationAuthError.d.ts +70 -70
  59. package/dist/error/BrowserConfigurationAuthError.js +96 -96
  60. package/dist/error/NativeAuthError.d.ts +56 -56
  61. package/dist/error/NativeAuthError.js +88 -88
  62. package/dist/event/EventHandler.d.ts +41 -41
  63. package/dist/event/EventHandler.js +119 -119
  64. package/dist/event/EventMessage.d.ts +25 -25
  65. package/dist/event/EventMessage.js +67 -67
  66. package/dist/event/EventType.d.ts +26 -26
  67. package/dist/event/EventType.js +31 -31
  68. package/dist/index.d.ts +35 -35
  69. package/dist/index.js +1 -1
  70. package/dist/interaction_client/BaseInteractionClient.d.ts +52 -52
  71. package/dist/interaction_client/BaseInteractionClient.js +138 -138
  72. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  73. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.js +10 -10
  74. package/dist/interaction_client/NativeInteractionClient.d.ts +148 -148
  75. package/dist/interaction_client/NativeInteractionClient.js +516 -516
  76. package/dist/interaction_client/PopupClient.d.ts +111 -111
  77. package/dist/interaction_client/PopupClient.js +476 -476
  78. package/dist/interaction_client/RedirectClient.d.ts +48 -48
  79. package/dist/interaction_client/RedirectClient.js +290 -290
  80. package/dist/interaction_client/SilentAuthCodeClient.d.ts +22 -22
  81. package/dist/interaction_client/SilentAuthCodeClient.js +62 -62
  82. package/dist/interaction_client/SilentCacheClient.d.ts +21 -21
  83. package/dist/interaction_client/SilentCacheClient.js +67 -67
  84. package/dist/interaction_client/SilentIframeClient.d.ts +31 -31
  85. package/dist/interaction_client/SilentIframeClient.js +127 -127
  86. package/dist/interaction_client/SilentRefreshClient.d.ts +19 -19
  87. package/dist/interaction_client/SilentRefreshClient.js +62 -62
  88. package/dist/interaction_client/StandardInteractionClient.d.ts +59 -59
  89. package/dist/interaction_client/StandardInteractionClient.js +259 -259
  90. package/dist/interaction_handler/InteractionHandler.d.ts +39 -39
  91. package/dist/interaction_handler/InteractionHandler.js +127 -127
  92. package/dist/interaction_handler/RedirectHandler.d.ts +24 -24
  93. package/dist/interaction_handler/RedirectHandler.js +118 -118
  94. package/dist/interaction_handler/SilentHandler.d.ts +47 -47
  95. package/dist/interaction_handler/SilentHandler.js +162 -162
  96. package/dist/internals.d.ts +23 -23
  97. package/dist/internals.js +4 -4
  98. package/dist/navigation/INavigationClient.d.ts +16 -16
  99. package/dist/navigation/NavigationClient.d.ts +22 -22
  100. package/dist/navigation/NavigationClient.js +40 -40
  101. package/dist/navigation/NavigationOptions.d.ts +12 -12
  102. package/dist/network/FetchClient.d.ts +26 -26
  103. package/dist/network/FetchClient.js +99 -99
  104. package/dist/network/XhrClient.d.ts +40 -40
  105. package/dist/network/XhrClient.js +117 -117
  106. package/dist/operatingcontext/BaseOperatingContext.d.ts +40 -40
  107. package/dist/operatingcontext/BaseOperatingContext.js +44 -44
  108. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  109. package/dist/operatingcontext/StandardOperatingContext.js +43 -43
  110. package/dist/operatingcontext/TeamsAppOperatingContext.d.ts +25 -25
  111. package/dist/operatingcontext/TeamsAppOperatingContext.js +42 -42
  112. package/dist/packageMetadata.d.ts +2 -2
  113. package/dist/packageMetadata.js +4 -4
  114. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  115. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  116. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  117. package/dist/request/EndSessionRequest.d.ts +15 -15
  118. package/dist/request/PopupRequest.d.ts +32 -32
  119. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  120. package/dist/request/RedirectRequest.d.ts +33 -33
  121. package/dist/request/SilentRequest.d.ts +30 -30
  122. package/dist/request/SsoSilentRequest.d.ts +26 -26
  123. package/dist/telemetry/BrowserPerformanceClient.d.ts +38 -38
  124. package/dist/telemetry/BrowserPerformanceClient.js +124 -124
  125. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  126. package/dist/telemetry/BrowserPerformanceMeasurement.js +92 -92
  127. package/dist/utils/BrowserConstants.d.ts +166 -166
  128. package/dist/utils/BrowserConstants.js +214 -214
  129. package/dist/utils/BrowserProtocolUtils.d.ts +18 -18
  130. package/dist/utils/BrowserProtocolUtils.js +34 -34
  131. package/dist/utils/BrowserStringUtils.d.ts +26 -26
  132. package/dist/utils/BrowserStringUtils.js +149 -149
  133. package/dist/utils/BrowserUtils.d.ts +65 -65
  134. package/dist/utils/BrowserUtils.js +138 -138
  135. package/dist/utils/MathUtils.d.ts +11 -11
  136. package/dist/utils/MathUtils.js +21 -21
  137. package/lib/msal-browser.cjs.js +18383 -0
  138. package/lib/msal-browser.cjs.js.map +1 -0
  139. package/lib/msal-browser.js +18389 -0
  140. package/lib/msal-browser.js.map +1 -0
  141. package/lib/msal-browser.min.js +74 -0
  142. package/package.json +97 -95
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-alpha.2 2023-05-17 */
2
2
  'use strict';
3
3
  import { PerformanceEvents, StringUtils, PromptValue, Constants, AuthError, UrlString, ProtocolUtils } from '@azure/msal-common';
4
4
  import { StandardInteractionClient } from './StandardInteractionClient.js';
@@ -8,132 +8,132 @@ import { SilentHandler } from '../interaction_handler/SilentHandler.js';
8
8
  import { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';
9
9
  import { NativeInteractionClient } from './NativeInteractionClient.js';
10
10
 
11
- /*
12
- * Copyright (c) Microsoft Corporation. All rights reserved.
13
- * Licensed under the MIT License.
14
- */
15
- class SilentIframeClient extends StandardInteractionClient {
16
- constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {
17
- super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);
18
- this.apiId = apiId;
19
- this.nativeStorage = nativeStorageImpl;
20
- }
21
- /**
22
- * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session
23
- * @param request
24
- */
25
- async acquireToken(request) {
26
- this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);
27
- this.logger.verbose("acquireTokenByIframe called");
28
- const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);
29
- // Check that we have some SSO data
30
- if (StringUtils.isEmpty(request.loginHint) &&
31
- StringUtils.isEmpty(request.sid) &&
32
- (!request.account || StringUtils.isEmpty(request.account.username))) {
33
- this.logger.warning("No user hint provided. The authorization server may need more information to complete this request.");
34
- }
35
- // Check that prompt is set to none or no_session, throw error if it is set to anything else.
36
- if (request.prompt &&
37
- request.prompt !== PromptValue.NONE &&
38
- request.prompt !== PromptValue.NO_SESSION) {
39
- acquireTokenMeasurement.endMeasurement({
40
- success: false,
41
- });
42
- throw BrowserAuthError.createSilentPromptValueError(request.prompt);
43
- }
44
- // Create silent request
45
- this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);
46
- const silentRequest = await this.initializeAuthorizationRequest({
47
- ...request,
48
- prompt: request.prompt || PromptValue.NONE,
49
- }, InteractionType.Silent);
50
- this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);
51
- const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);
52
- try {
53
- // Initialize the client
54
- this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);
55
- const authClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);
56
- this.logger.verbose("Auth code client created");
57
- this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);
58
- return await this.silentTokenHelper(authClient, silentRequest).then((result) => {
59
- acquireTokenMeasurement.endMeasurement({
60
- success: true,
61
- fromCache: false,
62
- requestId: result.requestId,
63
- });
64
- return result;
65
- });
66
- }
67
- catch (e) {
68
- if (e instanceof AuthError) {
69
- e.setCorrelationId(this.correlationId);
70
- serverTelemetryManager.cacheFailedRequest(e);
71
- }
72
- this.browserStorage.cleanRequestByState(silentRequest.state);
73
- acquireTokenMeasurement.endMeasurement({
74
- errorCode: (e instanceof AuthError && e.errorCode) || undefined,
75
- subErrorCode: (e instanceof AuthError && e.subError) || undefined,
76
- success: false,
77
- });
78
- throw e;
79
- }
80
- }
81
- /**
82
- * Currently Unsupported
83
- */
84
- logout() {
85
- // Synchronous so we must reject
86
- return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());
87
- }
88
- /**
89
- * Helper which acquires an authorization code silently using a hidden iframe from given url
90
- * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.
91
- * @param navigateUrl
92
- * @param userRequestScopes
93
- */
94
- async silentTokenHelper(authClient, silentRequest) {
95
- this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);
96
- // Create auth code request and generate PKCE params
97
- this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);
98
- const authCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);
99
- // Create authorize request url
100
- this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);
101
- const navigateUrl = await authClient.getAuthCodeUrl({
102
- ...silentRequest,
103
- nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme),
104
- });
105
- // Create silent handler
106
- const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);
107
- // Get the frame handle for the silent request
108
- this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);
109
- const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);
110
- // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.
111
- this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);
112
- const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);
113
- // Deserialize hash fragment response parameters.
114
- const serverParams = UrlString.getDeserializedHash(hash);
115
- const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);
116
- if (serverParams.accountId) {
117
- this.logger.verbose("Account id found in hash, calling WAM for token");
118
- if (!this.nativeMessageHandler) {
119
- throw BrowserAuthError.createNativeConnectionNotEstablishedError();
120
- }
121
- const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);
122
- const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);
123
- return nativeInteractionClient
124
- .acquireToken({
125
- ...silentRequest,
126
- state: userRequestState,
127
- prompt: silentRequest.prompt || PromptValue.NONE,
128
- })
129
- .finally(() => {
130
- this.browserStorage.cleanRequestByState(state);
131
- });
132
- }
133
- // Handle response from hash string
134
- this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);
135
- return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);
136
- }
11
+ /*
12
+ * Copyright (c) Microsoft Corporation. All rights reserved.
13
+ * Licensed under the MIT License.
14
+ */
15
+ class SilentIframeClient extends StandardInteractionClient {
16
+ constructor(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeStorageImpl, nativeMessageHandler, correlationId) {
17
+ super(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId);
18
+ this.apiId = apiId;
19
+ this.nativeStorage = nativeStorageImpl;
20
+ }
21
+ /**
22
+ * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session
23
+ * @param request
24
+ */
25
+ async acquireToken(request) {
26
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);
27
+ this.logger.verbose("acquireTokenByIframe called");
28
+ const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);
29
+ // Check that we have some SSO data
30
+ if (StringUtils.isEmpty(request.loginHint) &&
31
+ StringUtils.isEmpty(request.sid) &&
32
+ (!request.account || StringUtils.isEmpty(request.account.username))) {
33
+ this.logger.warning("No user hint provided. The authorization server may need more information to complete this request.");
34
+ }
35
+ // Check that prompt is set to none or no_session, throw error if it is set to anything else.
36
+ if (request.prompt &&
37
+ request.prompt !== PromptValue.NONE &&
38
+ request.prompt !== PromptValue.NO_SESSION) {
39
+ acquireTokenMeasurement.endMeasurement({
40
+ success: false,
41
+ });
42
+ throw BrowserAuthError.createSilentPromptValueError(request.prompt);
43
+ }
44
+ // Create silent request
45
+ this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, request.correlationId);
46
+ const silentRequest = await this.initializeAuthorizationRequest({
47
+ ...request,
48
+ prompt: request.prompt || PromptValue.NONE,
49
+ }, InteractionType.Silent);
50
+ this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);
51
+ const serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);
52
+ try {
53
+ // Initialize the client
54
+ this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, request.correlationId);
55
+ const authClient = await this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);
56
+ this.logger.verbose("Auth code client created");
57
+ this.performanceClient.setPreQueueTime(PerformanceEvents.SilentIframeClientTokenHelper, request.correlationId);
58
+ return await this.silentTokenHelper(authClient, silentRequest).then((result) => {
59
+ acquireTokenMeasurement.endMeasurement({
60
+ success: true,
61
+ fromCache: false,
62
+ requestId: result.requestId,
63
+ });
64
+ return result;
65
+ });
66
+ }
67
+ catch (e) {
68
+ if (e instanceof AuthError) {
69
+ e.setCorrelationId(this.correlationId);
70
+ serverTelemetryManager.cacheFailedRequest(e);
71
+ }
72
+ this.browserStorage.cleanRequestByState(silentRequest.state);
73
+ acquireTokenMeasurement.endMeasurement({
74
+ errorCode: (e instanceof AuthError && e.errorCode) || undefined,
75
+ subErrorCode: (e instanceof AuthError && e.subError) || undefined,
76
+ success: false,
77
+ });
78
+ throw e;
79
+ }
80
+ }
81
+ /**
82
+ * Currently Unsupported
83
+ */
84
+ logout() {
85
+ // Synchronous so we must reject
86
+ return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());
87
+ }
88
+ /**
89
+ * Helper which acquires an authorization code silently using a hidden iframe from given url
90
+ * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.
91
+ * @param navigateUrl
92
+ * @param userRequestScopes
93
+ */
94
+ async silentTokenHelper(authClient, silentRequest) {
95
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentIframeClientTokenHelper, silentRequest.correlationId);
96
+ // Create auth code request and generate PKCE params
97
+ this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, silentRequest.correlationId);
98
+ const authCodeRequest = await this.initializeAuthorizationCodeRequest(silentRequest);
99
+ // Create authorize request url
100
+ this.performanceClient.setPreQueueTime(PerformanceEvents.GetAuthCodeUrl, silentRequest.correlationId);
101
+ const navigateUrl = await authClient.getAuthCodeUrl({
102
+ ...silentRequest,
103
+ nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme),
104
+ });
105
+ // Create silent handler
106
+ const silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system, this.performanceClient);
107
+ // Get the frame handle for the silent request
108
+ this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerInitiateAuthRequest, silentRequest.correlationId);
109
+ const msalFrame = await silentHandler.initiateAuthRequest(navigateUrl);
110
+ // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.
111
+ this.performanceClient.setPreQueueTime(PerformanceEvents.SilentHandlerMonitorIframeForHash, silentRequest.correlationId);
112
+ const hash = await silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout);
113
+ // Deserialize hash fragment response parameters.
114
+ const serverParams = UrlString.getDeserializedHash(hash);
115
+ const state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);
116
+ if (serverParams.accountId) {
117
+ this.logger.verbose("Account id found in hash, calling WAM for token");
118
+ if (!this.nativeMessageHandler) {
119
+ throw BrowserAuthError.createNativeConnectionNotEstablishedError();
120
+ }
121
+ const nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.browserStorage, this.correlationId);
122
+ const { userRequestState } = ProtocolUtils.parseRequestState(this.browserCrypto, state);
123
+ return nativeInteractionClient
124
+ .acquireToken({
125
+ ...silentRequest,
126
+ state: userRequestState,
127
+ prompt: silentRequest.prompt || PromptValue.NONE,
128
+ })
129
+ .finally(() => {
130
+ this.browserStorage.cleanRequestByState(state);
131
+ });
132
+ }
133
+ // Handle response from hash string
134
+ this.performanceClient.setPreQueueTime(PerformanceEvents.HandleCodeResponseFromHash, silentRequest.correlationId);
135
+ return silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient);
136
+ }
137
137
  }
138
138
 
139
139
  export { SilentIframeClient };
@@ -1,20 +1,20 @@
1
- import { StandardInteractionClient } from "./StandardInteractionClient";
2
- import { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AzureCloudOptions } from "@azure/msal-common";
3
- export declare class SilentRefreshClient extends StandardInteractionClient {
4
- /**
5
- * Exchanges the refresh token for new tokens
6
- * @param request
7
- */
8
- acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult>;
9
- /**
10
- * Currently Unsupported
11
- */
12
- logout(): Promise<void>;
13
- /**
14
- * Creates a Refresh Client with the given authority, or the default authority.
15
- * @param serverTelemetryManager
16
- * @param authorityUrl
17
- */
18
- protected createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient>;
19
- }
1
+ import { StandardInteractionClient } from "./StandardInteractionClient";
2
+ import { CommonSilentFlowRequest, AuthenticationResult, ServerTelemetryManager, RefreshTokenClient, AzureCloudOptions } from "@azure/msal-common";
3
+ export declare class SilentRefreshClient extends StandardInteractionClient {
4
+ /**
5
+ * Exchanges the refresh token for new tokens
6
+ * @param request
7
+ */
8
+ acquireToken(request: CommonSilentFlowRequest): Promise<AuthenticationResult>;
9
+ /**
10
+ * Currently Unsupported
11
+ */
12
+ logout(): Promise<void>;
13
+ /**
14
+ * Creates a Refresh Client with the given authority, or the default authority.
15
+ * @param serverTelemetryManager
16
+ * @param authorityUrl
17
+ */
18
+ protected createRefreshTokenClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, azureCloudOptions?: AzureCloudOptions): Promise<RefreshTokenClient>;
19
+ }
20
20
  //# sourceMappingURL=SilentRefreshClient.d.ts.map
@@ -1,71 +1,71 @@
1
- /*! @azure/msal-browser v3.0.0-alpha.1 2023-05-08 */
1
+ /*! @azure/msal-browser v3.0.0-alpha.2 2023-05-17 */
2
2
  'use strict';
3
3
  import { StandardInteractionClient } from './StandardInteractionClient.js';
4
4
  import { PerformanceEvents, RefreshTokenClient } from '@azure/msal-common';
5
5
  import { ApiId } from '../utils/BrowserConstants.js';
6
6
  import { BrowserAuthError } from '../error/BrowserAuthError.js';
7
7
 
8
- /*
9
- * Copyright (c) Microsoft Corporation. All rights reserved.
10
- * Licensed under the MIT License.
11
- */
12
- class SilentRefreshClient extends StandardInteractionClient {
13
- /**
14
- * Exchanges the refresh token for new tokens
15
- * @param request
16
- */
17
- async acquireToken(request) {
18
- this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);
19
- this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);
20
- const silentRequest = {
21
- ...request,
22
- ...(await this.initializeBaseRequest(request)),
23
- };
24
- const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);
25
- const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);
26
- const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);
27
- this.logger.verbose("Refresh token client created");
28
- // Send request to renew token. Auth module will throw errors if token cannot be renewed.
29
- this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);
30
- return refreshTokenClient
31
- .acquireTokenByRefreshToken(silentRequest)
32
- .then((result) => {
33
- acquireTokenMeasurement.endMeasurement({
34
- success: true,
35
- fromCache: result.fromCache,
36
- requestId: result.requestId,
37
- });
38
- return result;
39
- })
40
- .catch((e) => {
41
- e.setCorrelationId(this.correlationId);
42
- serverTelemetryManager.cacheFailedRequest(e);
43
- acquireTokenMeasurement.endMeasurement({
44
- errorCode: e.errorCode,
45
- subErrorCode: e.subError,
46
- success: false,
47
- });
48
- throw e;
49
- });
50
- }
51
- /**
52
- * Currently Unsupported
53
- */
54
- logout() {
55
- // Synchronous so we must reject
56
- return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());
57
- }
58
- /**
59
- * Creates a Refresh Client with the given authority, or the default authority.
60
- * @param serverTelemetryManager
61
- * @param authorityUrl
62
- */
63
- async createRefreshTokenClient(serverTelemetryManager, authorityUrl, azureCloudOptions) {
64
- // Create auth module.
65
- this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);
66
- const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);
67
- return new RefreshTokenClient(clientConfig, this.performanceClient);
68
- }
8
+ /*
9
+ * Copyright (c) Microsoft Corporation. All rights reserved.
10
+ * Licensed under the MIT License.
11
+ */
12
+ class SilentRefreshClient extends StandardInteractionClient {
13
+ /**
14
+ * Exchanges the refresh token for new tokens
15
+ * @param request
16
+ */
17
+ async acquireToken(request) {
18
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, request.correlationId);
19
+ this.performanceClient.setPreQueueTime(PerformanceEvents.InitializeBaseRequest, request.correlationId);
20
+ const silentRequest = {
21
+ ...request,
22
+ ...(await this.initializeBaseRequest(request)),
23
+ };
24
+ const acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);
25
+ const serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);
26
+ const refreshTokenClient = await this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions);
27
+ this.logger.verbose("Refresh token client created");
28
+ // Send request to renew token. Auth module will throw errors if token cannot be renewed.
29
+ this.performanceClient.setPreQueueTime(PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken, request.correlationId);
30
+ return refreshTokenClient
31
+ .acquireTokenByRefreshToken(silentRequest)
32
+ .then((result) => {
33
+ acquireTokenMeasurement.endMeasurement({
34
+ success: true,
35
+ fromCache: result.fromCache,
36
+ requestId: result.requestId,
37
+ });
38
+ return result;
39
+ })
40
+ .catch((e) => {
41
+ e.setCorrelationId(this.correlationId);
42
+ serverTelemetryManager.cacheFailedRequest(e);
43
+ acquireTokenMeasurement.endMeasurement({
44
+ errorCode: e.errorCode,
45
+ subErrorCode: e.subError,
46
+ success: false,
47
+ });
48
+ throw e;
49
+ });
50
+ }
51
+ /**
52
+ * Currently Unsupported
53
+ */
54
+ logout() {
55
+ // Synchronous so we must reject
56
+ return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());
57
+ }
58
+ /**
59
+ * Creates a Refresh Client with the given authority, or the default authority.
60
+ * @param serverTelemetryManager
61
+ * @param authorityUrl
62
+ */
63
+ async createRefreshTokenClient(serverTelemetryManager, authorityUrl, azureCloudOptions) {
64
+ // Create auth module.
65
+ this.performanceClient.setPreQueueTime(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);
66
+ const clientConfig = await this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions);
67
+ return new RefreshTokenClient(clientConfig, this.performanceClient);
68
+ }
69
69
  }
70
70
 
71
71
  export { SilentRefreshClient };
@@ -1,60 +1,60 @@
1
- import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, ServerAuthorizationCodeResponse, CommonEndSessionRequest, AccountInfo, AzureCloudOptions } from "@azure/msal-common";
2
- import { BaseInteractionClient } from "./BaseInteractionClient";
3
- import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
4
- import { InteractionType } from "../utils/BrowserConstants";
5
- import { EndSessionRequest } from "../request/EndSessionRequest";
6
- import { RedirectRequest } from "../request/RedirectRequest";
7
- import { PopupRequest } from "../request/PopupRequest";
8
- import { SsoSilentRequest } from "../request/SsoSilentRequest";
9
- /**
10
- * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
11
- */
12
- export declare abstract class StandardInteractionClient extends BaseInteractionClient {
13
- /**
14
- * Generates an auth code request tied to the url request.
15
- * @param request
16
- */
17
- protected initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest>;
18
- /**
19
- * Initializer for the logout request.
20
- * @param logoutRequest
21
- */
22
- protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest;
23
- /**
24
- * Parses login_hint ID Token Claim out of AccountInfo object to be used as
25
- * logout_hint in end session request.
26
- * @param account
27
- */
28
- protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null;
29
- /**
30
- * Creates an Authorization Code Client with the given authority, or the default authority.
31
- * @param serverTelemetryManager
32
- * @param authorityUrl
33
- */
34
- protected createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient>;
35
- /**
36
- * Creates a Client Configuration object with the given request authority, or the default authority.
37
- * @param serverTelemetryManager
38
- * @param requestAuthority
39
- * @param requestCorrelationId
40
- */
41
- protected getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration>;
42
- /**
43
- * @param hash
44
- * @param interactionType
45
- */
46
- protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string;
47
- /**
48
- * Used to get a discovered version of the default authority.
49
- * @param requestAuthority
50
- * @param requestCorrelationId
51
- */
52
- protected getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority>;
53
- /**
54
- * Helper to initialize required request parameters for interactive APIs and ssoSilent()
55
- * @param request
56
- * @param interactionType
57
- */
58
- protected initializeAuthorizationRequest(request: RedirectRequest | PopupRequest | SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest>;
59
- }
1
+ import { ServerTelemetryManager, CommonAuthorizationCodeRequest, AuthorizationCodeClient, ClientConfiguration, Authority, ServerAuthorizationCodeResponse, CommonEndSessionRequest, AccountInfo, AzureCloudOptions } from "@azure/msal-common";
2
+ import { BaseInteractionClient } from "./BaseInteractionClient";
3
+ import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
4
+ import { InteractionType } from "../utils/BrowserConstants";
5
+ import { EndSessionRequest } from "../request/EndSessionRequest";
6
+ import { RedirectRequest } from "../request/RedirectRequest";
7
+ import { PopupRequest } from "../request/PopupRequest";
8
+ import { SsoSilentRequest } from "../request/SsoSilentRequest";
9
+ /**
10
+ * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
11
+ */
12
+ export declare abstract class StandardInteractionClient extends BaseInteractionClient {
13
+ /**
14
+ * Generates an auth code request tied to the url request.
15
+ * @param request
16
+ */
17
+ protected initializeAuthorizationCodeRequest(request: AuthorizationUrlRequest): Promise<CommonAuthorizationCodeRequest>;
18
+ /**
19
+ * Initializer for the logout request.
20
+ * @param logoutRequest
21
+ */
22
+ protected initializeLogoutRequest(logoutRequest?: EndSessionRequest): CommonEndSessionRequest;
23
+ /**
24
+ * Parses login_hint ID Token Claim out of AccountInfo object to be used as
25
+ * logout_hint in end session request.
26
+ * @param account
27
+ */
28
+ protected getLogoutHintFromIdTokenClaims(account: AccountInfo): string | null;
29
+ /**
30
+ * Creates an Authorization Code Client with the given authority, or the default authority.
31
+ * @param serverTelemetryManager
32
+ * @param authorityUrl
33
+ */
34
+ protected createAuthCodeClient(serverTelemetryManager: ServerTelemetryManager, authorityUrl?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<AuthorizationCodeClient>;
35
+ /**
36
+ * Creates a Client Configuration object with the given request authority, or the default authority.
37
+ * @param serverTelemetryManager
38
+ * @param requestAuthority
39
+ * @param requestCorrelationId
40
+ */
41
+ protected getClientConfiguration(serverTelemetryManager: ServerTelemetryManager, requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<ClientConfiguration>;
42
+ /**
43
+ * @param hash
44
+ * @param interactionType
45
+ */
46
+ protected validateAndExtractStateFromHash(serverParams: ServerAuthorizationCodeResponse, interactionType: InteractionType, requestCorrelationId?: string): string;
47
+ /**
48
+ * Used to get a discovered version of the default authority.
49
+ * @param requestAuthority
50
+ * @param requestCorrelationId
51
+ */
52
+ protected getDiscoveredAuthority(requestAuthority?: string, requestAzureCloudOptions?: AzureCloudOptions): Promise<Authority>;
53
+ /**
54
+ * Helper to initialize required request parameters for interactive APIs and ssoSilent()
55
+ * @param request
56
+ * @param interactionType
57
+ */
58
+ protected initializeAuthorizationRequest(request: RedirectRequest | PopupRequest | SsoSilentRequest, interactionType: InteractionType): Promise<AuthorizationUrlRequest>;
59
+ }
60
60
  //# sourceMappingURL=StandardInteractionClient.d.ts.map