@azure/msal-common 13.0.0 → 14.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 (333) hide show
  1. package/dist/account/AccountInfo.d.ts +31 -31
  2. package/dist/account/AccountInfo.d.ts.map +1 -1
  3. package/dist/account/AuthToken.d.ts +20 -20
  4. package/dist/account/AuthToken.d.ts.map +1 -1
  5. package/dist/account/AuthToken.js +49 -50
  6. package/dist/account/AuthToken.js.map +1 -1
  7. package/dist/account/CcsCredential.d.ts +8 -8
  8. package/dist/account/CcsCredential.d.ts.map +1 -1
  9. package/dist/account/CcsCredential.js +9 -9
  10. package/dist/account/CcsCredential.js.map +1 -1
  11. package/dist/account/ClientCredentials.d.ts +14 -14
  12. package/dist/account/ClientCredentials.d.ts.map +1 -1
  13. package/dist/account/ClientInfo.d.ts +19 -19
  14. package/dist/account/ClientInfo.d.ts.map +1 -1
  15. package/dist/account/ClientInfo.js +37 -35
  16. package/dist/account/ClientInfo.js.map +1 -1
  17. package/dist/account/DecodedAuthToken.d.ts +8 -8
  18. package/dist/account/DecodedAuthToken.d.ts.map +1 -1
  19. package/dist/account/TokenClaims.d.ts +65 -65
  20. package/dist/account/TokenClaims.d.ts.map +1 -1
  21. package/dist/authority/Authority.d.ts +228 -215
  22. package/dist/authority/Authority.d.ts.map +1 -1
  23. package/dist/authority/Authority.js +717 -765
  24. package/dist/authority/Authority.js.map +1 -1
  25. package/dist/authority/AuthorityFactory.d.ts +30 -30
  26. package/dist/authority/AuthorityFactory.d.ts.map +1 -1
  27. package/dist/authority/AuthorityFactory.js +48 -63
  28. package/dist/authority/AuthorityFactory.js.map +1 -1
  29. package/dist/authority/AuthorityMetadata.d.ts +622 -622
  30. package/dist/authority/AuthorityMetadata.d.ts.map +1 -1
  31. package/dist/authority/AuthorityMetadata.js +877 -8
  32. package/dist/authority/AuthorityMetadata.js.map +1 -1
  33. package/dist/authority/AuthorityOptions.d.ts +18 -18
  34. package/dist/authority/AuthorityOptions.d.ts.map +1 -1
  35. package/dist/authority/AuthorityOptions.js +19 -19
  36. package/dist/authority/AuthorityOptions.js.map +1 -1
  37. package/dist/authority/AuthorityType.d.ts +9 -9
  38. package/dist/authority/AuthorityType.js +14 -14
  39. package/dist/authority/AuthorityType.js.map +1 -1
  40. package/dist/authority/AzureRegion.d.ts +1 -1
  41. package/dist/authority/AzureRegion.d.ts.map +1 -1
  42. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  43. package/dist/authority/AzureRegionConfiguration.d.ts.map +1 -1
  44. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  45. package/dist/authority/CloudDiscoveryMetadata.d.ts.map +1 -1
  46. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  47. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts.map +1 -1
  48. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js +8 -8
  49. package/dist/authority/CloudInstanceDiscoveryErrorResponse.js.map +1 -1
  50. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  51. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts.map +1 -1
  52. package/dist/authority/CloudInstanceDiscoveryResponse.js +8 -8
  53. package/dist/authority/CloudInstanceDiscoveryResponse.js.map +1 -1
  54. package/dist/authority/ImdsOptions.d.ts +5 -5
  55. package/dist/authority/ImdsOptions.d.ts.map +1 -1
  56. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  57. package/dist/authority/OpenIdConfigResponse.d.ts.map +1 -1
  58. package/dist/authority/OpenIdConfigResponse.js +10 -10
  59. package/dist/authority/OpenIdConfigResponse.js.map +1 -1
  60. package/dist/authority/ProtocolMode.d.ts +7 -7
  61. package/dist/authority/ProtocolMode.js +12 -12
  62. package/dist/authority/ProtocolMode.js.map +1 -1
  63. package/dist/authority/RegionDiscovery.d.ts +30 -30
  64. package/dist/authority/RegionDiscovery.d.ts.map +1 -1
  65. package/dist/authority/RegionDiscovery.js +110 -132
  66. package/dist/authority/RegionDiscovery.js.map +1 -1
  67. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  68. package/dist/authority/RegionDiscoveryMetadata.d.ts.map +1 -1
  69. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  70. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts.map +1 -1
  71. package/dist/cache/CacheManager.d.ts +443 -443
  72. package/dist/cache/CacheManager.d.ts.map +1 -1
  73. package/dist/cache/CacheManager.js +1012 -1047
  74. package/dist/cache/CacheManager.js.map +1 -1
  75. package/dist/cache/entities/AccessTokenEntity.d.ts +56 -56
  76. package/dist/cache/entities/AccessTokenEntity.d.ts.map +1 -1
  77. package/dist/cache/entities/AccessTokenEntity.js +112 -113
  78. package/dist/cache/entities/AccessTokenEntity.js.map +1 -1
  79. package/dist/cache/entities/AccountEntity.d.ts +99 -99
  80. package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
  81. package/dist/cache/entities/AccountEntity.js +249 -237
  82. package/dist/cache/entities/AccountEntity.js.map +1 -1
  83. package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
  84. package/dist/cache/entities/AppMetadataEntity.d.ts.map +1 -1
  85. package/dist/cache/entities/AppMetadataEntity.js +67 -68
  86. package/dist/cache/entities/AppMetadataEntity.js.map +1 -1
  87. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +47 -47
  88. package/dist/cache/entities/AuthorityMetadataEntity.d.ts.map +1 -1
  89. package/dist/cache/entities/AuthorityMetadataEntity.js +78 -75
  90. package/dist/cache/entities/AuthorityMetadataEntity.js.map +1 -1
  91. package/dist/cache/entities/CacheRecord.d.ts +13 -13
  92. package/dist/cache/entities/CacheRecord.d.ts.map +1 -1
  93. package/dist/cache/entities/CacheRecord.js +14 -15
  94. package/dist/cache/entities/CacheRecord.js.map +1 -1
  95. package/dist/cache/entities/CredentialEntity.d.ts +88 -88
  96. package/dist/cache/entities/CredentialEntity.d.ts.map +1 -1
  97. package/dist/cache/entities/CredentialEntity.js +137 -136
  98. package/dist/cache/entities/CredentialEntity.js.map +1 -1
  99. package/dist/cache/entities/IdTokenEntity.d.ts +34 -34
  100. package/dist/cache/entities/IdTokenEntity.d.ts.map +1 -1
  101. package/dist/cache/entities/IdTokenEntity.js +57 -63
  102. package/dist/cache/entities/IdTokenEntity.js.map +1 -1
  103. package/dist/cache/entities/RefreshTokenEntity.d.ts +36 -36
  104. package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
  105. package/dist/cache/entities/RefreshTokenEntity.js +60 -66
  106. package/dist/cache/entities/RefreshTokenEntity.js.map +1 -1
  107. package/dist/cache/entities/ServerTelemetryEntity.d.ts +12 -12
  108. package/dist/cache/entities/ServerTelemetryEntity.d.ts.map +1 -1
  109. package/dist/cache/entities/ServerTelemetryEntity.js +28 -29
  110. package/dist/cache/entities/ServerTelemetryEntity.js.map +1 -1
  111. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  112. package/dist/cache/entities/ThrottlingEntity.js +24 -26
  113. package/dist/cache/entities/ThrottlingEntity.js.map +1 -1
  114. package/dist/cache/interface/ICacheManager.d.ts +165 -165
  115. package/dist/cache/interface/ICacheManager.d.ts.map +1 -1
  116. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  117. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  118. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  119. package/dist/cache/persistence/TokenCacheContext.d.ts.map +1 -1
  120. package/dist/cache/persistence/TokenCacheContext.js +26 -35
  121. package/dist/cache/persistence/TokenCacheContext.js.map +1 -1
  122. package/dist/cache/utils/CacheTypes.d.ts +62 -62
  123. package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
  124. package/dist/client/AuthorizationCodeClient.d.ts +71 -71
  125. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  126. package/dist/client/AuthorizationCodeClient.js +435 -478
  127. package/dist/client/AuthorizationCodeClient.js.map +1 -1
  128. package/dist/client/BaseClient.d.ts +50 -50
  129. package/dist/client/BaseClient.d.ts.map +1 -1
  130. package/dist/client/BaseClient.js +93 -101
  131. package/dist/client/BaseClient.js.map +1 -1
  132. package/dist/client/RefreshTokenClient.d.ts +34 -34
  133. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  134. package/dist/client/RefreshTokenClient.js +241 -274
  135. package/dist/client/RefreshTokenClient.js.map +1 -1
  136. package/dist/client/SilentFlowClient.d.ts +24 -24
  137. package/dist/client/SilentFlowClient.d.ts.map +1 -1
  138. package/dist/client/SilentFlowClient.js +95 -123
  139. package/dist/client/SilentFlowClient.js.map +1 -1
  140. package/dist/config/AppTokenProvider.d.ts +38 -38
  141. package/dist/config/AppTokenProvider.d.ts.map +1 -1
  142. package/dist/config/ClientConfiguration.d.ts +133 -133
  143. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  144. package/dist/config/ClientConfiguration.js +88 -91
  145. package/dist/config/ClientConfiguration.js.map +1 -1
  146. package/dist/crypto/ICrypto.d.ts +62 -62
  147. package/dist/crypto/ICrypto.d.ts.map +1 -1
  148. package/dist/crypto/ICrypto.js +42 -73
  149. package/dist/crypto/ICrypto.js.map +1 -1
  150. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  151. package/dist/crypto/JoseHeader.d.ts +21 -21
  152. package/dist/crypto/JoseHeader.d.ts.map +1 -1
  153. package/dist/crypto/JoseHeader.js +37 -38
  154. package/dist/crypto/JoseHeader.js.map +1 -1
  155. package/dist/crypto/PopTokenGenerator.d.ts +57 -57
  156. package/dist/crypto/PopTokenGenerator.d.ts.map +1 -1
  157. package/dist/crypto/PopTokenGenerator.js +84 -108
  158. package/dist/crypto/PopTokenGenerator.js.map +1 -1
  159. package/dist/crypto/SignedHttpRequest.d.ts +11 -11
  160. package/dist/crypto/SignedHttpRequest.d.ts.map +1 -1
  161. package/dist/error/AuthError.d.ts +47 -47
  162. package/dist/error/AuthError.d.ts.map +1 -1
  163. package/dist/error/AuthError.js +52 -55
  164. package/dist/error/AuthError.js.map +1 -1
  165. package/dist/error/ClientAuthError.d.ts +412 -404
  166. package/dist/error/ClientAuthError.d.ts.map +1 -1
  167. package/dist/error/ClientAuthError.js +520 -514
  168. package/dist/error/ClientAuthError.js.map +1 -1
  169. package/dist/error/ClientConfigurationError.d.ts +198 -198
  170. package/dist/error/ClientConfigurationError.d.ts.map +1 -1
  171. package/dist/error/ClientConfigurationError.js +250 -254
  172. package/dist/error/ClientConfigurationError.js.map +1 -1
  173. package/dist/error/InteractionRequiredAuthError.d.ts +59 -59
  174. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  175. package/dist/error/InteractionRequiredAuthError.js +79 -78
  176. package/dist/error/InteractionRequiredAuthError.js.map +1 -1
  177. package/dist/error/JoseHeaderError.d.ts +28 -28
  178. package/dist/error/JoseHeaderError.d.ts.map +1 -1
  179. package/dist/error/JoseHeaderError.js +40 -44
  180. package/dist/error/JoseHeaderError.js.map +1 -1
  181. package/dist/error/ServerError.d.ts +7 -7
  182. package/dist/error/ServerError.d.ts.map +1 -1
  183. package/dist/error/ServerError.js +15 -19
  184. package/dist/error/ServerError.js.map +1 -1
  185. package/dist/index.cjs.js +8890 -9111
  186. package/dist/index.cjs.js.map +1 -1
  187. package/dist/index.d.ts +93 -94
  188. package/dist/index.d.ts.map +1 -1
  189. package/dist/index.js +5 -6
  190. package/dist/index.js.map +1 -1
  191. package/dist/logger/Logger.d.ts +95 -95
  192. package/dist/logger/Logger.d.ts.map +1 -1
  193. package/dist/logger/Logger.js +198 -188
  194. package/dist/logger/Logger.js.map +1 -1
  195. package/dist/network/INetworkModule.d.ts +29 -29
  196. package/dist/network/INetworkModule.d.ts.map +1 -1
  197. package/dist/network/INetworkModule.js +14 -14
  198. package/dist/network/INetworkModule.js.map +1 -1
  199. package/dist/network/NetworkManager.d.ts +32 -31
  200. package/dist/network/NetworkManager.d.ts.map +1 -1
  201. package/dist/network/NetworkManager.js +34 -48
  202. package/dist/network/NetworkManager.js.map +1 -1
  203. package/dist/network/RequestThumbprint.d.ts +16 -16
  204. package/dist/network/RequestThumbprint.d.ts.map +1 -1
  205. package/dist/network/ThrottlingUtils.d.ts +41 -41
  206. package/dist/network/ThrottlingUtils.d.ts.map +1 -1
  207. package/dist/network/ThrottlingUtils.js +95 -94
  208. package/dist/network/ThrottlingUtils.js.map +1 -1
  209. package/dist/packageMetadata.d.ts +2 -2
  210. package/dist/packageMetadata.d.ts.map +1 -1
  211. package/dist/packageMetadata.js +4 -4
  212. package/dist/packageMetadata.js.map +1 -1
  213. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  214. package/dist/request/AuthenticationHeaderParser.d.ts.map +1 -1
  215. package/dist/request/AuthenticationHeaderParser.js +56 -57
  216. package/dist/request/AuthenticationHeaderParser.js.map +1 -1
  217. package/dist/request/BaseAuthRequest.d.ts +37 -37
  218. package/dist/request/BaseAuthRequest.d.ts.map +1 -1
  219. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  220. package/dist/request/CommonAuthorizationCodeRequest.d.ts.map +1 -1
  221. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  222. package/dist/request/CommonAuthorizationUrlRequest.d.ts.map +1 -1
  223. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  224. package/dist/request/CommonClientCredentialRequest.d.ts.map +1 -1
  225. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  226. package/dist/request/CommonDeviceCodeRequest.d.ts.map +1 -1
  227. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  228. package/dist/request/CommonEndSessionRequest.d.ts.map +1 -1
  229. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  230. package/dist/request/CommonOnBehalfOfRequest.d.ts.map +1 -1
  231. package/dist/request/CommonRefreshTokenRequest.d.ts +19 -19
  232. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  233. package/dist/request/CommonSilentFlowRequest.d.ts +18 -18
  234. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  235. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  236. package/dist/request/CommonUsernamePasswordRequest.d.ts.map +1 -1
  237. package/dist/request/NativeRequest.d.ts +19 -19
  238. package/dist/request/NativeRequest.d.ts.map +1 -1
  239. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  240. package/dist/request/NativeSignOutRequest.d.ts.map +1 -1
  241. package/dist/request/RequestParameterBuilder.d.ts +216 -216
  242. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  243. package/dist/request/RequestParameterBuilder.js +376 -378
  244. package/dist/request/RequestParameterBuilder.js.map +1 -1
  245. package/dist/request/RequestValidator.d.ts +33 -33
  246. package/dist/request/RequestValidator.d.ts.map +1 -1
  247. package/dist/request/RequestValidator.js +84 -89
  248. package/dist/request/RequestValidator.js.map +1 -1
  249. package/dist/request/ScopeSet.d.ts +88 -88
  250. package/dist/request/ScopeSet.d.ts.map +1 -1
  251. package/dist/request/ScopeSet.js +198 -198
  252. package/dist/request/ScopeSet.js.map +1 -1
  253. package/dist/response/AuthenticationResult.d.ts +39 -39
  254. package/dist/response/AuthenticationResult.d.ts.map +1 -1
  255. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  256. package/dist/response/AuthorizationCodePayload.d.ts.map +1 -1
  257. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  258. package/dist/response/DeviceCodeResponse.d.ts.map +1 -1
  259. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  260. package/dist/response/ExternalTokenResponse.d.ts.map +1 -1
  261. package/dist/response/IMDSBadResponse.d.ts +4 -4
  262. package/dist/response/IMDSBadResponse.d.ts.map +1 -1
  263. package/dist/response/ResponseHandler.d.ts +72 -72
  264. package/dist/response/ResponseHandler.d.ts.map +1 -1
  265. package/dist/response/ResponseHandler.js +301 -286
  266. package/dist/response/ResponseHandler.js.map +1 -1
  267. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  268. package/dist/response/ServerAuthorizationCodeResponse.d.ts.map +1 -1
  269. package/dist/response/ServerAuthorizationTokenResponse.d.ts +44 -44
  270. package/dist/response/ServerAuthorizationTokenResponse.d.ts.map +1 -1
  271. package/dist/telemetry/performance/IPerformanceClient.d.ts +42 -43
  272. package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -1
  273. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  274. package/dist/telemetry/performance/PerformanceClient.d.ts +189 -197
  275. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  276. package/dist/telemetry/performance/PerformanceClient.js +407 -402
  277. package/dist/telemetry/performance/PerformanceClient.js.map +1 -1
  278. package/dist/telemetry/performance/PerformanceEvent.d.ts +439 -439
  279. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  280. package/dist/telemetry/performance/PerformanceEvent.js +227 -227
  281. package/dist/telemetry/performance/PerformanceEvent.js.map +1 -1
  282. package/dist/telemetry/performance/StubPerformanceClient.d.ts +19 -17
  283. package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -1
  284. package/dist/telemetry/performance/StubPerformanceClient.js +37 -46
  285. package/dist/telemetry/performance/StubPerformanceClient.js.map +1 -1
  286. package/dist/telemetry/server/ServerTelemetryManager.d.ts +65 -66
  287. package/dist/telemetry/server/ServerTelemetryManager.d.ts.map +1 -1
  288. package/dist/telemetry/server/ServerTelemetryManager.js +199 -161
  289. package/dist/telemetry/server/ServerTelemetryManager.js.map +1 -1
  290. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  291. package/dist/telemetry/server/ServerTelemetryRequest.d.ts.map +1 -1
  292. package/dist/url/IUri.d.ts +12 -12
  293. package/dist/url/UrlString.d.ts +70 -70
  294. package/dist/url/UrlString.d.ts.map +1 -1
  295. package/dist/url/UrlString.js +243 -232
  296. package/dist/url/UrlString.js.map +1 -1
  297. package/dist/utils/Constants.d.ts +331 -331
  298. package/dist/utils/Constants.d.ts.map +1 -1
  299. package/dist/utils/Constants.js +374 -373
  300. package/dist/utils/Constants.js.map +1 -1
  301. package/dist/utils/MsalTypes.d.ts +6 -6
  302. package/dist/utils/MsalTypes.d.ts.map +1 -1
  303. package/dist/utils/ProtocolUtils.d.ts +42 -42
  304. package/dist/utils/ProtocolUtils.d.ts.map +1 -1
  305. package/dist/utils/ProtocolUtils.js +72 -69
  306. package/dist/utils/ProtocolUtils.js.map +1 -1
  307. package/dist/utils/StringUtils.d.ts +53 -53
  308. package/dist/utils/StringUtils.d.ts.map +1 -1
  309. package/dist/utils/StringUtils.js +125 -123
  310. package/dist/utils/StringUtils.js.map +1 -1
  311. package/dist/utils/TimeUtils.d.ts +27 -27
  312. package/dist/utils/TimeUtils.d.ts.map +1 -1
  313. package/dist/utils/TimeUtils.js +46 -49
  314. package/dist/utils/TimeUtils.js.map +1 -1
  315. package/package.json +10 -7
  316. package/dist/_virtual/_tslib.js +0 -90
  317. package/dist/_virtual/_tslib.js.map +0 -1
  318. package/dist/client/ClientCredentialClient.d.ts +0 -38
  319. package/dist/client/ClientCredentialClient.d.ts.map +0 -1
  320. package/dist/client/ClientCredentialClient.js +0 -203
  321. package/dist/client/ClientCredentialClient.js.map +0 -1
  322. package/dist/client/DeviceCodeClient.d.ts +0 -57
  323. package/dist/client/DeviceCodeClient.d.ts.map +0 -1
  324. package/dist/client/DeviceCodeClient.js +0 -250
  325. package/dist/client/DeviceCodeClient.js.map +0 -1
  326. package/dist/client/OnBehalfOfClient.d.ts +0 -51
  327. package/dist/client/OnBehalfOfClient.d.ts.map +0 -1
  328. package/dist/client/OnBehalfOfClient.js +0 -248
  329. package/dist/client/OnBehalfOfClient.js.map +0 -1
  330. package/dist/client/UsernamePasswordClient.d.ts +0 -29
  331. package/dist/client/UsernamePasswordClient.d.ts.map +0 -1
  332. package/dist/client/UsernamePasswordClient.js +0 -129
  333. package/dist/client/UsernamePasswordClient.js.map +0 -1
@@ -1,6 +1,5 @@
1
- /*! @azure/msal-common v13.0.0 2023-05-01 */
1
+ /*! @azure/msal-common v14.0.0-alpha.2 2023-05-17 */
2
2
  'use strict';
3
- import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
3
  import { buildClientInfo } from '../account/ClientInfo.js';
5
4
  import { ClientAuthError } from '../error/ClientAuthError.js';
6
5
  import { StringUtils } from '../utils/StringUtils.js';
@@ -21,290 +20,306 @@ import { AppMetadataEntity } from '../cache/entities/AppMetadataEntity.js';
21
20
  import { TokenCacheContext } from '../cache/persistence/TokenCacheContext.js';
22
21
  import { PerformanceEvents } from '../telemetry/performance/PerformanceEvent.js';
23
22
 
24
- /*
25
- * Copyright (c) Microsoft Corporation. All rights reserved.
26
- * Licensed under the MIT License.
27
- */
28
- /**
29
- * Class that handles response parsing.
30
- */
31
- var ResponseHandler = /** @class */ (function () {
32
- function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {
33
- this.clientId = clientId;
34
- this.cacheStorage = cacheStorage;
35
- this.cryptoObj = cryptoObj;
36
- this.logger = logger;
37
- this.serializableCache = serializableCache;
38
- this.persistencePlugin = persistencePlugin;
39
- this.performanceClient = performanceClient;
40
- }
41
- /**
42
- * Function which validates server authorization code response.
43
- * @param serverResponseHash
44
- * @param cachedState
45
- * @param cryptoObj
46
- */
47
- ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {
48
- if (!serverResponseHash.state || !cachedState) {
49
- throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError("Server State") : ClientAuthError.createStateNotFoundError("Cached State");
50
- }
51
- if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {
52
- throw ClientAuthError.createStateMismatchError();
53
- }
54
- // Check for error
55
- if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {
56
- if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {
57
- throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror, serverResponseHash.timestamp || Constants.EMPTY_STRING, serverResponseHash.trace_id || Constants.EMPTY_STRING, serverResponseHash.correlation_id || Constants.EMPTY_STRING, serverResponseHash.claims || Constants.EMPTY_STRING);
58
- }
59
- throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);
60
- }
61
- if (serverResponseHash.client_info) {
62
- buildClientInfo(serverResponseHash.client_info, cryptoObj);
63
- }
64
- };
65
- /**
66
- * Function which validates server authorization token response.
67
- * @param serverResponse
68
- */
69
- ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {
70
- // Check for error
71
- if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {
72
- if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {
73
- throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING);
74
- }
75
- var errString = serverResponse.error_codes + " - [" + serverResponse.timestamp + "]: " + serverResponse.error_description + " - Correlation ID: " + serverResponse.correlation_id + " - Trace ID: " + serverResponse.trace_id;
76
- throw new ServerError(serverResponse.error, errString, serverResponse.suberror);
77
- }
78
- };
79
- /**
80
- * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.
81
- * @param serverTokenResponse
82
- * @param authority
83
- */
84
- ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {
85
- var _a;
86
- return __awaiter(this, void 0, void 0, function () {
87
- var idTokenObj, authTime, requestStateObj, cacheRecord, cacheContext, key, account;
88
- return __generator(this, function (_b) {
89
- switch (_b.label) {
90
- case 0:
91
- (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);
92
- if (serverTokenResponse.id_token) {
93
- idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);
94
- // token nonce check (TODO: Add a warning if no nonce is given?)
95
- if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {
96
- if (idTokenObj.claims.nonce !== authCodePayload.nonce) {
97
- throw ClientAuthError.createNonceMismatchError();
98
- }
99
- }
100
- // token max_age check
101
- if (request.maxAge || (request.maxAge === 0)) {
102
- authTime = idTokenObj.claims.auth_time;
103
- if (!authTime) {
104
- throw ClientAuthError.createAuthTimeNotFoundError();
105
- }
106
- AuthToken.checkMaxAge(authTime, request.maxAge);
107
- }
108
- }
109
- // generate homeAccountId
110
- this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);
111
- if (!!authCodePayload && !!authCodePayload.state) {
112
- requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);
113
- }
114
- // Add keyId from request to serverTokenResponse if defined
115
- serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;
116
- cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);
117
- _b.label = 1;
118
- case 1:
119
- _b.trys.push([1, , 5, 8]);
120
- if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];
121
- this.logger.verbose("Persistence enabled, calling beforeCacheAccess");
122
- cacheContext = new TokenCacheContext(this.serializableCache, true);
123
- return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];
124
- case 2:
125
- _b.sent();
126
- _b.label = 3;
127
- case 3:
128
- /*
129
- * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.
130
- * If not present, we should return null, as it's the case that another application called removeAccount in between
131
- * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by
132
- * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.
133
- */
134
- if (handlingRefreshTokenResponse && !forceCacheRefreshTokenResponse && cacheRecord.account) {
135
- key = cacheRecord.account.generateAccountKey();
136
- account = this.cacheStorage.getAccount(key);
137
- if (!account) {
138
- this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache");
139
- return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId)];
140
- }
141
- }
142
- return [4 /*yield*/, this.cacheStorage.saveCacheRecord(cacheRecord)];
143
- case 4:
144
- _b.sent();
145
- return [3 /*break*/, 8];
146
- case 5:
147
- if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 7];
148
- this.logger.verbose("Persistence enabled, calling afterCacheAccess");
149
- return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];
150
- case 6:
151
- _b.sent();
152
- _b.label = 7;
153
- case 7: return [7 /*endfinally*/];
154
- case 8: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse, serverRequestId)];
155
- }
156
- });
157
- });
158
- };
159
- /**
160
- * Generates CacheRecord
161
- * @param serverTokenResponse
162
- * @param idTokenObj
163
- * @param authority
164
- */
165
- ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload) {
166
- var env = authority.getPreferredCache();
167
- if (StringUtils.isEmpty(env)) {
168
- throw ClientAuthError.createInvalidCacheEnvironmentError();
169
- }
170
- // IdToken: non AAD scenarios can have empty realm
171
- var cachedIdToken;
172
- var cachedAccount;
173
- if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {
174
- cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);
175
- cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, authCodePayload);
176
- }
177
- // AccessToken
178
- var cachedAccessToken = null;
179
- if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {
180
- // If scopes not returned in server response, use request scopes
181
- var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);
182
- /*
183
- * Use timestamp calculated before request
184
- * Server may return timestamps as strings, parse to numbers if so.
185
- */
186
- var expiresIn = (typeof serverTokenResponse.expires_in === "string" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;
187
- var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;
188
- var refreshIn = (typeof serverTokenResponse.refresh_in === "string" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;
189
- var tokenExpirationSeconds = reqTimestamp + expiresIn;
190
- var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;
191
- var refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;
192
- // non AAD scenarios can have empty realm
193
- cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);
194
- }
195
- // refreshToken
196
- var cachedRefreshToken = null;
197
- if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {
198
- cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, userAssertionHash);
199
- }
200
- // appMetadata
201
- var cachedAppMetadata = null;
202
- if (!StringUtils.isEmpty(serverTokenResponse.foci)) {
203
- cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);
204
- }
205
- return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);
206
- };
207
- /**
208
- * Generate Account
209
- * @param serverTokenResponse
210
- * @param idToken
211
- * @param authority
212
- */
213
- ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, authCodePayload) {
214
- var authorityType = authority.authorityType;
215
- var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;
216
- var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;
217
- // ADFS does not require client_info in the response
218
- if (authorityType === AuthorityType.Adfs) {
219
- this.logger.verbose("Authority type is ADFS, creating ADFS account");
220
- return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);
221
- }
222
- // This fallback applies to B2C as well as they fall under an AAD account type.
223
- if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === "AAD") {
224
- throw ClientAuthError.createClientInfoEmptyError();
225
- }
226
- return serverTokenResponse.client_info ?
227
- AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost) :
228
- AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);
229
- };
230
- /**
231
- * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.
232
- *
233
- * Optionally takes a state string that is set as-is in the response.
234
- *
235
- * @param cacheRecord
236
- * @param idTokenObj
237
- * @param fromTokenCache
238
- * @param stateString
239
- */
240
- ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, serverTokenResponse, requestId) {
241
- var _a, _b, _c;
242
- return __awaiter(this, void 0, void 0, function () {
243
- var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, _d, secret, keyId, uid, tid;
244
- return __generator(this, function (_e) {
245
- switch (_e.label) {
246
- case 0:
247
- accessToken = Constants.EMPTY_STRING;
248
- responseScopes = [];
249
- expiresOn = null;
250
- familyId = Constants.EMPTY_STRING;
251
- if (!cacheRecord.accessToken) return [3 /*break*/, 4];
252
- if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];
253
- popTokenGenerator = new PopTokenGenerator(cryptoObj);
254
- _d = cacheRecord.accessToken, secret = _d.secret, keyId = _d.keyId;
255
- if (!keyId) {
256
- throw ClientAuthError.createKeyIdMissingError();
257
- }
258
- return [4 /*yield*/, popTokenGenerator.signPopToken(secret, keyId, request)];
259
- case 1:
260
- accessToken = _e.sent();
261
- return [3 /*break*/, 3];
262
- case 2:
263
- accessToken = cacheRecord.accessToken.secret;
264
- _e.label = 3;
265
- case 3:
266
- responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
267
- expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
268
- extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
269
- _e.label = 4;
270
- case 4:
271
- if (cacheRecord.appMetadata) {
272
- familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;
273
- }
274
- uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;
275
- tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;
276
- // for hybrid + native bridge enablement, send back the native account Id
277
- if ((serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_accountid) && !!cacheRecord.account) {
278
- cacheRecord.account.nativeAccountId = serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_accountid;
279
- }
280
- return [2 /*return*/, {
281
- authority: authority.canonicalAuthority,
282
- uniqueId: uid,
283
- tenantId: tid,
284
- scopes: responseScopes,
285
- account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,
286
- idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,
287
- idTokenClaims: idTokenObj ? idTokenObj.claims : {},
288
- accessToken: accessToken,
289
- fromCache: fromTokenCache,
290
- expiresOn: expiresOn,
291
- correlationId: request.correlationId,
292
- requestId: requestId || Constants.EMPTY_STRING,
293
- extExpiresOn: extExpiresOn,
294
- familyId: familyId,
295
- tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,
296
- state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,
297
- cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,
298
- msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,
299
- code: serverTokenResponse === null || serverTokenResponse === void 0 ? void 0 : serverTokenResponse.spa_code,
300
- fromNativeBroker: false,
301
- }];
302
- }
303
- });
304
- });
305
- };
306
- return ResponseHandler;
307
- }());
23
+ /*
24
+ * Copyright (c) Microsoft Corporation. All rights reserved.
25
+ * Licensed under the MIT License.
26
+ */
27
+ /**
28
+ * Class that handles response parsing.
29
+ */
30
+ class ResponseHandler {
31
+ constructor(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin, performanceClient) {
32
+ this.clientId = clientId;
33
+ this.cacheStorage = cacheStorage;
34
+ this.cryptoObj = cryptoObj;
35
+ this.logger = logger;
36
+ this.serializableCache = serializableCache;
37
+ this.persistencePlugin = persistencePlugin;
38
+ this.performanceClient = performanceClient;
39
+ }
40
+ /**
41
+ * Function which validates server authorization code response.
42
+ * @param serverResponseHash
43
+ * @param cachedState
44
+ * @param cryptoObj
45
+ */
46
+ validateServerAuthorizationCodeResponse(serverResponseHash, cachedState, cryptoObj) {
47
+ if (!serverResponseHash.state || !cachedState) {
48
+ throw !serverResponseHash.state
49
+ ? ClientAuthError.createStateNotFoundError("Server State")
50
+ : ClientAuthError.createStateNotFoundError("Cached State");
51
+ }
52
+ if (decodeURIComponent(serverResponseHash.state) !==
53
+ decodeURIComponent(cachedState)) {
54
+ throw ClientAuthError.createStateMismatchError();
55
+ }
56
+ // Check for error
57
+ if (serverResponseHash.error ||
58
+ serverResponseHash.error_description ||
59
+ serverResponseHash.suberror) {
60
+ if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {
61
+ throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror, serverResponseHash.timestamp || Constants.EMPTY_STRING, serverResponseHash.trace_id || Constants.EMPTY_STRING, serverResponseHash.correlation_id || Constants.EMPTY_STRING, serverResponseHash.claims || Constants.EMPTY_STRING);
62
+ }
63
+ throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);
64
+ }
65
+ if (serverResponseHash.client_info) {
66
+ buildClientInfo(serverResponseHash.client_info, cryptoObj);
67
+ }
68
+ }
69
+ /**
70
+ * Function which validates server authorization token response.
71
+ * @param serverResponse
72
+ */
73
+ validateTokenResponse(serverResponse) {
74
+ // Check for error
75
+ if (serverResponse.error ||
76
+ serverResponse.error_description ||
77
+ serverResponse.suberror) {
78
+ if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {
79
+ throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror, serverResponse.timestamp || Constants.EMPTY_STRING, serverResponse.trace_id || Constants.EMPTY_STRING, serverResponse.correlation_id || Constants.EMPTY_STRING, serverResponse.claims || Constants.EMPTY_STRING);
80
+ }
81
+ const errString = `${serverResponse.error_codes} - [${serverResponse.timestamp}]: ${serverResponse.error_description} - Correlation ID: ${serverResponse.correlation_id} - Trace ID: ${serverResponse.trace_id}`;
82
+ throw new ServerError(serverResponse.error, errString, serverResponse.suberror);
83
+ }
84
+ }
85
+ /**
86
+ * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.
87
+ * @param serverTokenResponse
88
+ * @param authority
89
+ */
90
+ async handleServerTokenResponse(serverTokenResponse, authority, reqTimestamp, request, authCodePayload, userAssertionHash, handlingRefreshTokenResponse, forceCacheRefreshTokenResponse, serverRequestId) {
91
+ this.performanceClient?.addQueueMeasurement(PerformanceEvents.HandleServerTokenResponse, serverTokenResponse.correlation_id);
92
+ // create an idToken object (not entity)
93
+ let idTokenObj;
94
+ if (serverTokenResponse.id_token) {
95
+ idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);
96
+ // token nonce check (TODO: Add a warning if no nonce is given?)
97
+ if (authCodePayload &&
98
+ !StringUtils.isEmpty(authCodePayload.nonce)) {
99
+ if (idTokenObj.claims.nonce !== authCodePayload.nonce) {
100
+ throw ClientAuthError.createNonceMismatchError();
101
+ }
102
+ }
103
+ // token max_age check
104
+ if (request.maxAge || request.maxAge === 0) {
105
+ const authTime = idTokenObj.claims.auth_time;
106
+ if (!authTime) {
107
+ throw ClientAuthError.createAuthTimeNotFoundError();
108
+ }
109
+ AuthToken.checkMaxAge(authTime, request.maxAge);
110
+ }
111
+ }
112
+ // generate homeAccountId
113
+ this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);
114
+ // save the response tokens
115
+ let requestStateObj;
116
+ if (!!authCodePayload && !!authCodePayload.state) {
117
+ requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);
118
+ }
119
+ // Add keyId from request to serverTokenResponse if defined
120
+ serverTokenResponse.key_id =
121
+ serverTokenResponse.key_id || request.sshKid || undefined;
122
+ const cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload);
123
+ let cacheContext;
124
+ try {
125
+ if (this.persistencePlugin && this.serializableCache) {
126
+ this.logger.verbose("Persistence enabled, calling beforeCacheAccess");
127
+ cacheContext = new TokenCacheContext(this.serializableCache, true);
128
+ await this.persistencePlugin.beforeCacheAccess(cacheContext);
129
+ }
130
+ /*
131
+ * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.
132
+ * If not present, we should return null, as it's the case that another application called removeAccount in between
133
+ * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by
134
+ * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.
135
+ */
136
+ if (handlingRefreshTokenResponse &&
137
+ !forceCacheRefreshTokenResponse &&
138
+ cacheRecord.account) {
139
+ const key = cacheRecord.account.generateAccountKey();
140
+ const account = this.cacheStorage.getAccount(key);
141
+ if (!account) {
142
+ this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache");
143
+ return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, undefined, serverRequestId);
144
+ }
145
+ }
146
+ await this.cacheStorage.saveCacheRecord(cacheRecord);
147
+ }
148
+ finally {
149
+ if (this.persistencePlugin &&
150
+ this.serializableCache &&
151
+ cacheContext) {
152
+ this.logger.verbose("Persistence enabled, calling afterCacheAccess");
153
+ await this.persistencePlugin.afterCacheAccess(cacheContext);
154
+ }
155
+ }
156
+ return ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse, serverRequestId);
157
+ }
158
+ /**
159
+ * Generates CacheRecord
160
+ * @param serverTokenResponse
161
+ * @param idTokenObj
162
+ * @param authority
163
+ */
164
+ generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, userAssertionHash, authCodePayload) {
165
+ const env = authority.getPreferredCache();
166
+ if (StringUtils.isEmpty(env)) {
167
+ throw ClientAuthError.createInvalidCacheEnvironmentError();
168
+ }
169
+ // IdToken: non AAD scenarios can have empty realm
170
+ let cachedIdToken;
171
+ let cachedAccount;
172
+ if (!StringUtils.isEmpty(serverTokenResponse.id_token) &&
173
+ !!idTokenObj) {
174
+ cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING);
175
+ cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, authCodePayload);
176
+ }
177
+ // AccessToken
178
+ let cachedAccessToken = null;
179
+ if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {
180
+ // If scopes not returned in server response, use request scopes
181
+ const responseScopes = serverTokenResponse.scope
182
+ ? ScopeSet.fromString(serverTokenResponse.scope)
183
+ : new ScopeSet(request.scopes || []);
184
+ /*
185
+ * Use timestamp calculated before request
186
+ * Server may return timestamps as strings, parse to numbers if so.
187
+ */
188
+ const expiresIn = (typeof serverTokenResponse.expires_in === "string"
189
+ ? parseInt(serverTokenResponse.expires_in, 10)
190
+ : serverTokenResponse.expires_in) || 0;
191
+ const extExpiresIn = (typeof serverTokenResponse.ext_expires_in === "string"
192
+ ? parseInt(serverTokenResponse.ext_expires_in, 10)
193
+ : serverTokenResponse.ext_expires_in) || 0;
194
+ const refreshIn = (typeof serverTokenResponse.refresh_in === "string"
195
+ ? parseInt(serverTokenResponse.refresh_in, 10)
196
+ : serverTokenResponse.refresh_in) || undefined;
197
+ const tokenExpirationSeconds = reqTimestamp + expiresIn;
198
+ const extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;
199
+ const refreshOnSeconds = refreshIn && refreshIn > 0
200
+ ? reqTimestamp + refreshIn
201
+ : undefined;
202
+ // non AAD scenarios can have empty realm
203
+ cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj
204
+ ? idTokenObj.claims.tid || Constants.EMPTY_STRING
205
+ : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, userAssertionHash, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);
206
+ }
207
+ // refreshToken
208
+ let cachedRefreshToken = null;
209
+ if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {
210
+ cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, userAssertionHash);
211
+ }
212
+ // appMetadata
213
+ let cachedAppMetadata = null;
214
+ if (!StringUtils.isEmpty(serverTokenResponse.foci)) {
215
+ cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);
216
+ }
217
+ return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);
218
+ }
219
+ /**
220
+ * Generate Account
221
+ * @param serverTokenResponse
222
+ * @param idToken
223
+ * @param authority
224
+ */
225
+ generateAccountEntity(serverTokenResponse, idToken, authority, authCodePayload) {
226
+ const authorityType = authority.authorityType;
227
+ const cloudGraphHostName = authCodePayload
228
+ ? authCodePayload.cloud_graph_host_name
229
+ : Constants.EMPTY_STRING;
230
+ const msGraphhost = authCodePayload
231
+ ? authCodePayload.msgraph_host
232
+ : Constants.EMPTY_STRING;
233
+ // ADFS does not require client_info in the response
234
+ if (authorityType === AuthorityType.Adfs) {
235
+ this.logger.verbose("Authority type is ADFS, creating ADFS account");
236
+ return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);
237
+ }
238
+ // This fallback applies to B2C as well as they fall under an AAD account type.
239
+ if (StringUtils.isEmpty(serverTokenResponse.client_info) &&
240
+ authority.protocolMode === "AAD") {
241
+ throw ClientAuthError.createClientInfoEmptyError();
242
+ }
243
+ return serverTokenResponse.client_info
244
+ ? AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost)
245
+ : AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, cloudGraphHostName, msGraphhost);
246
+ }
247
+ /**
248
+ * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.
249
+ *
250
+ * Optionally takes a state string that is set as-is in the response.
251
+ *
252
+ * @param cacheRecord
253
+ * @param idTokenObj
254
+ * @param fromTokenCache
255
+ * @param stateString
256
+ */
257
+ static async generateAuthenticationResult(cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, serverTokenResponse, requestId) {
258
+ let accessToken = Constants.EMPTY_STRING;
259
+ let responseScopes = [];
260
+ let expiresOn = null;
261
+ let extExpiresOn;
262
+ let familyId = Constants.EMPTY_STRING;
263
+ if (cacheRecord.accessToken) {
264
+ if (cacheRecord.accessToken.tokenType === AuthenticationScheme.POP) {
265
+ const popTokenGenerator = new PopTokenGenerator(cryptoObj);
266
+ const { secret, keyId } = cacheRecord.accessToken;
267
+ if (!keyId) {
268
+ throw ClientAuthError.createKeyIdMissingError();
269
+ }
270
+ accessToken = await popTokenGenerator.signPopToken(secret, keyId, request);
271
+ }
272
+ else {
273
+ accessToken = cacheRecord.accessToken.secret;
274
+ }
275
+ responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();
276
+ expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);
277
+ extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);
278
+ }
279
+ if (cacheRecord.appMetadata) {
280
+ familyId =
281
+ cacheRecord.appMetadata.familyId === THE_FAMILY_ID
282
+ ? THE_FAMILY_ID
283
+ : Constants.EMPTY_STRING;
284
+ }
285
+ const uid = idTokenObj?.claims.oid ||
286
+ idTokenObj?.claims.sub ||
287
+ Constants.EMPTY_STRING;
288
+ const tid = idTokenObj?.claims.tid || Constants.EMPTY_STRING;
289
+ // for hybrid + native bridge enablement, send back the native account Id
290
+ if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {
291
+ cacheRecord.account.nativeAccountId =
292
+ serverTokenResponse?.spa_accountid;
293
+ }
294
+ return {
295
+ authority: authority.canonicalAuthority,
296
+ uniqueId: uid,
297
+ tenantId: tid,
298
+ scopes: responseScopes,
299
+ account: cacheRecord.account
300
+ ? cacheRecord.account.getAccountInfo()
301
+ : null,
302
+ idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,
303
+ idTokenClaims: idTokenObj ? idTokenObj.claims : {},
304
+ accessToken: accessToken,
305
+ fromCache: fromTokenCache,
306
+ expiresOn: expiresOn,
307
+ correlationId: request.correlationId,
308
+ requestId: requestId || Constants.EMPTY_STRING,
309
+ extExpiresOn: extExpiresOn,
310
+ familyId: familyId,
311
+ tokenType: cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,
312
+ state: requestState
313
+ ? requestState.userRequestState
314
+ : Constants.EMPTY_STRING,
315
+ cloudGraphHostName: cacheRecord.account?.cloudGraphHostName ||
316
+ Constants.EMPTY_STRING,
317
+ msGraphHost: cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,
318
+ code: serverTokenResponse?.spa_code,
319
+ fromNativeBroker: false,
320
+ };
321
+ }
322
+ }
308
323
 
309
324
  export { ResponseHandler };
310
325
  //# sourceMappingURL=ResponseHandler.js.map