@azure/msal-common 14.0.2 → 14.1.0-alpha.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 (399) hide show
  1. package/dist/account/AccountInfo.d.ts +32 -32
  2. package/dist/account/AuthToken.d.ts +17 -20
  3. package/dist/account/AuthToken.d.ts.map +1 -1
  4. package/dist/account/AuthToken.mjs +61 -51
  5. package/dist/account/AuthToken.mjs.map +1 -1
  6. package/dist/account/CcsCredential.d.ts +9 -9
  7. package/dist/account/CcsCredential.mjs +8 -8
  8. package/dist/account/CcsCredential.mjs.map +1 -1
  9. package/dist/account/ClientCredentials.d.ts +14 -14
  10. package/dist/account/ClientInfo.d.ts +19 -19
  11. package/dist/account/ClientInfo.d.ts.map +1 -1
  12. package/dist/account/ClientInfo.mjs +39 -39
  13. package/dist/account/ClientInfo.mjs.map +1 -1
  14. package/dist/account/TokenClaims.d.ts +65 -65
  15. package/dist/authority/Authority.d.ts +235 -235
  16. package/dist/authority/Authority.d.ts.map +1 -1
  17. package/dist/authority/Authority.mjs +743 -765
  18. package/dist/authority/Authority.mjs.map +1 -1
  19. package/dist/authority/AuthorityFactory.d.ts +31 -31
  20. package/dist/authority/AuthorityFactory.d.ts.map +1 -1
  21. package/dist/authority/AuthorityFactory.mjs +52 -51
  22. package/dist/authority/AuthorityFactory.mjs.map +1 -1
  23. package/dist/authority/AuthorityMetadata.d.ts +623 -623
  24. package/dist/authority/AuthorityMetadata.mjs +884 -884
  25. package/dist/authority/AuthorityMetadata.mjs.map +1 -1
  26. package/dist/authority/AuthorityOptions.d.ts +21 -21
  27. package/dist/authority/AuthorityOptions.mjs +18 -18
  28. package/dist/authority/AuthorityOptions.mjs.map +1 -1
  29. package/dist/authority/AuthorityType.d.ts +10 -10
  30. package/dist/authority/AuthorityType.mjs +13 -13
  31. package/dist/authority/AuthorityType.mjs.map +1 -1
  32. package/dist/authority/AzureRegion.d.ts +1 -1
  33. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  34. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  35. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  36. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  37. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +1 -1
  38. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  39. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  40. package/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +1 -1
  41. package/dist/authority/ImdsOptions.d.ts +5 -5
  42. package/dist/authority/OIDCOptions.d.ts +8 -8
  43. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  44. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  45. package/dist/authority/OpenIdConfigResponse.mjs.map +1 -1
  46. package/dist/authority/ProtocolMode.d.ts +8 -8
  47. package/dist/authority/ProtocolMode.mjs +11 -11
  48. package/dist/authority/ProtocolMode.mjs.map +1 -1
  49. package/dist/authority/RegionDiscovery.d.ts +32 -30
  50. package/dist/authority/RegionDiscovery.d.ts.map +1 -1
  51. package/dist/authority/RegionDiscovery.mjs +107 -108
  52. package/dist/authority/RegionDiscovery.mjs.map +1 -1
  53. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  54. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  55. package/dist/cache/CacheManager.d.ts +446 -446
  56. package/dist/cache/CacheManager.d.ts.map +1 -1
  57. package/dist/cache/CacheManager.mjs +1001 -1025
  58. package/dist/cache/CacheManager.mjs.map +1 -1
  59. package/dist/cache/entities/AccessTokenEntity.d.ts +56 -56
  60. package/dist/cache/entities/AccessTokenEntity.d.ts.map +1 -1
  61. package/dist/cache/entities/AccessTokenEntity.mjs +112 -114
  62. package/dist/cache/entities/AccessTokenEntity.mjs.map +1 -1
  63. package/dist/cache/entities/AccountEntity.d.ts +101 -101
  64. package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
  65. package/dist/cache/entities/AccountEntity.mjs +222 -223
  66. package/dist/cache/entities/AccountEntity.mjs.map +1 -1
  67. package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
  68. package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
  69. package/dist/cache/entities/AppMetadataEntity.mjs.map +1 -1
  70. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
  71. package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
  72. package/dist/cache/entities/AuthorityMetadataEntity.mjs.map +1 -1
  73. package/dist/cache/entities/CacheRecord.d.ts +14 -14
  74. package/dist/cache/entities/CacheRecord.mjs +14 -14
  75. package/dist/cache/entities/CacheRecord.mjs.map +1 -1
  76. package/dist/cache/entities/CredentialEntity.d.ts +88 -88
  77. package/dist/cache/entities/CredentialEntity.d.ts.map +1 -1
  78. package/dist/cache/entities/CredentialEntity.mjs +138 -137
  79. package/dist/cache/entities/CredentialEntity.mjs.map +1 -1
  80. package/dist/cache/entities/IdTokenEntity.d.ts +34 -34
  81. package/dist/cache/entities/IdTokenEntity.mjs +56 -56
  82. package/dist/cache/entities/IdTokenEntity.mjs.map +1 -1
  83. package/dist/cache/entities/RefreshTokenEntity.d.ts +36 -36
  84. package/dist/cache/entities/RefreshTokenEntity.mjs +59 -59
  85. package/dist/cache/entities/RefreshTokenEntity.mjs.map +1 -1
  86. package/dist/cache/entities/ServerTelemetryEntity.d.ts +12 -12
  87. package/dist/cache/entities/ServerTelemetryEntity.mjs +27 -27
  88. package/dist/cache/entities/ServerTelemetryEntity.mjs.map +1 -1
  89. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  90. package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
  91. package/dist/cache/entities/ThrottlingEntity.mjs.map +1 -1
  92. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  93. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  94. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  95. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  96. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  97. package/dist/cache/persistence/TokenCacheContext.mjs.map +1 -1
  98. package/dist/cache/utils/CacheTypes.d.ts +69 -69
  99. package/dist/client/AuthorizationCodeClient.d.ts +73 -73
  100. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  101. package/dist/client/AuthorizationCodeClient.mjs +412 -440
  102. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  103. package/dist/client/BaseClient.d.ts +51 -51
  104. package/dist/client/BaseClient.d.ts.map +1 -1
  105. package/dist/client/BaseClient.mjs +101 -94
  106. package/dist/client/BaseClient.mjs.map +1 -1
  107. package/dist/client/RefreshTokenClient.d.ts +35 -35
  108. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  109. package/dist/client/RefreshTokenClient.mjs +185 -243
  110. package/dist/client/RefreshTokenClient.mjs.map +1 -1
  111. package/dist/client/SilentFlowClient.d.ts +26 -25
  112. package/dist/client/SilentFlowClient.d.ts.map +1 -1
  113. package/dist/client/SilentFlowClient.mjs +128 -104
  114. package/dist/client/SilentFlowClient.mjs.map +1 -1
  115. package/dist/config/AppTokenProvider.d.ts +38 -38
  116. package/dist/config/ClientConfiguration.d.ts +150 -150
  117. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  118. package/dist/config/ClientConfiguration.mjs +99 -100
  119. package/dist/config/ClientConfiguration.mjs.map +1 -1
  120. package/dist/crypto/ICrypto.d.ts +62 -62
  121. package/dist/crypto/ICrypto.d.ts.map +1 -1
  122. package/dist/crypto/ICrypto.mjs +35 -43
  123. package/dist/crypto/ICrypto.mjs.map +1 -1
  124. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  125. package/dist/crypto/JoseHeader.d.ts +22 -22
  126. package/dist/crypto/JoseHeader.d.ts.map +1 -1
  127. package/dist/crypto/JoseHeader.mjs +39 -38
  128. package/dist/crypto/JoseHeader.mjs.map +1 -1
  129. package/dist/crypto/PopTokenGenerator.d.ts +60 -59
  130. package/dist/crypto/PopTokenGenerator.d.ts.map +1 -1
  131. package/dist/crypto/PopTokenGenerator.mjs +83 -83
  132. package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
  133. package/dist/crypto/SignedHttpRequest.d.ts +11 -11
  134. package/dist/error/AuthError.d.ts +44 -47
  135. package/dist/error/AuthError.d.ts.map +1 -1
  136. package/dist/error/AuthError.mjs +50 -52
  137. package/dist/error/AuthError.mjs.map +1 -1
  138. package/dist/error/AuthErrorCodes.d.ts +6 -0
  139. package/dist/error/AuthErrorCodes.d.ts.map +1 -0
  140. package/dist/error/AuthErrorCodes.mjs +14 -0
  141. package/dist/error/AuthErrorCodes.mjs.map +1 -0
  142. package/dist/error/ClientAuthError.d.ts +232 -412
  143. package/dist/error/ClientAuthError.d.ts.map +1 -1
  144. package/dist/error/ClientAuthError.mjs +248 -520
  145. package/dist/error/ClientAuthError.mjs.map +1 -1
  146. package/dist/error/ClientAuthErrorCodes.d.ts +44 -0
  147. package/dist/error/ClientAuthErrorCodes.d.ts.map +1 -0
  148. package/dist/error/ClientAuthErrorCodes.mjs +52 -0
  149. package/dist/error/ClientAuthErrorCodes.mjs.map +1 -0
  150. package/dist/error/ClientConfigurationError.d.ts +128 -222
  151. package/dist/error/ClientConfigurationError.d.ts.map +1 -1
  152. package/dist/error/ClientConfigurationError.mjs +140 -281
  153. package/dist/error/ClientConfigurationError.mjs.map +1 -1
  154. package/dist/error/ClientConfigurationErrorCodes.d.ts +23 -0
  155. package/dist/error/ClientConfigurationErrorCodes.d.ts.map +1 -0
  156. package/dist/error/ClientConfigurationErrorCodes.mjs +31 -0
  157. package/dist/error/ClientConfigurationErrorCodes.mjs.map +1 -0
  158. package/dist/error/InteractionRequiredAuthError.d.ts +57 -59
  159. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  160. package/dist/error/InteractionRequiredAuthError.mjs +80 -79
  161. package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
  162. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +6 -0
  163. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -0
  164. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +16 -0
  165. package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -0
  166. package/dist/error/JoseHeaderError.d.ts +15 -28
  167. package/dist/error/JoseHeaderError.d.ts.map +1 -1
  168. package/dist/error/JoseHeaderError.mjs +24 -40
  169. package/dist/error/JoseHeaderError.mjs.map +1 -1
  170. package/dist/error/JoseHeaderErrorCodes.d.ts +3 -0
  171. package/dist/error/JoseHeaderErrorCodes.d.ts.map +1 -0
  172. package/dist/error/JoseHeaderErrorCodes.mjs +11 -0
  173. package/dist/error/JoseHeaderErrorCodes.mjs.map +1 -0
  174. package/dist/error/ServerError.d.ts +7 -7
  175. package/dist/error/ServerError.mjs +14 -14
  176. package/dist/error/ServerError.mjs.map +1 -1
  177. package/dist/index.cjs +8727 -8978
  178. package/dist/index.cjs.map +1 -1
  179. package/dist/index.d.ts +96 -96
  180. package/dist/index.d.ts.map +1 -1
  181. package/dist/index.mjs +17 -7
  182. package/dist/index.mjs.map +1 -1
  183. package/dist/logger/Logger.d.ts +95 -95
  184. package/dist/logger/Logger.d.ts.map +1 -1
  185. package/dist/logger/Logger.mjs +188 -198
  186. package/dist/logger/Logger.mjs.map +1 -1
  187. package/dist/network/INetworkModule.d.ts +29 -29
  188. package/dist/network/INetworkModule.d.ts.map +1 -1
  189. package/dist/network/INetworkModule.mjs +14 -15
  190. package/dist/network/INetworkModule.mjs.map +1 -1
  191. package/dist/network/NetworkManager.d.ts +33 -33
  192. package/dist/network/NetworkManager.d.ts.map +1 -1
  193. package/dist/network/NetworkManager.mjs +36 -35
  194. package/dist/network/NetworkManager.mjs.map +1 -1
  195. package/dist/network/RequestThumbprint.d.ts +16 -16
  196. package/dist/network/ThrottlingUtils.d.ts +42 -42
  197. package/dist/network/ThrottlingUtils.mjs +95 -95
  198. package/dist/network/ThrottlingUtils.mjs.map +1 -1
  199. package/dist/packageMetadata.d.ts +2 -2
  200. package/dist/packageMetadata.mjs +4 -4
  201. package/dist/packageMetadata.mjs.map +1 -1
  202. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  203. package/dist/request/AuthenticationHeaderParser.d.ts.map +1 -1
  204. package/dist/request/AuthenticationHeaderParser.mjs +58 -57
  205. package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
  206. package/dist/request/BaseAuthRequest.d.ts +40 -40
  207. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  208. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  209. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  210. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  211. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  212. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  213. package/dist/request/CommonRefreshTokenRequest.d.ts +19 -19
  214. package/dist/request/CommonSilentFlowRequest.d.ts +18 -18
  215. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  216. package/dist/request/NativeRequest.d.ts +19 -19
  217. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  218. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  219. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  220. package/dist/request/RequestParameterBuilder.mjs +383 -383
  221. package/dist/request/RequestParameterBuilder.mjs.map +1 -1
  222. package/dist/request/RequestValidator.d.ts +33 -33
  223. package/dist/request/RequestValidator.d.ts.map +1 -1
  224. package/dist/request/RequestValidator.mjs +83 -84
  225. package/dist/request/RequestValidator.mjs.map +1 -1
  226. package/dist/request/ScopeSet.d.ts +88 -88
  227. package/dist/request/ScopeSet.d.ts.map +1 -1
  228. package/dist/request/ScopeSet.mjs +201 -199
  229. package/dist/request/ScopeSet.mjs.map +1 -1
  230. package/dist/request/StoreInCache.d.ts +8 -8
  231. package/dist/response/AuthenticationResult.d.ts +41 -39
  232. package/dist/response/AuthenticationResult.d.ts.map +1 -1
  233. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  234. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  235. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  236. package/dist/response/IMDSBadResponse.d.ts +4 -4
  237. package/dist/response/ResponseHandler.d.ts +67 -66
  238. package/dist/response/ResponseHandler.d.ts.map +1 -1
  239. package/dist/response/ResponseHandler.mjs +316 -297
  240. package/dist/response/ResponseHandler.mjs.map +1 -1
  241. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  242. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -44
  243. package/dist/response/ServerAuthorizationTokenResponse.d.ts.map +1 -1
  244. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  245. package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -1
  246. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  247. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  248. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -1
  249. package/dist/telemetry/performance/PerformanceClient.mjs +409 -408
  250. package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
  251. package/dist/telemetry/performance/PerformanceEvent.d.ts +433 -426
  252. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -1
  253. package/dist/telemetry/performance/PerformanceEvent.mjs +234 -226
  254. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  255. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  256. package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -1
  257. package/dist/telemetry/performance/StubPerformanceClient.mjs +77 -57
  258. package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
  259. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  260. package/dist/telemetry/server/ServerTelemetryManager.d.ts.map +1 -1
  261. package/dist/telemetry/server/ServerTelemetryManager.mjs +197 -198
  262. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  263. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  264. package/dist/url/IUri.d.ts +12 -12
  265. package/dist/url/UrlString.d.ts +83 -83
  266. package/dist/url/UrlString.d.ts.map +1 -1
  267. package/dist/url/UrlString.mjs +283 -283
  268. package/dist/url/UrlString.mjs.map +1 -1
  269. package/dist/utils/Constants.d.ts +366 -353
  270. package/dist/utils/Constants.d.ts.map +1 -1
  271. package/dist/utils/Constants.mjs +377 -360
  272. package/dist/utils/Constants.mjs.map +1 -1
  273. package/dist/utils/FunctionWrappers.d.ts +28 -0
  274. package/dist/utils/FunctionWrappers.d.ts.map +1 -0
  275. package/dist/utils/FunctionWrappers.mjs +90 -0
  276. package/dist/utils/FunctionWrappers.mjs.map +1 -0
  277. package/dist/utils/MsalTypes.d.ts +6 -6
  278. package/dist/utils/ProtocolUtils.d.ts +42 -42
  279. package/dist/utils/ProtocolUtils.d.ts.map +1 -1
  280. package/dist/utils/ProtocolUtils.mjs +71 -73
  281. package/dist/utils/ProtocolUtils.mjs.map +1 -1
  282. package/dist/utils/StringUtils.d.ts +40 -53
  283. package/dist/utils/StringUtils.d.ts.map +1 -1
  284. package/dist/utils/StringUtils.mjs +95 -126
  285. package/dist/utils/StringUtils.mjs.map +1 -1
  286. package/dist/utils/TimeUtils.d.ts +27 -27
  287. package/dist/utils/TimeUtils.mjs +45 -45
  288. package/dist/utils/TimeUtils.mjs.map +1 -1
  289. package/package.json +6 -4
  290. package/src/account/AccountInfo.ts +44 -0
  291. package/src/account/AuthToken.ts +71 -0
  292. package/src/account/CcsCredential.ts +16 -0
  293. package/src/account/ClientCredentials.ts +20 -0
  294. package/src/account/ClientInfo.ts +67 -0
  295. package/src/account/TokenClaims.ts +70 -0
  296. package/src/authority/Authority.ts +1207 -0
  297. package/src/authority/AuthorityFactory.ts +118 -0
  298. package/src/authority/AuthorityMetadata.ts +953 -0
  299. package/src/authority/AuthorityOptions.ts +40 -0
  300. package/src/authority/AuthorityType.ts +15 -0
  301. package/src/authority/AzureRegion.ts +7 -0
  302. package/src/authority/AzureRegionConfiguration.ts +16 -0
  303. package/src/authority/CloudDiscoveryMetadata.ts +10 -0
  304. package/src/authority/CloudInstanceDiscoveryErrorResponse.ts +26 -0
  305. package/src/authority/CloudInstanceDiscoveryResponse.ts +21 -0
  306. package/src/authority/ImdsOptions.ts +10 -0
  307. package/src/authority/OIDCOptions.ts +14 -0
  308. package/src/authority/OpenIdConfigResponse.ts +24 -0
  309. package/src/authority/ProtocolMode.ts +13 -0
  310. package/src/authority/RegionDiscovery.ts +196 -0
  311. package/src/authority/RegionDiscoveryMetadata.ts +15 -0
  312. package/src/broker/nativeBroker/INativeBrokerPlugin.ts +29 -0
  313. package/src/cache/CacheManager.ts +1579 -0
  314. package/src/cache/entities/AccessTokenEntity.ts +167 -0
  315. package/src/cache/entities/AccountEntity.ts +314 -0
  316. package/src/cache/entities/AppMetadataEntity.ts +91 -0
  317. package/src/cache/entities/AuthorityMetadataEntity.ts +112 -0
  318. package/src/cache/entities/CacheRecord.ts +33 -0
  319. package/src/cache/entities/CredentialEntity.ts +220 -0
  320. package/src/cache/entities/IdTokenEntity.ts +74 -0
  321. package/src/cache/entities/RefreshTokenEntity.ts +78 -0
  322. package/src/cache/entities/ServerTelemetryEntity.ts +38 -0
  323. package/src/cache/entities/ThrottlingEntity.ts +36 -0
  324. package/src/cache/interface/ICacheManager.ts +218 -0
  325. package/src/cache/interface/ICachePlugin.ts +11 -0
  326. package/src/cache/interface/ISerializableTokenCache.ts +9 -0
  327. package/src/cache/persistence/TokenCacheContext.ts +39 -0
  328. package/src/cache/utils/CacheTypes.ts +93 -0
  329. package/src/client/AuthorizationCodeClient.ts +736 -0
  330. package/src/client/BaseClient.ts +208 -0
  331. package/src/client/RefreshTokenClient.ts +399 -0
  332. package/src/client/SilentFlowClient.ts +239 -0
  333. package/src/config/AppTokenProvider.ts +47 -0
  334. package/src/config/ClientConfiguration.ts +286 -0
  335. package/src/crypto/ICrypto.ts +112 -0
  336. package/src/crypto/IGuidGenerator.ts +9 -0
  337. package/src/crypto/JoseHeader.ts +58 -0
  338. package/src/crypto/PopTokenGenerator.ts +160 -0
  339. package/src/crypto/SignedHttpRequest.ts +16 -0
  340. package/src/error/AuthError.ts +83 -0
  341. package/src/error/AuthErrorCodes.ts +10 -0
  342. package/src/error/ClientAuthError.ts +333 -0
  343. package/src/error/ClientAuthErrorCodes.ts +51 -0
  344. package/src/error/ClientConfigurationError.ts +210 -0
  345. package/src/error/ClientConfigurationErrorCodes.ts +28 -0
  346. package/src/error/InteractionRequiredAuthError.ts +139 -0
  347. package/src/error/InteractionRequiredAuthErrorCodes.ts +13 -0
  348. package/src/error/JoseHeaderError.ts +32 -0
  349. package/src/error/JoseHeaderErrorCodes.ts +7 -0
  350. package/src/error/ServerError.ts +18 -0
  351. package/src/index.ts +226 -0
  352. package/src/logger/Logger.ts +272 -0
  353. package/src/network/INetworkModule.ts +60 -0
  354. package/src/network/NetworkManager.ts +76 -0
  355. package/src/network/RequestThumbprint.ts +22 -0
  356. package/src/network/ThrottlingUtils.ts +156 -0
  357. package/src/packageMetadata.ts +3 -0
  358. package/src/request/AuthenticationHeaderParser.ts +92 -0
  359. package/src/request/BaseAuthRequest.ts +46 -0
  360. package/src/request/CommonAuthorizationCodeRequest.ts +33 -0
  361. package/src/request/CommonAuthorizationUrlRequest.ts +56 -0
  362. package/src/request/CommonClientCredentialRequest.ts +23 -0
  363. package/src/request/CommonDeviceCodeRequest.ts +31 -0
  364. package/src/request/CommonEndSessionRequest.ts +27 -0
  365. package/src/request/CommonOnBehalfOfRequest.ts +19 -0
  366. package/src/request/CommonRefreshTokenRequest.ts +25 -0
  367. package/src/request/CommonSilentFlowRequest.ts +24 -0
  368. package/src/request/CommonUsernamePasswordRequest.ts +23 -0
  369. package/src/request/NativeRequest.ts +25 -0
  370. package/src/request/NativeSignOutRequest.ts +10 -0
  371. package/src/request/RequestParameterBuilder.ts +613 -0
  372. package/src/request/RequestValidator.ts +116 -0
  373. package/src/request/ScopeSet.ts +246 -0
  374. package/src/request/StoreInCache.ts +16 -0
  375. package/src/response/AuthenticationResult.ts +47 -0
  376. package/src/response/AuthorizationCodePayload.ts +18 -0
  377. package/src/response/DeviceCodeResponse.ts +31 -0
  378. package/src/response/ExternalTokenResponse.ts +24 -0
  379. package/src/response/IMDSBadResponse.ts +9 -0
  380. package/src/response/ResponseHandler.ts +634 -0
  381. package/src/response/ServerAuthorizationCodeResponse.ts +33 -0
  382. package/src/response/ServerAuthorizationTokenResponse.ts +54 -0
  383. package/src/telemetry/performance/IPerformanceClient.ts +71 -0
  384. package/src/telemetry/performance/IPerformanceMeasurement.ts +10 -0
  385. package/src/telemetry/performance/PerformanceClient.ts +636 -0
  386. package/src/telemetry/performance/PerformanceEvent.ts +542 -0
  387. package/src/telemetry/performance/StubPerformanceClient.ts +101 -0
  388. package/src/telemetry/server/ServerTelemetryManager.ts +274 -0
  389. package/src/telemetry/server/ServerTelemetryRequest.ts +13 -0
  390. package/src/url/IUri.ts +17 -0
  391. package/src/url/UrlString.ts +373 -0
  392. package/src/utils/Constants.ts +444 -0
  393. package/src/utils/FunctionWrappers.ts +105 -0
  394. package/src/utils/MsalTypes.ts +9 -0
  395. package/src/utils/ProtocolUtils.ts +120 -0
  396. package/src/utils/StringUtils.ts +106 -0
  397. package/src/utils/TimeUtils.ts +51 -0
  398. package/dist/account/DecodedAuthToken.d.ts +0 -9
  399. package/dist/account/DecodedAuthToken.d.ts.map +0 -1
@@ -0,0 +1,208 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ ClientConfiguration,
8
+ buildClientConfiguration,
9
+ CommonClientConfiguration,
10
+ } from "../config/ClientConfiguration";
11
+ import { INetworkModule } from "../network/INetworkModule";
12
+ import { NetworkManager, NetworkResponse } from "../network/NetworkManager";
13
+ import { ICrypto } from "../crypto/ICrypto";
14
+ import { Authority } from "../authority/Authority";
15
+ import { Logger } from "../logger/Logger";
16
+ import { Constants, HeaderNames } from "../utils/Constants";
17
+ import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse";
18
+ import { CacheManager } from "../cache/CacheManager";
19
+ import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager";
20
+ import { RequestThumbprint } from "../network/RequestThumbprint";
21
+ import { version, name } from "../packageMetadata";
22
+ import {
23
+ createClientAuthError,
24
+ ClientAuthErrorCodes,
25
+ } from "../error/ClientAuthError";
26
+ import { CcsCredential, CcsCredentialType } from "../account/CcsCredential";
27
+ import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo";
28
+ import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient";
29
+ import { RequestParameterBuilder } from "../request/RequestParameterBuilder";
30
+ import { BaseAuthRequest } from "../request/BaseAuthRequest";
31
+ import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent";
32
+
33
+ /**
34
+ * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.
35
+ * @internal
36
+ */
37
+ export abstract class BaseClient {
38
+ // Logger object
39
+ public logger: Logger;
40
+
41
+ // Application config
42
+ protected config: CommonClientConfiguration;
43
+
44
+ // Crypto Interface
45
+ protected cryptoUtils: ICrypto;
46
+
47
+ // Storage Interface
48
+ protected cacheManager: CacheManager;
49
+
50
+ // Network Interface
51
+ protected networkClient: INetworkModule;
52
+
53
+ // Server Telemetry Manager
54
+ protected serverTelemetryManager: ServerTelemetryManager | null;
55
+
56
+ // Network Manager
57
+ protected networkManager: NetworkManager;
58
+
59
+ // Default authority object
60
+ public authority: Authority;
61
+
62
+ // Performance telemetry client
63
+ protected performanceClient?: IPerformanceClient;
64
+
65
+ protected constructor(
66
+ configuration: ClientConfiguration,
67
+ performanceClient?: IPerformanceClient
68
+ ) {
69
+ // Set the configuration
70
+ this.config = buildClientConfiguration(configuration);
71
+
72
+ // Initialize the logger
73
+ this.logger = new Logger(this.config.loggerOptions, name, version);
74
+
75
+ // Initialize crypto
76
+ this.cryptoUtils = this.config.cryptoInterface;
77
+
78
+ // Initialize storage interface
79
+ this.cacheManager = this.config.storageInterface;
80
+
81
+ // Set the network interface
82
+ this.networkClient = this.config.networkInterface;
83
+
84
+ // Set the NetworkManager
85
+ this.networkManager = new NetworkManager(
86
+ this.networkClient,
87
+ this.cacheManager
88
+ );
89
+
90
+ // Set TelemetryManager
91
+ this.serverTelemetryManager = this.config.serverTelemetryManager;
92
+
93
+ // set Authority
94
+ this.authority = this.config.authOptions.authority;
95
+
96
+ // set performance telemetry client
97
+ this.performanceClient = performanceClient;
98
+ }
99
+
100
+ /**
101
+ * Creates default headers for requests to token endpoint
102
+ */
103
+ protected createTokenRequestHeaders(
104
+ ccsCred?: CcsCredential
105
+ ): Record<string, string> {
106
+ const headers: Record<string, string> = {};
107
+ headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;
108
+ if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {
109
+ switch (ccsCred.type) {
110
+ case CcsCredentialType.HOME_ACCOUNT_ID:
111
+ try {
112
+ const clientInfo = buildClientInfoFromHomeAccountId(
113
+ ccsCred.credential
114
+ );
115
+ headers[
116
+ HeaderNames.CCS_HEADER
117
+ ] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;
118
+ } catch (e) {
119
+ this.logger.verbose(
120
+ "Could not parse home account ID for CCS Header: " +
121
+ e
122
+ );
123
+ }
124
+ break;
125
+ case CcsCredentialType.UPN:
126
+ headers[
127
+ HeaderNames.CCS_HEADER
128
+ ] = `UPN: ${ccsCred.credential}`;
129
+ break;
130
+ }
131
+ }
132
+ return headers;
133
+ }
134
+
135
+ /**
136
+ * Http post to token endpoint
137
+ * @param tokenEndpoint
138
+ * @param queryString
139
+ * @param headers
140
+ * @param thumbprint
141
+ */
142
+ protected async executePostToTokenEndpoint(
143
+ tokenEndpoint: string,
144
+ queryString: string,
145
+ headers: Record<string, string>,
146
+ thumbprint: RequestThumbprint,
147
+ correlationId: string
148
+ ): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {
149
+ this.performanceClient?.addQueueMeasurement(
150
+ PerformanceEvents.BaseClientExecutePostToTokenEndpoint,
151
+ correlationId
152
+ );
153
+ const response =
154
+ await this.networkManager.sendPostRequest<ServerAuthorizationTokenResponse>(
155
+ thumbprint,
156
+ tokenEndpoint,
157
+ { body: queryString, headers: headers }
158
+ );
159
+ this.performanceClient?.addFields(
160
+ {
161
+ refreshTokenSize: response.body.refresh_token?.length || 0,
162
+ httpVerToken:
163
+ response.headers?.[HeaderNames.X_MS_HTTP_VERSION] || "",
164
+ },
165
+ correlationId
166
+ );
167
+
168
+ if (
169
+ this.config.serverTelemetryManager &&
170
+ response.status < 500 &&
171
+ response.status !== 429
172
+ ) {
173
+ // Telemetry data successfully logged by server, clear Telemetry cache
174
+ this.config.serverTelemetryManager.clearTelemetryCache();
175
+ }
176
+
177
+ return response;
178
+ }
179
+
180
+ /**
181
+ * Updates the authority object of the client. Endpoint discovery must be completed.
182
+ * @param updatedAuthority
183
+ */
184
+ updateAuthority(updatedAuthority: Authority): void {
185
+ if (!updatedAuthority.discoveryComplete()) {
186
+ throw createClientAuthError(
187
+ ClientAuthErrorCodes.endpointResolutionError
188
+ );
189
+ }
190
+ this.authority = updatedAuthority;
191
+ }
192
+
193
+ /**
194
+ * Creates query string for the /token request
195
+ * @param request
196
+ */
197
+ createTokenQueryParameters(request: BaseAuthRequest): string {
198
+ const parameterBuilder = new RequestParameterBuilder();
199
+
200
+ if (request.tokenQueryParameters) {
201
+ parameterBuilder.addExtraQueryParameters(
202
+ request.tokenQueryParameters
203
+ );
204
+ }
205
+
206
+ return parameterBuilder.createQueryString();
207
+ }
208
+ }
@@ -0,0 +1,399 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ ClientConfiguration,
8
+ isOidcProtocolMode,
9
+ } from "../config/ClientConfiguration";
10
+ import { BaseClient } from "./BaseClient";
11
+ import { CommonRefreshTokenRequest } from "../request/CommonRefreshTokenRequest";
12
+ import { Authority } from "../authority/Authority";
13
+ import { ServerAuthorizationTokenResponse } from "../response/ServerAuthorizationTokenResponse";
14
+ import { RequestParameterBuilder } from "../request/RequestParameterBuilder";
15
+ import {
16
+ GrantType,
17
+ AuthenticationScheme,
18
+ Errors,
19
+ HeaderNames,
20
+ } from "../utils/Constants";
21
+ import { ResponseHandler } from "../response/ResponseHandler";
22
+ import { AuthenticationResult } from "../response/AuthenticationResult";
23
+ import { PopTokenGenerator } from "../crypto/PopTokenGenerator";
24
+ import { StringUtils } from "../utils/StringUtils";
25
+ import { RequestThumbprint } from "../network/RequestThumbprint";
26
+ import { NetworkResponse } from "../network/NetworkManager";
27
+ import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest";
28
+ import {
29
+ createClientConfigurationError,
30
+ ClientConfigurationErrorCodes,
31
+ } from "../error/ClientConfigurationError";
32
+ import {
33
+ createClientAuthError,
34
+ ClientAuthErrorCodes,
35
+ } from "../error/ClientAuthError";
36
+ import { ServerError } from "../error/ServerError";
37
+ import { TimeUtils } from "../utils/TimeUtils";
38
+ import { UrlString } from "../url/UrlString";
39
+ import { CcsCredentialType } from "../account/CcsCredential";
40
+ import { buildClientInfoFromHomeAccountId } from "../account/ClientInfo";
41
+ import {
42
+ InteractionRequiredAuthError,
43
+ InteractionRequiredAuthErrorCodes,
44
+ createInteractionRequiredAuthError,
45
+ } from "../error/InteractionRequiredAuthError";
46
+ import { PerformanceEvents } from "../telemetry/performance/PerformanceEvent";
47
+ import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient";
48
+ import { invokeAsync } from "../utils/FunctionWrappers";
49
+ /**
50
+ * OAuth2.0 refresh token client
51
+ * @internal
52
+ */
53
+ export class RefreshTokenClient extends BaseClient {
54
+ constructor(
55
+ configuration: ClientConfiguration,
56
+ performanceClient?: IPerformanceClient
57
+ ) {
58
+ super(configuration, performanceClient);
59
+ }
60
+ public async acquireToken(
61
+ request: CommonRefreshTokenRequest
62
+ ): Promise<AuthenticationResult> {
63
+ this.performanceClient?.addQueueMeasurement(
64
+ PerformanceEvents.RefreshTokenClientAcquireToken,
65
+ request.correlationId
66
+ );
67
+
68
+ const reqTimestamp = TimeUtils.nowSeconds();
69
+ const response = await invokeAsync(
70
+ this.executeTokenRequest.bind(this),
71
+ PerformanceEvents.RefreshTokenClientExecuteTokenRequest,
72
+ this.logger,
73
+ this.performanceClient,
74
+ request.correlationId
75
+ )(request, this.authority);
76
+
77
+ // Retrieve requestId from response headers
78
+ const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];
79
+ const responseHandler = new ResponseHandler(
80
+ this.config.authOptions.clientId,
81
+ this.cacheManager,
82
+ this.cryptoUtils,
83
+ this.logger,
84
+ this.config.serializableCache,
85
+ this.config.persistencePlugin
86
+ );
87
+ responseHandler.validateTokenResponse(response.body);
88
+
89
+ return invokeAsync(
90
+ responseHandler.handleServerTokenResponse.bind(responseHandler),
91
+ PerformanceEvents.HandleServerTokenResponse,
92
+ this.logger,
93
+ this.performanceClient,
94
+ request.correlationId
95
+ )(
96
+ response.body,
97
+ this.authority,
98
+ reqTimestamp,
99
+ request,
100
+ undefined,
101
+ undefined,
102
+ true,
103
+ request.forceCache,
104
+ requestId
105
+ );
106
+ }
107
+
108
+ /**
109
+ * Gets cached refresh token and attaches to request, then calls acquireToken API
110
+ * @param request
111
+ */
112
+ public async acquireTokenByRefreshToken(
113
+ request: CommonSilentFlowRequest
114
+ ): Promise<AuthenticationResult> {
115
+ // Cannot renew token if no request object is given.
116
+ if (!request) {
117
+ throw createClientConfigurationError(
118
+ ClientConfigurationErrorCodes.tokenRequestEmpty
119
+ );
120
+ }
121
+
122
+ this.performanceClient?.addQueueMeasurement(
123
+ PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,
124
+ request.correlationId
125
+ );
126
+
127
+ // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases
128
+ if (!request.account) {
129
+ throw createClientAuthError(
130
+ ClientAuthErrorCodes.noAccountInSilentRequest
131
+ );
132
+ }
133
+
134
+ // try checking if FOCI is enabled for the given application
135
+ const isFOCI = this.cacheManager.isAppMetadataFOCI(
136
+ request.account.environment
137
+ );
138
+
139
+ // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest
140
+ if (isFOCI) {
141
+ try {
142
+ return invokeAsync(
143
+ this.acquireTokenWithCachedRefreshToken.bind(this),
144
+ PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
145
+ this.logger,
146
+ this.performanceClient,
147
+ request.correlationId
148
+ )(request, true);
149
+ } catch (e) {
150
+ const noFamilyRTInCache =
151
+ e instanceof InteractionRequiredAuthError &&
152
+ e.errorCode ===
153
+ InteractionRequiredAuthErrorCodes.noTokensFound;
154
+ const clientMismatchErrorWithFamilyRT =
155
+ e instanceof ServerError &&
156
+ e.errorCode === Errors.INVALID_GRANT_ERROR &&
157
+ e.subError === Errors.CLIENT_MISMATCH_ERROR;
158
+
159
+ // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)
160
+ if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {
161
+ return invokeAsync(
162
+ this.acquireTokenWithCachedRefreshToken.bind(this),
163
+ PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
164
+ this.logger,
165
+ this.performanceClient,
166
+ request.correlationId
167
+ )(request, false);
168
+ // throw in all other cases
169
+ } else {
170
+ throw e;
171
+ }
172
+ }
173
+ }
174
+ // fall back to application refresh token acquisition
175
+ return invokeAsync(
176
+ this.acquireTokenWithCachedRefreshToken.bind(this),
177
+ PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
178
+ this.logger,
179
+ this.performanceClient,
180
+ request.correlationId
181
+ )(request, false);
182
+ }
183
+
184
+ /**
185
+ * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached
186
+ * @param request
187
+ */
188
+ private async acquireTokenWithCachedRefreshToken(
189
+ request: CommonSilentFlowRequest,
190
+ foci: boolean
191
+ ) {
192
+ this.performanceClient?.addQueueMeasurement(
193
+ PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,
194
+ request.correlationId
195
+ );
196
+
197
+ // fetches family RT or application RT based on FOCI value
198
+ const refreshToken = this.cacheManager.getRefreshToken(
199
+ request.account,
200
+ foci
201
+ );
202
+
203
+ if (!refreshToken) {
204
+ throw createInteractionRequiredAuthError(
205
+ InteractionRequiredAuthErrorCodes.noTokensFound
206
+ );
207
+ }
208
+ // attach cached RT size to the current measurement
209
+
210
+ const refreshTokenRequest: CommonRefreshTokenRequest = {
211
+ ...request,
212
+ refreshToken: refreshToken.secret,
213
+ authenticationScheme:
214
+ request.authenticationScheme || AuthenticationScheme.BEARER,
215
+ ccsCredential: {
216
+ credential: request.account.homeAccountId,
217
+ type: CcsCredentialType.HOME_ACCOUNT_ID,
218
+ },
219
+ };
220
+
221
+ return invokeAsync(
222
+ this.acquireToken.bind(this),
223
+ PerformanceEvents.RefreshTokenClientAcquireToken,
224
+ this.logger,
225
+ this.performanceClient,
226
+ request.correlationId
227
+ )(refreshTokenRequest);
228
+ }
229
+
230
+ /**
231
+ * Constructs the network message and makes a NW call to the underlying secure token service
232
+ * @param request
233
+ * @param authority
234
+ */
235
+ private async executeTokenRequest(
236
+ request: CommonRefreshTokenRequest,
237
+ authority: Authority
238
+ ): Promise<NetworkResponse<ServerAuthorizationTokenResponse>> {
239
+ this.performanceClient?.addQueueMeasurement(
240
+ PerformanceEvents.RefreshTokenClientExecuteTokenRequest,
241
+ request.correlationId
242
+ );
243
+
244
+ const queryParametersString = this.createTokenQueryParameters(request);
245
+ const endpoint = UrlString.appendQueryString(
246
+ authority.tokenEndpoint,
247
+ queryParametersString
248
+ );
249
+
250
+ const requestBody = await invokeAsync(
251
+ this.createTokenRequestBody.bind(this),
252
+ PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,
253
+ this.logger,
254
+ this.performanceClient,
255
+ request.correlationId
256
+ )(request);
257
+ const headers: Record<string, string> = this.createTokenRequestHeaders(
258
+ request.ccsCredential
259
+ );
260
+ const thumbprint: RequestThumbprint = {
261
+ clientId: this.config.authOptions.clientId,
262
+ authority: authority.canonicalAuthority,
263
+ scopes: request.scopes,
264
+ claims: request.claims,
265
+ authenticationScheme: request.authenticationScheme,
266
+ resourceRequestMethod: request.resourceRequestMethod,
267
+ resourceRequestUri: request.resourceRequestUri,
268
+ shrClaims: request.shrClaims,
269
+ sshKid: request.sshKid,
270
+ };
271
+
272
+ return invokeAsync(
273
+ this.executePostToTokenEndpoint.bind(this),
274
+ PerformanceEvents.BaseClientExecutePostToTokenEndpoint,
275
+ this.logger,
276
+ this.performanceClient,
277
+ request.correlationId
278
+ )(endpoint, requestBody, headers, thumbprint, request.correlationId);
279
+ }
280
+
281
+ /**
282
+ * Helper function to create the token request body
283
+ * @param request
284
+ */
285
+ private async createTokenRequestBody(
286
+ request: CommonRefreshTokenRequest
287
+ ): Promise<string> {
288
+ this.performanceClient?.addQueueMeasurement(
289
+ PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,
290
+ request.correlationId
291
+ );
292
+
293
+ const correlationId = request.correlationId;
294
+ const parameterBuilder = new RequestParameterBuilder();
295
+
296
+ parameterBuilder.addClientId(this.config.authOptions.clientId);
297
+
298
+ parameterBuilder.addScopes(
299
+ request.scopes,
300
+ true,
301
+ this.config.authOptions.authority.options.OIDCOptions?.defaultScopes
302
+ );
303
+
304
+ parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);
305
+
306
+ parameterBuilder.addClientInfo();
307
+
308
+ parameterBuilder.addLibraryInfo(this.config.libraryInfo);
309
+ parameterBuilder.addApplicationTelemetry(
310
+ this.config.telemetry.application
311
+ );
312
+ parameterBuilder.addThrottling();
313
+
314
+ if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {
315
+ parameterBuilder.addServerTelemetry(this.serverTelemetryManager);
316
+ }
317
+
318
+ parameterBuilder.addCorrelationId(correlationId);
319
+
320
+ parameterBuilder.addRefreshToken(request.refreshToken);
321
+
322
+ if (this.config.clientCredentials.clientSecret) {
323
+ parameterBuilder.addClientSecret(
324
+ this.config.clientCredentials.clientSecret
325
+ );
326
+ }
327
+
328
+ if (this.config.clientCredentials.clientAssertion) {
329
+ const clientAssertion =
330
+ this.config.clientCredentials.clientAssertion;
331
+ parameterBuilder.addClientAssertion(clientAssertion.assertion);
332
+ parameterBuilder.addClientAssertionType(
333
+ clientAssertion.assertionType
334
+ );
335
+ }
336
+
337
+ if (request.authenticationScheme === AuthenticationScheme.POP) {
338
+ const popTokenGenerator = new PopTokenGenerator(
339
+ this.cryptoUtils,
340
+ this.performanceClient
341
+ );
342
+ const reqCnfData = await invokeAsync(
343
+ popTokenGenerator.generateCnf.bind(popTokenGenerator),
344
+ PerformanceEvents.PopTokenGenerateCnf,
345
+ this.logger,
346
+ this.performanceClient,
347
+ request.correlationId
348
+ )(request, this.logger);
349
+ // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)
350
+ parameterBuilder.addPopToken(reqCnfData.reqCnfString);
351
+ } else if (request.authenticationScheme === AuthenticationScheme.SSH) {
352
+ if (request.sshJwk) {
353
+ parameterBuilder.addSshJwk(request.sshJwk);
354
+ } else {
355
+ throw createClientConfigurationError(
356
+ ClientConfigurationErrorCodes.missingSshJwk
357
+ );
358
+ }
359
+ }
360
+
361
+ if (
362
+ !StringUtils.isEmptyObj(request.claims) ||
363
+ (this.config.authOptions.clientCapabilities &&
364
+ this.config.authOptions.clientCapabilities.length > 0)
365
+ ) {
366
+ parameterBuilder.addClaims(
367
+ request.claims,
368
+ this.config.authOptions.clientCapabilities
369
+ );
370
+ }
371
+
372
+ if (
373
+ this.config.systemOptions.preventCorsPreflight &&
374
+ request.ccsCredential
375
+ ) {
376
+ switch (request.ccsCredential.type) {
377
+ case CcsCredentialType.HOME_ACCOUNT_ID:
378
+ try {
379
+ const clientInfo = buildClientInfoFromHomeAccountId(
380
+ request.ccsCredential.credential
381
+ );
382
+ parameterBuilder.addCcsOid(clientInfo);
383
+ } catch (e) {
384
+ this.logger.verbose(
385
+ "Could not parse home account ID for CCS Header: " +
386
+ e
387
+ );
388
+ }
389
+ break;
390
+ case CcsCredentialType.UPN:
391
+ parameterBuilder.addCcsUpn(
392
+ request.ccsCredential.credential
393
+ );
394
+ break;
395
+ }
396
+ }
397
+ return parameterBuilder.createQueryString();
398
+ }
399
+ }