@azure/msal-browser 3.19.1 → 3.21.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 (211) hide show
  1. package/dist/app/IPublicClientApplication.d.ts +53 -53
  2. package/dist/app/IPublicClientApplication.mjs +105 -105
  3. package/dist/app/PublicClientApplication.d.ts +293 -293
  4. package/dist/app/PublicClientApplication.mjs +364 -364
  5. package/dist/app/PublicClientNext.d.ts +276 -276
  6. package/dist/app/PublicClientNext.mjs +354 -354
  7. package/dist/broker/nativeBroker/NativeMessageHandler.d.ts +62 -62
  8. package/dist/broker/nativeBroker/NativeMessageHandler.mjs +254 -254
  9. package/dist/broker/nativeBroker/NativeRequest.d.ts +45 -45
  10. package/dist/broker/nativeBroker/NativeResponse.d.ts +48 -48
  11. package/dist/broker/nativeBroker/NativeStatusCodes.d.ts +7 -7
  12. package/dist/broker/nativeBroker/NativeStatusCodes.mjs +11 -11
  13. package/dist/cache/AccountManager.d.ts +48 -48
  14. package/dist/cache/AccountManager.mjs +126 -126
  15. package/dist/cache/AsyncMemoryStorage.d.ts +50 -50
  16. package/dist/cache/AsyncMemoryStorage.mjs +131 -131
  17. package/dist/cache/BrowserCacheManager.d.ts +410 -385
  18. package/dist/cache/BrowserCacheManager.d.ts.map +1 -1
  19. package/dist/cache/BrowserCacheManager.mjs +1364 -1294
  20. package/dist/cache/BrowserCacheManager.mjs.map +1 -1
  21. package/dist/cache/BrowserStorage.d.ts +11 -11
  22. package/dist/cache/BrowserStorage.mjs +32 -32
  23. package/dist/cache/DatabaseStorage.d.ts +56 -56
  24. package/dist/cache/DatabaseStorage.mjs +200 -200
  25. package/dist/cache/IAsyncStorage.d.ts +27 -27
  26. package/dist/cache/ITokenCache.d.ts +11 -11
  27. package/dist/cache/IWindowStorage.d.ts +27 -27
  28. package/dist/cache/MemoryStorage.d.ts +11 -11
  29. package/dist/cache/MemoryStorage.mjs +31 -31
  30. package/dist/cache/TokenCache.d.ts +77 -77
  31. package/dist/cache/TokenCache.mjs +195 -195
  32. package/dist/config/Configuration.d.ts +213 -208
  33. package/dist/config/Configuration.d.ts.map +1 -1
  34. package/dist/config/Configuration.mjs +128 -128
  35. package/dist/config/Configuration.mjs.map +1 -1
  36. package/dist/controllers/ControllerFactory.d.ts +5 -5
  37. package/dist/controllers/ControllerFactory.mjs +25 -25
  38. package/dist/controllers/IController.d.ts +60 -60
  39. package/dist/controllers/NestedAppAuthController.d.ts +202 -202
  40. package/dist/controllers/NestedAppAuthController.mjs +473 -473
  41. package/dist/controllers/StandardController.d.ts +405 -405
  42. package/dist/controllers/StandardController.d.ts.map +1 -1
  43. package/dist/controllers/StandardController.mjs +1334 -1316
  44. package/dist/controllers/StandardController.mjs.map +1 -1
  45. package/dist/controllers/UnknownOperatingContextController.d.ts +86 -86
  46. package/dist/controllers/UnknownOperatingContextController.mjs +256 -256
  47. package/dist/crypto/BrowserCrypto.d.ts +52 -52
  48. package/dist/crypto/BrowserCrypto.mjs +151 -151
  49. package/dist/crypto/CryptoOps.d.ts +74 -74
  50. package/dist/crypto/CryptoOps.mjs +176 -176
  51. package/dist/crypto/PkceGenerator.d.ts +8 -8
  52. package/dist/crypto/PkceGenerator.mjs +54 -54
  53. package/dist/crypto/SignedHttpRequest.d.ts +30 -30
  54. package/dist/crypto/SignedHttpRequest.mjs +39 -39
  55. package/dist/encode/Base64Decode.d.ts +9 -9
  56. package/dist/encode/Base64Decode.mjs +36 -36
  57. package/dist/encode/Base64Encode.d.ts +19 -19
  58. package/dist/encode/Base64Encode.mjs +43 -43
  59. package/dist/error/BrowserAuthError.d.ts +256 -255
  60. package/dist/error/BrowserAuthError.d.ts.map +1 -1
  61. package/dist/error/BrowserAuthError.mjs +265 -264
  62. package/dist/error/BrowserAuthError.mjs.map +1 -1
  63. package/dist/error/BrowserAuthErrorCodes.d.ts +47 -46
  64. package/dist/error/BrowserAuthErrorCodes.d.ts.map +1 -1
  65. package/dist/error/BrowserAuthErrorCodes.mjs +53 -52
  66. package/dist/error/BrowserAuthErrorCodes.mjs.map +1 -1
  67. package/dist/error/BrowserConfigurationAuthError.d.ts +33 -33
  68. package/dist/error/BrowserConfigurationAuthError.mjs +40 -40
  69. package/dist/error/BrowserConfigurationAuthError.mjs.map +1 -1
  70. package/dist/error/BrowserConfigurationAuthErrorCodes.d.ts +3 -3
  71. package/dist/error/BrowserConfigurationAuthErrorCodes.mjs +7 -7
  72. package/dist/error/NativeAuthError.d.ts +29 -29
  73. package/dist/error/NativeAuthError.mjs +60 -60
  74. package/dist/error/NativeAuthErrorCodes.d.ts +2 -2
  75. package/dist/error/NativeAuthErrorCodes.mjs +6 -6
  76. package/dist/error/NestedAppAuthError.d.ts +14 -14
  77. package/dist/error/NestedAppAuthError.mjs +23 -23
  78. package/dist/event/EventHandler.d.ts +41 -41
  79. package/dist/event/EventHandler.mjs +125 -125
  80. package/dist/event/EventMessage.d.ts +25 -25
  81. package/dist/event/EventMessage.mjs +68 -68
  82. package/dist/event/EventType.d.ts +29 -29
  83. package/dist/event/EventType.mjs +32 -32
  84. package/dist/index.d.ts +40 -40
  85. package/dist/index.mjs +1 -1
  86. package/dist/interaction_client/BaseInteractionClient.d.ts +50 -50
  87. package/dist/interaction_client/BaseInteractionClient.mjs +106 -106
  88. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.d.ts +4 -4
  89. package/dist/interaction_client/HybridSpaAuthorizationCodeClient.mjs +10 -10
  90. package/dist/interaction_client/NativeInteractionClient.d.ts +151 -143
  91. package/dist/interaction_client/NativeInteractionClient.d.ts.map +1 -1
  92. package/dist/interaction_client/NativeInteractionClient.mjs +624 -584
  93. package/dist/interaction_client/NativeInteractionClient.mjs.map +1 -1
  94. package/dist/interaction_client/PopupClient.d.ts +118 -105
  95. package/dist/interaction_client/PopupClient.d.ts.map +1 -1
  96. package/dist/interaction_client/PopupClient.mjs +460 -434
  97. package/dist/interaction_client/PopupClient.mjs.map +1 -1
  98. package/dist/interaction_client/RedirectClient.d.ts +50 -50
  99. package/dist/interaction_client/RedirectClient.d.ts.map +1 -1
  100. package/dist/interaction_client/RedirectClient.mjs +349 -317
  101. package/dist/interaction_client/RedirectClient.mjs.map +1 -1
  102. package/dist/interaction_client/SilentAuthCodeClient.d.ts +23 -23
  103. package/dist/interaction_client/SilentAuthCodeClient.mjs +57 -57
  104. package/dist/interaction_client/SilentCacheClient.d.ts +16 -16
  105. package/dist/interaction_client/SilentCacheClient.mjs +42 -42
  106. package/dist/interaction_client/SilentIframeClient.d.ts +32 -32
  107. package/dist/interaction_client/SilentIframeClient.d.ts.map +1 -1
  108. package/dist/interaction_client/SilentIframeClient.mjs +111 -101
  109. package/dist/interaction_client/SilentIframeClient.mjs.map +1 -1
  110. package/dist/interaction_client/SilentRefreshClient.d.ts +20 -20
  111. package/dist/interaction_client/SilentRefreshClient.mjs +47 -47
  112. package/dist/interaction_client/StandardInteractionClient.d.ts +48 -48
  113. package/dist/interaction_client/StandardInteractionClient.mjs +199 -199
  114. package/dist/interaction_handler/InteractionHandler.d.ts +33 -33
  115. package/dist/interaction_handler/InteractionHandler.mjs +93 -93
  116. package/dist/interaction_handler/RedirectHandler.d.ts +32 -32
  117. package/dist/interaction_handler/RedirectHandler.d.ts.map +1 -1
  118. package/dist/interaction_handler/RedirectHandler.mjs +135 -134
  119. package/dist/interaction_handler/RedirectHandler.mjs.map +1 -1
  120. package/dist/interaction_handler/SilentHandler.d.ts +13 -13
  121. package/dist/interaction_handler/SilentHandler.mjs +134 -134
  122. package/dist/naa/AccountInfo.d.ts +11 -11
  123. package/dist/naa/AuthBridge.d.ts +8 -8
  124. package/dist/naa/AuthResult.d.ts +6 -6
  125. package/dist/naa/BridgeAccountContext.d.ts +12 -12
  126. package/dist/naa/BridgeCapabilities.d.ts +3 -3
  127. package/dist/naa/BridgeError.d.ts +9 -9
  128. package/dist/naa/BridgeError.mjs +7 -7
  129. package/dist/naa/BridgeProxy.d.ts +67 -67
  130. package/dist/naa/BridgeProxy.d.ts.map +1 -1
  131. package/dist/naa/BridgeProxy.mjs +153 -148
  132. package/dist/naa/BridgeProxy.mjs.map +1 -1
  133. package/dist/naa/BridgeRequest.d.ts +7 -7
  134. package/dist/naa/BridgeRequestEnvelope.d.ts +12 -12
  135. package/dist/naa/BridgeResponseEnvelope.d.ts +13 -13
  136. package/dist/naa/BridgeStatusCode.d.ts +11 -11
  137. package/dist/naa/BridgeStatusCode.mjs +14 -14
  138. package/dist/naa/IBridgeProxy.d.ts +10 -10
  139. package/dist/naa/InitContext.d.ts +8 -8
  140. package/dist/naa/TokenRequest.d.ts +18 -18
  141. package/dist/naa/TokenResponse.d.ts +13 -13
  142. package/dist/naa/mapping/NestedAppAuthAdapter.d.ts +35 -35
  143. package/dist/naa/mapping/NestedAppAuthAdapter.mjs +179 -179
  144. package/dist/navigation/INavigationClient.d.ts +16 -16
  145. package/dist/navigation/NavigationClient.d.ts +22 -22
  146. package/dist/navigation/NavigationClient.mjs +40 -40
  147. package/dist/navigation/NavigationOptions.d.ts +12 -12
  148. package/dist/network/FetchClient.d.ts +26 -26
  149. package/dist/network/FetchClient.mjs +99 -99
  150. package/dist/operatingcontext/BaseOperatingContext.d.ts +41 -41
  151. package/dist/operatingcontext/BaseOperatingContext.mjs +94 -94
  152. package/dist/operatingcontext/NestedAppOperatingContext.d.ts +34 -34
  153. package/dist/operatingcontext/NestedAppOperatingContext.mjs +71 -71
  154. package/dist/operatingcontext/StandardOperatingContext.d.ts +25 -25
  155. package/dist/operatingcontext/StandardOperatingContext.mjs +43 -43
  156. package/dist/operatingcontext/UnknownOperatingContext.d.ts +25 -25
  157. package/dist/operatingcontext/UnknownOperatingContext.mjs +42 -42
  158. package/dist/packageMetadata.d.ts +2 -2
  159. package/dist/packageMetadata.mjs +4 -4
  160. package/dist/request/AuthorizationCodeRequest.d.ts +8 -8
  161. package/dist/request/AuthorizationUrlRequest.d.ts +8 -8
  162. package/dist/request/ClearCacheRequest.d.ts +10 -10
  163. package/dist/request/EndSessionPopupRequest.d.ts +18 -18
  164. package/dist/request/EndSessionRequest.d.ts +15 -15
  165. package/dist/request/InitializeApplicationRequest.d.ts +8 -8
  166. package/dist/request/PopupRequest.d.ts +34 -34
  167. package/dist/request/PopupWindowAttributes.d.ts +15 -15
  168. package/dist/request/RedirectRequest.d.ts +40 -35
  169. package/dist/request/RedirectRequest.d.ts.map +1 -1
  170. package/dist/request/RequestHelpers.d.ts +13 -13
  171. package/dist/request/RequestHelpers.mjs +53 -53
  172. package/dist/request/SilentRequest.d.ts +33 -33
  173. package/dist/request/SsoSilentRequest.d.ts +29 -29
  174. package/dist/response/AuthenticationResult.d.ts +4 -4
  175. package/dist/response/ResponseHandler.d.ts +7 -7
  176. package/dist/response/ResponseHandler.mjs +36 -36
  177. package/dist/telemetry/BrowserPerformanceClient.d.ts +38 -34
  178. package/dist/telemetry/BrowserPerformanceClient.d.ts.map +1 -1
  179. package/dist/telemetry/BrowserPerformanceClient.mjs +163 -163
  180. package/dist/telemetry/BrowserPerformanceClient.mjs.map +1 -1
  181. package/dist/telemetry/BrowserPerformanceMeasurement.d.ts +21 -21
  182. package/dist/telemetry/BrowserPerformanceMeasurement.mjs +92 -92
  183. package/dist/utils/BrowserConstants.d.ts +182 -180
  184. package/dist/utils/BrowserConstants.d.ts.map +1 -1
  185. package/dist/utils/BrowserConstants.mjs +214 -212
  186. package/dist/utils/BrowserConstants.mjs.map +1 -1
  187. package/dist/utils/BrowserProtocolUtils.d.ts +11 -11
  188. package/dist/utils/BrowserProtocolUtils.mjs +21 -21
  189. package/dist/utils/BrowserUtils.d.ts +75 -75
  190. package/dist/utils/BrowserUtils.mjs +157 -157
  191. package/lib/msal-browser.cjs +19028 -18759
  192. package/lib/msal-browser.cjs.map +1 -1
  193. package/lib/msal-browser.js +19028 -18759
  194. package/lib/msal-browser.js.map +1 -1
  195. package/lib/msal-browser.min.js +65 -65
  196. package/package.json +2 -2
  197. package/src/cache/BrowserCacheManager.ts +95 -0
  198. package/src/config/Configuration.ts +9 -1
  199. package/src/controllers/StandardController.ts +30 -12
  200. package/src/error/BrowserAuthError.ts +2 -0
  201. package/src/error/BrowserAuthErrorCodes.ts +1 -0
  202. package/src/interaction_client/NativeInteractionClient.ts +105 -54
  203. package/src/interaction_client/PopupClient.ts +202 -117
  204. package/src/interaction_client/RedirectClient.ts +62 -2
  205. package/src/interaction_client/SilentIframeClient.ts +41 -3
  206. package/src/interaction_handler/RedirectHandler.ts +1 -0
  207. package/src/naa/BridgeProxy.ts +7 -2
  208. package/src/packageMetadata.ts +1 -1
  209. package/src/request/RedirectRequest.ts +5 -0
  210. package/src/telemetry/BrowserPerformanceClient.ts +1 -1
  211. package/src/utils/BrowserConstants.ts +2 -0
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-browser v3.19.1 2024-07-16 */
1
+ /*! @azure/msal-browser v3.21.0 2024-08-13 */
2
2
  'use strict';
3
3
  import { PerformanceEvents, invokeAsync, Constants, UrlString, AuthorizationCodeClient, ProtocolUtils } from '@azure/msal-common';
4
4
  import { BaseInteractionClient } from './BaseInteractionClient.mjs';
@@ -9,204 +9,204 @@ import { generatePkceCodes } from '../crypto/PkceGenerator.mjs';
9
9
  import { createNewGuid } from '../crypto/BrowserCrypto.mjs';
10
10
  import { initializeBaseRequest } from '../request/RequestHelpers.mjs';
11
11
 
12
- /*
13
- * Copyright (c) Microsoft Corporation. All rights reserved.
14
- * Licensed under the MIT License.
15
- */
16
- /**
17
- * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
18
- */
19
- class StandardInteractionClient extends BaseInteractionClient {
20
- /**
21
- * Generates an auth code request tied to the url request.
22
- * @param request
23
- */
24
- async initializeAuthorizationCodeRequest(request) {
25
- this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.correlationId);
26
- const generatedPkceParams = await invokeAsync(generatePkceCodes, PerformanceEvents.GeneratePkceCodes, this.logger, this.performanceClient, this.correlationId)(this.performanceClient, this.logger, this.correlationId);
27
- const authCodeRequest = {
28
- ...request,
29
- redirectUri: request.redirectUri,
30
- code: Constants.EMPTY_STRING,
31
- codeVerifier: generatedPkceParams.verifier,
32
- };
33
- request.codeChallenge = generatedPkceParams.challenge;
34
- request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;
35
- return authCodeRequest;
36
- }
37
- /**
38
- * Initializer for the logout request.
39
- * @param logoutRequest
40
- */
41
- initializeLogoutRequest(logoutRequest) {
42
- this.logger.verbose("initializeLogoutRequest called", logoutRequest?.correlationId);
43
- const validLogoutRequest = {
44
- correlationId: this.correlationId || createNewGuid(),
45
- ...logoutRequest,
46
- };
47
- /**
48
- * Set logout_hint to be login_hint from ID Token Claims if present
49
- * and logoutHint attribute wasn't manually set in logout request
50
- */
51
- if (logoutRequest) {
52
- // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims
53
- if (!logoutRequest.logoutHint) {
54
- if (logoutRequest.account) {
55
- const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);
56
- if (logoutHint) {
57
- this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided");
58
- validLogoutRequest.logoutHint = logoutHint;
59
- }
60
- }
61
- else {
62
- this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set");
63
- }
64
- }
65
- else {
66
- this.logger.verbose("logoutHint has already been set in logoutRequest");
67
- }
68
- }
69
- else {
70
- this.logger.verbose("logoutHint will not be set since no logout request was configured");
71
- }
72
- /*
73
- * Only set redirect uri if logout request isn't provided or the set uri isn't null.
74
- * Otherwise, use passed uri, config, or current page.
75
- */
76
- if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {
77
- if (logoutRequest && logoutRequest.postLogoutRedirectUri) {
78
- this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId);
79
- validLogoutRequest.postLogoutRedirectUri =
80
- UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, getCurrentUri());
81
- }
82
- else if (this.config.auth.postLogoutRedirectUri === null) {
83
- this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId);
84
- }
85
- else if (this.config.auth.postLogoutRedirectUri) {
86
- this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId);
87
- validLogoutRequest.postLogoutRedirectUri =
88
- UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, getCurrentUri());
89
- }
90
- else {
91
- this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId);
92
- validLogoutRequest.postLogoutRedirectUri =
93
- UrlString.getAbsoluteUrl(getCurrentUri(), getCurrentUri());
94
- }
95
- }
96
- else {
97
- this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId);
98
- }
99
- return validLogoutRequest;
100
- }
101
- /**
102
- * Parses login_hint ID Token Claim out of AccountInfo object to be used as
103
- * logout_hint in end session request.
104
- * @param account
105
- */
106
- getLogoutHintFromIdTokenClaims(account) {
107
- const idTokenClaims = account.idTokenClaims;
108
- if (idTokenClaims) {
109
- if (idTokenClaims.login_hint) {
110
- return idTokenClaims.login_hint;
111
- }
112
- else {
113
- this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request");
114
- }
115
- }
116
- else {
117
- this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request");
118
- }
119
- return null;
120
- }
121
- /**
122
- * Creates an Authorization Code Client with the given authority, or the default authority.
123
- * @param serverTelemetryManager
124
- * @param authorityUrl
125
- */
126
- async createAuthCodeClient(serverTelemetryManager, authorityUrl, requestAzureCloudOptions, account) {
127
- this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);
128
- // Create auth module.
129
- const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)(serverTelemetryManager, authorityUrl, requestAzureCloudOptions, account);
130
- return new AuthorizationCodeClient(clientConfig, this.performanceClient);
131
- }
132
- /**
133
- * Creates a Client Configuration object with the given request authority, or the default authority.
134
- * @param serverTelemetryManager
135
- * @param requestAuthority
136
- * @param requestCorrelationId
137
- */
138
- async getClientConfiguration(serverTelemetryManager, requestAuthority, requestAzureCloudOptions, account) {
139
- this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);
140
- const discoveredAuthority = await invokeAsync(this.getDiscoveredAuthority.bind(this), PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.logger, this.performanceClient, this.correlationId)(requestAuthority, requestAzureCloudOptions, account);
141
- const logger = this.config.system.loggerOptions;
142
- return {
143
- authOptions: {
144
- clientId: this.config.auth.clientId,
145
- authority: discoveredAuthority,
146
- clientCapabilities: this.config.auth.clientCapabilities,
147
- },
148
- systemOptions: {
149
- tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,
150
- preventCorsPreflight: true,
151
- },
152
- loggerOptions: {
153
- loggerCallback: logger.loggerCallback,
154
- piiLoggingEnabled: logger.piiLoggingEnabled,
155
- logLevel: logger.logLevel,
156
- correlationId: this.correlationId,
157
- },
158
- cacheOptions: {
159
- claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled,
160
- },
161
- cryptoInterface: this.browserCrypto,
162
- networkInterface: this.networkClient,
163
- storageInterface: this.browserStorage,
164
- serverTelemetryManager: serverTelemetryManager,
165
- libraryInfo: {
166
- sku: BrowserConstants.MSAL_SKU,
167
- version: version,
168
- cpu: Constants.EMPTY_STRING,
169
- os: Constants.EMPTY_STRING,
170
- },
171
- telemetry: this.config.telemetry,
172
- };
173
- }
174
- /**
175
- * Helper to initialize required request parameters for interactive APIs and ssoSilent()
176
- * @param request
177
- * @param interactionType
178
- */
179
- async initializeAuthorizationRequest(request, interactionType) {
180
- this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);
181
- const redirectUri = this.getRedirectUri(request.redirectUri);
182
- const browserState = {
183
- interactionType: interactionType,
184
- };
185
- const state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);
186
- const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, this.correlationId)({ ...request, correlationId: this.correlationId }, this.config, this.performanceClient, this.logger);
187
- const validatedRequest = {
188
- ...baseRequest,
189
- redirectUri: redirectUri,
190
- state: state,
191
- nonce: request.nonce || createNewGuid(),
192
- responseMode: this.config.auth.OIDCOptions
193
- .serverResponseType,
194
- };
195
- const account = request.account || this.browserStorage.getActiveAccount();
196
- if (account) {
197
- this.logger.verbose("Setting validated request account", this.correlationId);
198
- this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);
199
- validatedRequest.account = account;
200
- }
201
- // Check for ADAL/MSAL v1 SSO
202
- if (!validatedRequest.loginHint && !account) {
203
- const legacyLoginHint = this.browserStorage.getLegacyLoginHint();
204
- if (legacyLoginHint) {
205
- validatedRequest.loginHint = legacyLoginHint;
206
- }
207
- }
208
- return validatedRequest;
209
- }
12
+ /*
13
+ * Copyright (c) Microsoft Corporation. All rights reserved.
14
+ * Licensed under the MIT License.
15
+ */
16
+ /**
17
+ * Defines the class structure and helper functions used by the "standard", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))
18
+ */
19
+ class StandardInteractionClient extends BaseInteractionClient {
20
+ /**
21
+ * Generates an auth code request tied to the url request.
22
+ * @param request
23
+ */
24
+ async initializeAuthorizationCodeRequest(request) {
25
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest, this.correlationId);
26
+ const generatedPkceParams = await invokeAsync(generatePkceCodes, PerformanceEvents.GeneratePkceCodes, this.logger, this.performanceClient, this.correlationId)(this.performanceClient, this.logger, this.correlationId);
27
+ const authCodeRequest = {
28
+ ...request,
29
+ redirectUri: request.redirectUri,
30
+ code: Constants.EMPTY_STRING,
31
+ codeVerifier: generatedPkceParams.verifier,
32
+ };
33
+ request.codeChallenge = generatedPkceParams.challenge;
34
+ request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;
35
+ return authCodeRequest;
36
+ }
37
+ /**
38
+ * Initializer for the logout request.
39
+ * @param logoutRequest
40
+ */
41
+ initializeLogoutRequest(logoutRequest) {
42
+ this.logger.verbose("initializeLogoutRequest called", logoutRequest?.correlationId);
43
+ const validLogoutRequest = {
44
+ correlationId: this.correlationId || createNewGuid(),
45
+ ...logoutRequest,
46
+ };
47
+ /**
48
+ * Set logout_hint to be login_hint from ID Token Claims if present
49
+ * and logoutHint attribute wasn't manually set in logout request
50
+ */
51
+ if (logoutRequest) {
52
+ // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims
53
+ if (!logoutRequest.logoutHint) {
54
+ if (logoutRequest.account) {
55
+ const logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);
56
+ if (logoutHint) {
57
+ this.logger.verbose("Setting logoutHint to login_hint ID Token Claim value for the account provided");
58
+ validLogoutRequest.logoutHint = logoutHint;
59
+ }
60
+ }
61
+ else {
62
+ this.logger.verbose("logoutHint was not set and account was not passed into logout request, logoutHint will not be set");
63
+ }
64
+ }
65
+ else {
66
+ this.logger.verbose("logoutHint has already been set in logoutRequest");
67
+ }
68
+ }
69
+ else {
70
+ this.logger.verbose("logoutHint will not be set since no logout request was configured");
71
+ }
72
+ /*
73
+ * Only set redirect uri if logout request isn't provided or the set uri isn't null.
74
+ * Otherwise, use passed uri, config, or current page.
75
+ */
76
+ if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {
77
+ if (logoutRequest && logoutRequest.postLogoutRedirectUri) {
78
+ this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request", validLogoutRequest.correlationId);
79
+ validLogoutRequest.postLogoutRedirectUri =
80
+ UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, getCurrentUri());
81
+ }
82
+ else if (this.config.auth.postLogoutRedirectUri === null) {
83
+ this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect", validLogoutRequest.correlationId);
84
+ }
85
+ else if (this.config.auth.postLogoutRedirectUri) {
86
+ this.logger.verbose("Setting postLogoutRedirectUri to configured uri", validLogoutRequest.correlationId);
87
+ validLogoutRequest.postLogoutRedirectUri =
88
+ UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, getCurrentUri());
89
+ }
90
+ else {
91
+ this.logger.verbose("Setting postLogoutRedirectUri to current page", validLogoutRequest.correlationId);
92
+ validLogoutRequest.postLogoutRedirectUri =
93
+ UrlString.getAbsoluteUrl(getCurrentUri(), getCurrentUri());
94
+ }
95
+ }
96
+ else {
97
+ this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri", validLogoutRequest.correlationId);
98
+ }
99
+ return validLogoutRequest;
100
+ }
101
+ /**
102
+ * Parses login_hint ID Token Claim out of AccountInfo object to be used as
103
+ * logout_hint in end session request.
104
+ * @param account
105
+ */
106
+ getLogoutHintFromIdTokenClaims(account) {
107
+ const idTokenClaims = account.idTokenClaims;
108
+ if (idTokenClaims) {
109
+ if (idTokenClaims.login_hint) {
110
+ return idTokenClaims.login_hint;
111
+ }
112
+ else {
113
+ this.logger.verbose("The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request");
114
+ }
115
+ }
116
+ else {
117
+ this.logger.verbose("The provided account does not contain ID Token Claims, logoutHint will not be added to logout request");
118
+ }
119
+ return null;
120
+ }
121
+ /**
122
+ * Creates an Authorization Code Client with the given authority, or the default authority.
123
+ * @param serverTelemetryManager
124
+ * @param authorityUrl
125
+ */
126
+ async createAuthCodeClient(serverTelemetryManager, authorityUrl, requestAzureCloudOptions, account) {
127
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientCreateAuthCodeClient, this.correlationId);
128
+ // Create auth module.
129
+ const clientConfig = await invokeAsync(this.getClientConfiguration.bind(this), PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.logger, this.performanceClient, this.correlationId)(serverTelemetryManager, authorityUrl, requestAzureCloudOptions, account);
130
+ return new AuthorizationCodeClient(clientConfig, this.performanceClient);
131
+ }
132
+ /**
133
+ * Creates a Client Configuration object with the given request authority, or the default authority.
134
+ * @param serverTelemetryManager
135
+ * @param requestAuthority
136
+ * @param requestCorrelationId
137
+ */
138
+ async getClientConfiguration(serverTelemetryManager, requestAuthority, requestAzureCloudOptions, account) {
139
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientGetClientConfiguration, this.correlationId);
140
+ const discoveredAuthority = await invokeAsync(this.getDiscoveredAuthority.bind(this), PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.logger, this.performanceClient, this.correlationId)(requestAuthority, requestAzureCloudOptions, account);
141
+ const logger = this.config.system.loggerOptions;
142
+ return {
143
+ authOptions: {
144
+ clientId: this.config.auth.clientId,
145
+ authority: discoveredAuthority,
146
+ clientCapabilities: this.config.auth.clientCapabilities,
147
+ },
148
+ systemOptions: {
149
+ tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,
150
+ preventCorsPreflight: true,
151
+ },
152
+ loggerOptions: {
153
+ loggerCallback: logger.loggerCallback,
154
+ piiLoggingEnabled: logger.piiLoggingEnabled,
155
+ logLevel: logger.logLevel,
156
+ correlationId: this.correlationId,
157
+ },
158
+ cacheOptions: {
159
+ claimsBasedCachingEnabled: this.config.cache.claimsBasedCachingEnabled,
160
+ },
161
+ cryptoInterface: this.browserCrypto,
162
+ networkInterface: this.networkClient,
163
+ storageInterface: this.browserStorage,
164
+ serverTelemetryManager: serverTelemetryManager,
165
+ libraryInfo: {
166
+ sku: BrowserConstants.MSAL_SKU,
167
+ version: version,
168
+ cpu: Constants.EMPTY_STRING,
169
+ os: Constants.EMPTY_STRING,
170
+ },
171
+ telemetry: this.config.telemetry,
172
+ };
173
+ }
174
+ /**
175
+ * Helper to initialize required request parameters for interactive APIs and ssoSilent()
176
+ * @param request
177
+ * @param interactionType
178
+ */
179
+ async initializeAuthorizationRequest(request, interactionType) {
180
+ this.performanceClient.addQueueMeasurement(PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest, this.correlationId);
181
+ const redirectUri = this.getRedirectUri(request.redirectUri);
182
+ const browserState = {
183
+ interactionType: interactionType,
184
+ };
185
+ const state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);
186
+ const baseRequest = await invokeAsync(initializeBaseRequest, PerformanceEvents.InitializeBaseRequest, this.logger, this.performanceClient, this.correlationId)({ ...request, correlationId: this.correlationId }, this.config, this.performanceClient, this.logger);
187
+ const validatedRequest = {
188
+ ...baseRequest,
189
+ redirectUri: redirectUri,
190
+ state: state,
191
+ nonce: request.nonce || createNewGuid(),
192
+ responseMode: this.config.auth.OIDCOptions
193
+ .serverResponseType,
194
+ };
195
+ const account = request.account || this.browserStorage.getActiveAccount();
196
+ if (account) {
197
+ this.logger.verbose("Setting validated request account", this.correlationId);
198
+ this.logger.verbosePii(`Setting validated request account: ${account.homeAccountId}`, this.correlationId);
199
+ validatedRequest.account = account;
200
+ }
201
+ // Check for ADAL/MSAL v1 SSO
202
+ if (!validatedRequest.loginHint && !account) {
203
+ const legacyLoginHint = this.browserStorage.getLegacyLoginHint();
204
+ if (legacyLoginHint) {
205
+ validatedRequest.loginHint = legacyLoginHint;
206
+ }
207
+ }
208
+ return validatedRequest;
209
+ }
210
210
  }
211
211
 
212
212
  export { StandardInteractionClient };
@@ -1,34 +1,34 @@
1
- import { AuthorizationCodePayload, CommonAuthorizationCodeRequest, AuthorizationCodeClient, CcsCredential, Logger, IPerformanceClient, ServerAuthorizationCodeResponse } from "@azure/msal-common";
2
- import { BrowserCacheManager } from "../cache/BrowserCacheManager";
3
- import { AuthenticationResult } from "../response/AuthenticationResult";
4
- import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
5
- /**
6
- * Abstract class which defines operations for a browser interaction handling class.
7
- */
8
- export declare class InteractionHandler {
9
- protected authModule: AuthorizationCodeClient;
10
- protected browserStorage: BrowserCacheManager;
11
- protected authCodeRequest: CommonAuthorizationCodeRequest;
12
- protected logger: Logger;
13
- protected performanceClient: IPerformanceClient;
14
- constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient);
15
- /**
16
- * Function to handle response parameters from hash.
17
- * @param locationHash
18
- */
19
- handleCodeResponse(response: ServerAuthorizationCodeResponse, request: AuthorizationUrlRequest): Promise<AuthenticationResult>;
20
- /**
21
- * Process auth code response from AAD
22
- * @param authCodeResponse
23
- * @param state
24
- * @param authority
25
- * @param networkModule
26
- * @returns
27
- */
28
- handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, request: AuthorizationUrlRequest, validateNonce?: boolean): Promise<AuthenticationResult>;
29
- /**
30
- * Build ccs creds if available
31
- */
32
- protected createCcsCredentials(request: AuthorizationUrlRequest): CcsCredential | null;
33
- }
1
+ import { AuthorizationCodePayload, CommonAuthorizationCodeRequest, AuthorizationCodeClient, CcsCredential, Logger, IPerformanceClient, ServerAuthorizationCodeResponse } from "@azure/msal-common";
2
+ import { BrowserCacheManager } from "../cache/BrowserCacheManager";
3
+ import { AuthenticationResult } from "../response/AuthenticationResult";
4
+ import { AuthorizationUrlRequest } from "../request/AuthorizationUrlRequest";
5
+ /**
6
+ * Abstract class which defines operations for a browser interaction handling class.
7
+ */
8
+ export declare class InteractionHandler {
9
+ protected authModule: AuthorizationCodeClient;
10
+ protected browserStorage: BrowserCacheManager;
11
+ protected authCodeRequest: CommonAuthorizationCodeRequest;
12
+ protected logger: Logger;
13
+ protected performanceClient: IPerformanceClient;
14
+ constructor(authCodeModule: AuthorizationCodeClient, storageImpl: BrowserCacheManager, authCodeRequest: CommonAuthorizationCodeRequest, logger: Logger, performanceClient: IPerformanceClient);
15
+ /**
16
+ * Function to handle response parameters from hash.
17
+ * @param locationHash
18
+ */
19
+ handleCodeResponse(response: ServerAuthorizationCodeResponse, request: AuthorizationUrlRequest): Promise<AuthenticationResult>;
20
+ /**
21
+ * Process auth code response from AAD
22
+ * @param authCodeResponse
23
+ * @param state
24
+ * @param authority
25
+ * @param networkModule
26
+ * @returns
27
+ */
28
+ handleCodeResponseFromServer(authCodeResponse: AuthorizationCodePayload, request: AuthorizationUrlRequest, validateNonce?: boolean): Promise<AuthenticationResult>;
29
+ /**
30
+ * Build ccs creds if available
31
+ */
32
+ protected createCcsCredentials(request: AuthorizationUrlRequest): CcsCredential | null;
33
+ }
34
34
  //# sourceMappingURL=InteractionHandler.d.ts.map