@azure/msal-common 14.3.0 → 14.4.1-beta.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 (246) hide show
  1. package/dist/account/AccountInfo.d.ts +31 -31
  2. package/dist/account/AuthToken.d.ts +17 -17
  3. package/dist/account/AuthToken.mjs +58 -58
  4. package/dist/account/CcsCredential.d.ts +9 -9
  5. package/dist/account/CcsCredential.mjs +8 -8
  6. package/dist/account/ClientCredentials.d.ts +14 -14
  7. package/dist/account/ClientInfo.d.ts +19 -19
  8. package/dist/account/ClientInfo.mjs +37 -37
  9. package/dist/account/TokenClaims.d.ts +65 -65
  10. package/dist/authority/Authority.d.ts +249 -249
  11. package/dist/authority/Authority.d.ts.map +1 -1
  12. package/dist/authority/Authority.mjs +788 -789
  13. package/dist/authority/Authority.mjs.map +1 -1
  14. package/dist/authority/AuthorityFactory.d.ts +31 -31
  15. package/dist/authority/AuthorityFactory.mjs +47 -47
  16. package/dist/authority/AuthorityMetadata.d.ts +503 -503
  17. package/dist/authority/AuthorityMetadata.mjs +603 -603
  18. package/dist/authority/AuthorityOptions.d.ts +27 -27
  19. package/dist/authority/AuthorityOptions.mjs +18 -18
  20. package/dist/authority/AuthorityType.d.ts +10 -10
  21. package/dist/authority/AuthorityType.mjs +13 -13
  22. package/dist/authority/AzureRegion.d.ts +1 -1
  23. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  24. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  25. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  26. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  27. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  28. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  29. package/dist/authority/ImdsOptions.d.ts +5 -5
  30. package/dist/authority/OIDCOptions.d.ts +8 -8
  31. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  32. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  33. package/dist/authority/ProtocolMode.d.ts +8 -8
  34. package/dist/authority/ProtocolMode.mjs +11 -11
  35. package/dist/authority/RegionDiscovery.d.ts +32 -32
  36. package/dist/authority/RegionDiscovery.mjs +106 -106
  37. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  38. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  39. package/dist/cache/CacheManager.d.ts +485 -480
  40. package/dist/cache/CacheManager.d.ts.map +1 -1
  41. package/dist/cache/CacheManager.mjs +1102 -1089
  42. package/dist/cache/CacheManager.mjs.map +1 -1
  43. package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
  44. package/dist/cache/entities/AccountEntity.d.ts +101 -101
  45. package/dist/cache/entities/AccountEntity.mjs +218 -218
  46. package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
  47. package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
  48. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
  49. package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
  50. package/dist/cache/entities/CacheRecord.d.ts +14 -14
  51. package/dist/cache/entities/CacheRecord.mjs +14 -14
  52. package/dist/cache/entities/CredentialEntity.d.ts +30 -30
  53. package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
  54. package/dist/cache/entities/RefreshTokenEntity.d.ts +7 -5
  55. package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
  56. package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -12
  57. package/dist/cache/entities/ServerTelemetryEntity.d.ts.map +1 -1
  58. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  59. package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
  60. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  61. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  62. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  63. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  64. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  65. package/dist/cache/utils/CacheHelpers.d.ts +64 -58
  66. package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
  67. package/dist/cache/utils/CacheHelpers.mjs +236 -217
  68. package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
  69. package/dist/cache/utils/CacheTypes.d.ts +67 -67
  70. package/dist/client/AuthorizationCodeClient.d.ts +74 -73
  71. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  72. package/dist/client/AuthorizationCodeClient.mjs +402 -408
  73. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  74. package/dist/client/BaseClient.d.ts +51 -51
  75. package/dist/client/BaseClient.mjs +100 -100
  76. package/dist/client/RefreshTokenClient.d.ts +35 -35
  77. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  78. package/dist/client/RefreshTokenClient.mjs +193 -187
  79. package/dist/client/RefreshTokenClient.mjs.map +1 -1
  80. package/dist/client/SilentFlowClient.d.ts +27 -27
  81. package/dist/client/SilentFlowClient.d.ts.map +1 -1
  82. package/dist/client/SilentFlowClient.mjs +118 -116
  83. package/dist/client/SilentFlowClient.mjs.map +1 -1
  84. package/dist/config/AppTokenProvider.d.ts +38 -38
  85. package/dist/config/ClientConfiguration.d.ts +150 -150
  86. package/dist/config/ClientConfiguration.mjs +97 -97
  87. package/dist/crypto/ICrypto.d.ts +58 -58
  88. package/dist/crypto/ICrypto.d.ts.map +1 -1
  89. package/dist/crypto/ICrypto.mjs +30 -30
  90. package/dist/crypto/ICrypto.mjs.map +1 -1
  91. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  92. package/dist/crypto/JoseHeader.d.ts +22 -22
  93. package/dist/crypto/JoseHeader.d.ts.map +1 -1
  94. package/dist/crypto/JoseHeader.mjs +38 -38
  95. package/dist/crypto/JoseHeader.mjs.map +1 -1
  96. package/dist/crypto/PopTokenGenerator.d.ts +60 -60
  97. package/dist/crypto/PopTokenGenerator.d.ts.map +1 -1
  98. package/dist/crypto/PopTokenGenerator.mjs +82 -82
  99. package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
  100. package/dist/crypto/SignedHttpRequest.d.ts +15 -11
  101. package/dist/crypto/SignedHttpRequest.d.ts.map +1 -1
  102. package/dist/error/AuthError.d.ts +44 -44
  103. package/dist/error/AuthError.mjs +46 -46
  104. package/dist/error/AuthErrorCodes.d.ts +5 -5
  105. package/dist/error/AuthErrorCodes.mjs +9 -9
  106. package/dist/error/ClientAuthError.d.ts +237 -237
  107. package/dist/error/ClientAuthError.mjs +249 -249
  108. package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
  109. package/dist/error/ClientAuthErrorCodes.mjs +48 -48
  110. package/dist/error/ClientConfigurationError.d.ts +128 -128
  111. package/dist/error/ClientConfigurationError.mjs +135 -135
  112. package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
  113. package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
  114. package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
  115. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  116. package/dist/error/InteractionRequiredAuthError.mjs +78 -77
  117. package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
  118. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +6 -5
  119. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
  120. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +13 -12
  121. package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
  122. package/dist/error/JoseHeaderError.d.ts +15 -15
  123. package/dist/error/JoseHeaderError.mjs +22 -22
  124. package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
  125. package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
  126. package/dist/error/ServerError.d.ts +7 -7
  127. package/dist/error/ServerError.mjs +14 -14
  128. package/dist/index.cjs +8300 -8350
  129. package/dist/index.cjs.map +1 -1
  130. package/dist/index.d.ts +98 -97
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.mjs +4 -3
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/logger/Logger.d.ts +95 -95
  135. package/dist/logger/Logger.mjs +188 -188
  136. package/dist/network/INetworkModule.d.ts +29 -29
  137. package/dist/network/INetworkModule.mjs +12 -12
  138. package/dist/network/NetworkManager.d.ts +33 -33
  139. package/dist/network/NetworkManager.mjs +34 -34
  140. package/dist/network/RequestThumbprint.d.ts +18 -16
  141. package/dist/network/RequestThumbprint.d.ts.map +1 -1
  142. package/dist/network/ThrottlingUtils.d.ts +42 -42
  143. package/dist/network/ThrottlingUtils.mjs +95 -95
  144. package/dist/packageMetadata.d.ts +2 -2
  145. package/dist/packageMetadata.mjs +4 -4
  146. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  147. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  148. package/dist/request/BaseAuthRequest.d.ts +43 -40
  149. package/dist/request/BaseAuthRequest.d.ts.map +1 -1
  150. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  151. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  152. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  153. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  154. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  155. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  156. package/dist/request/CommonRefreshTokenRequest.d.ts +23 -22
  157. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  158. package/dist/request/CommonSilentFlowRequest.d.ts +21 -20
  159. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  160. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  161. package/dist/request/NativeRequest.d.ts +19 -19
  162. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  163. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  164. package/dist/request/RequestParameterBuilder.mjs +381 -381
  165. package/dist/request/RequestValidator.d.ts +33 -33
  166. package/dist/request/RequestValidator.mjs +81 -81
  167. package/dist/request/ScopeSet.d.ts +88 -88
  168. package/dist/request/ScopeSet.mjs +197 -197
  169. package/dist/request/StoreInCache.d.ts +8 -8
  170. package/dist/response/AuthenticationResult.d.ts +41 -41
  171. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  172. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  173. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  174. package/dist/response/IMDSBadResponse.d.ts +4 -4
  175. package/dist/response/ResponseHandler.d.ts +67 -67
  176. package/dist/response/ResponseHandler.d.ts.map +1 -1
  177. package/dist/response/ResponseHandler.mjs +312 -312
  178. package/dist/response/ResponseHandler.mjs.map +1 -1
  179. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  180. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
  181. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  182. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  183. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  184. package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
  185. package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -457
  186. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  187. package/dist/telemetry/performance/PerformanceEvent.mjs +253 -249
  188. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  189. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  190. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  191. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  192. package/dist/telemetry/server/ServerTelemetryManager.d.ts.map +1 -1
  193. package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -198
  194. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  195. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  196. package/dist/url/IUri.d.ts +12 -12
  197. package/dist/url/UrlString.d.ts +48 -83
  198. package/dist/url/UrlString.d.ts.map +1 -1
  199. package/dist/url/UrlString.mjs +163 -282
  200. package/dist/url/UrlString.mjs.map +1 -1
  201. package/dist/utils/Constants.d.ts +365 -366
  202. package/dist/utils/Constants.d.ts.map +1 -1
  203. package/dist/utils/Constants.mjs +376 -377
  204. package/dist/utils/Constants.mjs.map +1 -1
  205. package/dist/utils/FunctionWrappers.d.ts +27 -27
  206. package/dist/utils/FunctionWrappers.mjs +84 -84
  207. package/dist/utils/MsalTypes.d.ts +6 -6
  208. package/dist/utils/ProtocolUtils.d.ts +42 -42
  209. package/dist/utils/ProtocolUtils.mjs +69 -69
  210. package/dist/utils/StringUtils.d.ts +40 -40
  211. package/dist/utils/StringUtils.mjs +95 -95
  212. package/dist/utils/TimeUtils.d.ts +27 -27
  213. package/dist/utils/TimeUtils.mjs +45 -45
  214. package/dist/utils/UrlUtils.d.ts +11 -0
  215. package/dist/utils/UrlUtils.d.ts.map +1 -0
  216. package/dist/utils/UrlUtils.mjs +52 -0
  217. package/dist/utils/UrlUtils.mjs.map +1 -0
  218. package/package.json +92 -92
  219. package/src/authority/Authority.ts +2 -3
  220. package/src/cache/CacheManager.ts +63 -22
  221. package/src/cache/entities/RefreshTokenEntity.ts +3 -1
  222. package/src/cache/entities/ServerTelemetryEntity.ts +2 -30
  223. package/src/cache/utils/CacheHelpers.ts +27 -1
  224. package/src/client/AuthorizationCodeClient.ts +5 -14
  225. package/src/client/RefreshTokenClient.ts +20 -2
  226. package/src/client/SilentFlowClient.ts +8 -4
  227. package/src/crypto/ICrypto.ts +7 -2
  228. package/src/crypto/JoseHeader.ts +4 -4
  229. package/src/crypto/PopTokenGenerator.ts +2 -0
  230. package/src/crypto/SignedHttpRequest.ts +6 -0
  231. package/src/error/InteractionRequiredAuthError.ts +2 -0
  232. package/src/error/InteractionRequiredAuthErrorCodes.ts +1 -0
  233. package/src/index.ts +3 -1
  234. package/src/network/RequestThumbprint.ts +2 -0
  235. package/src/packageMetadata.ts +1 -1
  236. package/src/request/BaseAuthRequest.ts +3 -0
  237. package/src/request/CommonRefreshTokenRequest.ts +1 -0
  238. package/src/request/CommonSilentFlowRequest.ts +1 -0
  239. package/src/response/ResponseHandler.ts +8 -4
  240. package/src/telemetry/performance/PerformanceEvent.ts +12 -1
  241. package/src/telemetry/server/ServerTelemetryManager.ts +12 -6
  242. package/src/url/UrlString.ts +6 -153
  243. package/src/utils/Constants.ts +3 -3
  244. package/src/utils/UrlUtils.ts +60 -0
  245. package/dist/cache/entities/ServerTelemetryEntity.mjs +0 -34
  246. package/dist/cache/entities/ServerTelemetryEntity.mjs.map +0 -1
@@ -160,7 +160,11 @@ export class ServerTelemetryManager {
160
160
  * Get the server telemetry entity from cache or initialize a new one
161
161
  */
162
162
  getLastRequests(): ServerTelemetryEntity {
163
- const initialValue: ServerTelemetryEntity = new ServerTelemetryEntity();
163
+ const initialValue: ServerTelemetryEntity = {
164
+ failedRequests: [],
165
+ errors: [],
166
+ cacheHits: 0,
167
+ };
164
168
  const lastRequests = this.cacheManager.getServerTelemetry(
165
169
  this.telemetryCacheKey
166
170
  ) as ServerTelemetryEntity;
@@ -181,11 +185,13 @@ export class ServerTelemetryManager {
181
185
  this.cacheManager.removeItem(this.telemetryCacheKey);
182
186
  } else {
183
187
  // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed
184
- const serverTelemEntity = new ServerTelemetryEntity();
185
- serverTelemEntity.failedRequests =
186
- lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error
187
- serverTelemEntity.errors =
188
- lastRequests.errors.slice(numErrorsFlushed);
188
+ const serverTelemEntity: ServerTelemetryEntity = {
189
+ failedRequests: lastRequests.failedRequests.slice(
190
+ numErrorsFlushed * 2
191
+ ), // failedRequests contains 2 items for each error
192
+ errors: lastRequests.errors.slice(numErrorsFlushed),
193
+ cacheHits: 0,
194
+ };
189
195
 
190
196
  this.cacheManager.setServerTelemetry(
191
197
  this.telemetryCacheKey,
@@ -3,22 +3,14 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse";
7
6
  import {
8
7
  createClientConfigurationError,
9
8
  ClientConfigurationErrorCodes,
10
9
  } from "../error/ClientConfigurationError";
11
- import {
12
- ClientAuthErrorCodes,
13
- createClientAuthError,
14
- } from "../error/ClientAuthError";
15
10
  import { StringUtils } from "../utils/StringUtils";
16
11
  import { IUri } from "./IUri";
17
- import {
18
- AADAuthorityConstants,
19
- Constants,
20
- ServerResponseType,
21
- } from "../utils/Constants";
12
+ import { AADAuthorityConstants, Constants } from "../utils/Constants";
13
+ import * as UrlUtils from "../utils/UrlUtils";
22
14
 
23
15
  /**
24
16
  * Url object class which can perform various transformations on url strings.
@@ -39,7 +31,7 @@ export class UrlString {
39
31
  );
40
32
  }
41
33
 
42
- if (!this.getHash()) {
34
+ if (!url.includes("#")) {
43
35
  this._urlString = UrlString.canonicalizeUri(url);
44
36
  }
45
37
  }
@@ -142,13 +134,6 @@ export class UrlString {
142
134
  return UrlString.constructAuthorityUriFromObject(urlObject);
143
135
  }
144
136
 
145
- /**
146
- * Returns the anchor part(#) of the URL
147
- */
148
- getHash(): string {
149
- return UrlString.parseHash(this.urlString);
150
- }
151
-
152
137
  /**
153
138
  * Parses out the components from a url string.
154
139
  * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.
@@ -221,58 +206,6 @@ export class UrlString {
221
206
  return relativeUrl;
222
207
  }
223
208
 
224
- /**
225
- * Parses hash string from given string. Returns empty string if no hash symbol is found.
226
- * @param hashString
227
- */
228
- static parseHash(hashString: string): string {
229
- const hashIndex1 = hashString.indexOf("#");
230
- const hashIndex2 = hashString.indexOf("#/");
231
- if (hashIndex2 > -1) {
232
- return hashString.substring(hashIndex2 + 2);
233
- } else if (hashIndex1 > -1) {
234
- return hashString.substring(hashIndex1 + 1);
235
- }
236
- return Constants.EMPTY_STRING;
237
- }
238
-
239
- /**
240
- * Parses query string from given string. Returns empty string if no query symbol is found.
241
- * @param queryString
242
- */
243
- static parseQueryString(queryString: string): string {
244
- const queryIndex1 = queryString.indexOf("?");
245
- const queryIndex2 = queryString.indexOf("/?");
246
- if (queryIndex2 > -1) {
247
- return queryString.substring(queryIndex2 + 2);
248
- } else if (queryIndex1 > -1) {
249
- return queryString.substring(queryIndex1 + 1);
250
- }
251
- return Constants.EMPTY_STRING;
252
- }
253
-
254
- /**
255
- * Parses query server response string from given string.
256
- * Extract hash between '?code=' and '#' if trailing '# is present.
257
- * Returns empty string if no query symbol is found.
258
- * @param queryString
259
- */
260
- static parseQueryServerResponse(queryString: string): string {
261
- const queryIndex1 = queryString.indexOf("?code");
262
- const queryIndex2 = queryString.indexOf("/?code");
263
- const hashIndex = queryString.indexOf("#");
264
- if (queryIndex2 > -1 && hashIndex > -1) {
265
- return queryString.substring(queryIndex2 + 2, hashIndex);
266
- } else if (queryIndex2 > -1) {
267
- return queryString.substring(queryIndex2 + 2);
268
- } else if (queryIndex1 > -1 && hashIndex > -1) {
269
- return queryString.substring(queryIndex1 + 1, hashIndex);
270
- } else if (queryIndex1 > -1) {
271
- return queryString.substring(queryIndex1 + 1);
272
- }
273
- return Constants.EMPTY_STRING;
274
- }
275
-
276
209
  static constructAuthorityUriFromObject(urlObject: IUri): UrlString {
277
210
  return new UrlString(
278
211
  urlObject.Protocol +
@@ -283,91 +216,11 @@ export class UrlString {
283
216
  );
284
217
  }
285
218
 
286
- /**
287
- * Returns URL hash as server auth code response object.
288
- */
289
- static getDeserializedHash(hash: string): ServerAuthorizationCodeResponse {
290
- // Check if given hash is empty
291
- if (!hash) {
292
- return {};
293
- }
294
- // Strip the # symbol if present
295
- const parsedHash = UrlString.parseHash(hash);
296
- // If # symbol was not present, above will return empty string, so give original hash value
297
- const deserializedHash: ServerAuthorizationCodeResponse =
298
- StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(
299
- parsedHash || hash
300
- );
301
- // Check if deserialization didn't work
302
- if (!deserializedHash) {
303
- throw createClientAuthError(
304
- ClientAuthErrorCodes.hashNotDeserialized
305
- );
306
- }
307
- return deserializedHash;
308
- }
309
-
310
- /**
311
- * Returns URL query string as server auth code response object.
312
- */
313
- static getDeserializedQueryString(
314
- query: string
315
- ): ServerAuthorizationCodeResponse {
316
- // Check if given query is empty
317
- if (!query) {
318
- return {};
319
- }
320
- // Strip the ? symbol if present
321
- const parsedQueryString = UrlString.parseQueryString(query);
322
- // If ? symbol was not present, above will return empty string, so give original query value
323
- const deserializedQueryString: ServerAuthorizationCodeResponse =
324
- StringUtils.queryStringToObject<ServerAuthorizationCodeResponse>(
325
- parsedQueryString || query
326
- );
327
- // Check if deserialization didn't work
328
- if (!deserializedQueryString) {
329
- throw createClientAuthError(
330
- ClientAuthErrorCodes.hashNotDeserialized
331
- );
332
- }
333
- return deserializedQueryString;
334
- }
335
- /**
336
- * Returns either deserialized query string or deserialized hash, depending on the serverResponseType
337
- * as a server auth code response object.
338
- */
339
- static getDeserializedCodeResponse(
340
- serverResponseType: ServerResponseType | undefined,
341
- hashFragment: string
342
- ): ServerAuthorizationCodeResponse {
343
- const hashUrlString = new UrlString(hashFragment);
344
- let serverParams: ServerAuthorizationCodeResponse;
345
- if (serverResponseType === ServerResponseType.QUERY) {
346
- serverParams = UrlString.getDeserializedQueryString(hashFragment);
347
- } else {
348
- serverParams = UrlString.getDeserializedHash(
349
- hashUrlString.getHash()
350
- );
351
- }
352
- return serverParams;
353
- }
354
-
355
219
  /**
356
220
  * Check if the hash of the URL string contains known properties
221
+ * @deprecated This API will be removed in a future version
357
222
  */
358
- static hashContainsKnownProperties(hash: string): boolean {
359
- if (!hash || hash.indexOf("=") < 0) {
360
- // Hash doesn't contain key/value pairs
361
- return false;
362
- }
363
-
364
- const parameters: ServerAuthorizationCodeResponse =
365
- UrlString.getDeserializedHash(hash);
366
- return !!(
367
- parameters.code ||
368
- parameters.error_description ||
369
- parameters.error ||
370
- parameters.state
371
- );
223
+ static hashContainsKnownProperties(response: string): boolean {
224
+ return !!UrlUtils.getDeserializedResponse(response);
372
225
  }
373
226
  }
@@ -51,7 +51,6 @@ export const Constants = {
51
51
  IMDS_TIMEOUT: 2000,
52
52
  AZURE_REGION_AUTO_DISCOVER_FLAG: "TryAutoDetect",
53
53
  REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: "login.microsoft.com",
54
- REGIONAL_AUTH_NON_MSI_QUERY_STRING: "allowestsrnonmsi=true",
55
54
  KNOWN_PUBLIC_CLOUDS: [
56
55
  "login.microsoftonline.com",
57
56
  "login.windows.net",
@@ -434,11 +433,12 @@ export const CacheOutcome = {
434
433
  } as const;
435
434
  export type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome];
436
435
 
437
- export const JsonTypes = {
436
+ export const JsonWebTokenTypes = {
438
437
  Jwt: "JWT",
439
438
  Jwk: "JWK",
440
439
  Pop: "pop",
441
440
  } as const;
442
- export type JsonTypes = (typeof JsonTypes)[keyof typeof JsonTypes];
441
+ export type JsonWebTokenTypes =
442
+ (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes];
443
443
 
444
444
  export const ONE_DAY_IN_MS = 86400000;
@@ -0,0 +1,60 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { ServerAuthorizationCodeResponse } from "../response/ServerAuthorizationCodeResponse";
7
+ import {
8
+ ClientAuthErrorCodes,
9
+ createClientAuthError,
10
+ } from "../error/ClientAuthError";
11
+
12
+ /**
13
+ * Parses hash string from given string. Returns empty string if no hash symbol is found.
14
+ * @param hashString
15
+ */
16
+ export function stripLeadingHashOrQuery(responseString: string): string {
17
+ if (responseString.startsWith("#/")) {
18
+ return responseString.substring(2);
19
+ } else if (
20
+ responseString.startsWith("#") ||
21
+ responseString.startsWith("?")
22
+ ) {
23
+ return responseString.substring(1);
24
+ }
25
+
26
+ return responseString;
27
+ }
28
+
29
+ /**
30
+ * Returns URL hash as server auth code response object.
31
+ */
32
+ export function getDeserializedResponse(
33
+ responseString: string
34
+ ): ServerAuthorizationCodeResponse | null {
35
+ // Check if given hash is empty
36
+ if (!responseString || responseString.indexOf("=") < 0) {
37
+ return null;
38
+ }
39
+ try {
40
+ // Strip the # or ? symbol if present
41
+ const normalizedResponse = stripLeadingHashOrQuery(responseString);
42
+ // If # symbol was not present, above will return empty string, so give original hash value
43
+ const deserializedHash: ServerAuthorizationCodeResponse =
44
+ Object.fromEntries(new URLSearchParams(normalizedResponse));
45
+
46
+ // Check for known response properties
47
+ if (
48
+ deserializedHash.code ||
49
+ deserializedHash.error ||
50
+ deserializedHash.error_description ||
51
+ deserializedHash.state
52
+ ) {
53
+ return deserializedHash;
54
+ }
55
+ } catch (e) {
56
+ throw createClientAuthError(ClientAuthErrorCodes.hashNotDeserialized);
57
+ }
58
+
59
+ return null;
60
+ }
@@ -1,34 +0,0 @@
1
- /*! @azure/msal-common v14.3.0 2023-10-30 */
2
- 'use strict';
3
- import { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.mjs';
4
-
5
- /*
6
- * Copyright (c) Microsoft Corporation. All rights reserved.
7
- * Licensed under the MIT License.
8
- */
9
- class ServerTelemetryEntity {
10
- constructor() {
11
- this.failedRequests = [];
12
- this.errors = [];
13
- this.cacheHits = 0;
14
- }
15
- /**
16
- * validates if a given cache entry is "Telemetry", parses <key,value>
17
- * @param key
18
- * @param entity
19
- */
20
- static isServerTelemetryEntity(key, entity) {
21
- const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;
22
- let validateEntity = true;
23
- if (entity) {
24
- validateEntity =
25
- entity.hasOwnProperty("failedRequests") &&
26
- entity.hasOwnProperty("errors") &&
27
- entity.hasOwnProperty("cacheHits");
28
- }
29
- return validateKey && validateEntity;
30
- }
31
- }
32
-
33
- export { ServerTelemetryEntity };
34
- //# sourceMappingURL=ServerTelemetryEntity.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ServerTelemetryEntity.mjs","sources":["../../../src/cache/entities/ServerTelemetryEntity.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAOA;AACI;;;AAUA,MAAA,qBAAA,CAAA;;;;AAIG,QAAA,IAAA,CAAA,SAAA,GAAA,CAAA,CAAA;AACH,KAAA;AAcH;;;;;;;;;;;;;;;;;;;;"}