@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,239 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { BaseClient } from "./BaseClient";
7
+ import { ClientConfiguration } from "../config/ClientConfiguration";
8
+ import { CommonSilentFlowRequest } from "../request/CommonSilentFlowRequest";
9
+ import { AuthenticationResult } from "../response/AuthenticationResult";
10
+ import { TimeUtils } from "../utils/TimeUtils";
11
+ import { RefreshTokenClient } from "./RefreshTokenClient";
12
+ import {
13
+ ClientAuthError,
14
+ ClientAuthErrorCodes,
15
+ createClientAuthError,
16
+ } from "../error/ClientAuthError";
17
+ import {
18
+ createClientConfigurationError,
19
+ ClientConfigurationErrorCodes,
20
+ } from "../error/ClientConfigurationError";
21
+ import { ResponseHandler } from "../response/ResponseHandler";
22
+ import { CacheRecord } from "../cache/entities/CacheRecord";
23
+ import { CacheOutcome } from "../utils/Constants";
24
+ import { IPerformanceClient } from "../telemetry/performance/IPerformanceClient";
25
+ import { StringUtils } from "../utils/StringUtils";
26
+ import { checkMaxAge, extractTokenClaims } from "../account/AuthToken";
27
+ import { TokenClaims } from "../account/TokenClaims";
28
+
29
+ /** @internal */
30
+ export class SilentFlowClient extends BaseClient {
31
+ constructor(
32
+ configuration: ClientConfiguration,
33
+ performanceClient?: IPerformanceClient
34
+ ) {
35
+ super(configuration, performanceClient);
36
+ }
37
+
38
+ /**
39
+ * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew
40
+ * the given token and returns the renewed token
41
+ * @param request
42
+ */
43
+ async acquireToken(
44
+ request: CommonSilentFlowRequest
45
+ ): Promise<AuthenticationResult> {
46
+ try {
47
+ const [authResponse, cacheOutcome] = await this.acquireCachedToken(
48
+ request
49
+ );
50
+
51
+ // if the token is not expired but must be refreshed; get a new one in the background
52
+ if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {
53
+ this.logger.info(
54
+ "SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed."
55
+ );
56
+
57
+ // refresh the access token in the background
58
+ const refreshTokenClient = new RefreshTokenClient(
59
+ this.config,
60
+ this.performanceClient
61
+ );
62
+
63
+ refreshTokenClient
64
+ .acquireTokenByRefreshToken(request)
65
+ .catch(() => {
66
+ // do nothing, this is running in the background and no action is to be taken upon success or failure
67
+ });
68
+ }
69
+
70
+ // return the cached token
71
+ return authResponse;
72
+ } catch (e) {
73
+ if (
74
+ e instanceof ClientAuthError &&
75
+ e.errorCode === ClientAuthErrorCodes.tokenRefreshRequired
76
+ ) {
77
+ const refreshTokenClient = new RefreshTokenClient(
78
+ this.config,
79
+ this.performanceClient
80
+ );
81
+ return refreshTokenClient.acquireTokenByRefreshToken(request);
82
+ } else {
83
+ throw e;
84
+ }
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Retrieves token from cache or throws an error if it must be refreshed.
90
+ * @param request
91
+ */
92
+ async acquireCachedToken(
93
+ request: CommonSilentFlowRequest
94
+ ): Promise<[AuthenticationResult, CacheOutcome]> {
95
+ let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;
96
+
97
+ // Cannot renew token if no request object is given.
98
+ if (!request) {
99
+ throw createClientConfigurationError(
100
+ ClientConfigurationErrorCodes.tokenRequestEmpty
101
+ );
102
+ }
103
+
104
+ if (request.forceRefresh) {
105
+ // Must refresh due to present force_refresh flag.
106
+ lastCacheOutcome = CacheOutcome.FORCE_REFRESH_OR_CLAIMS;
107
+ this.serverTelemetryManager?.setCacheOutcome(
108
+ CacheOutcome.FORCE_REFRESH_OR_CLAIMS
109
+ );
110
+ this.logger.info(
111
+ "SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true."
112
+ );
113
+ throw createClientAuthError(
114
+ ClientAuthErrorCodes.tokenRefreshRequired
115
+ );
116
+ } else if (
117
+ !this.config.cacheOptions.claimsBasedCachingEnabled &&
118
+ !StringUtils.isEmptyObj(request.claims)
119
+ ) {
120
+ lastCacheOutcome = CacheOutcome.FORCE_REFRESH_OR_CLAIMS;
121
+ // Must refresh due to request parameters.
122
+ this.logger.info(
123
+ "SilentFlowClient:acquireCachedToken - Skipping cache because claims-based caching is disabled and claims were requested."
124
+ );
125
+ throw createClientAuthError(
126
+ ClientAuthErrorCodes.tokenRefreshRequired
127
+ );
128
+ }
129
+
130
+ // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases
131
+ if (!request.account) {
132
+ throw createClientAuthError(
133
+ ClientAuthErrorCodes.noAccountInSilentRequest
134
+ );
135
+ }
136
+
137
+ const environment =
138
+ request.authority || this.authority.getPreferredCache();
139
+
140
+ const cacheRecord = this.cacheManager.readCacheRecord(
141
+ request.account,
142
+ request,
143
+ environment
144
+ );
145
+
146
+ if (!cacheRecord.accessToken) {
147
+ // must refresh due to non-existent access_token
148
+ lastCacheOutcome = CacheOutcome.NO_CACHED_ACCESS_TOKEN;
149
+ this.serverTelemetryManager?.setCacheOutcome(
150
+ CacheOutcome.NO_CACHED_ACCESS_TOKEN
151
+ );
152
+ this.logger.info(
153
+ "SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties."
154
+ );
155
+ throw createClientAuthError(
156
+ ClientAuthErrorCodes.tokenRefreshRequired
157
+ );
158
+ } else if (
159
+ TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||
160
+ TimeUtils.isTokenExpired(
161
+ cacheRecord.accessToken.expiresOn,
162
+ this.config.systemOptions.tokenRenewalOffsetSeconds
163
+ )
164
+ ) {
165
+ // must refresh due to the expires_in value
166
+ lastCacheOutcome = CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED;
167
+ this.serverTelemetryManager?.setCacheOutcome(
168
+ CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED
169
+ );
170
+ this.logger.info(
171
+ `SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within ${this.config.systemOptions.tokenRenewalOffsetSeconds} seconds.`
172
+ );
173
+ throw createClientAuthError(
174
+ ClientAuthErrorCodes.tokenRefreshRequired
175
+ );
176
+ } else if (
177
+ cacheRecord.accessToken.refreshOn &&
178
+ TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)
179
+ ) {
180
+ // must refresh (in the background) due to the refresh_in value
181
+ lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;
182
+ this.serverTelemetryManager?.setCacheOutcome(
183
+ CacheOutcome.PROACTIVELY_REFRESHED
184
+ );
185
+ this.logger.info(
186
+ "SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'."
187
+ );
188
+
189
+ // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead
190
+ }
191
+
192
+ if (this.config.serverTelemetryManager) {
193
+ this.config.serverTelemetryManager.incrementCacheHits();
194
+ }
195
+
196
+ return [
197
+ await this.generateResultFromCacheRecord(cacheRecord, request),
198
+ lastCacheOutcome,
199
+ ];
200
+ }
201
+
202
+ /**
203
+ * Helper function to build response object from the CacheRecord
204
+ * @param cacheRecord
205
+ */
206
+ private async generateResultFromCacheRecord(
207
+ cacheRecord: CacheRecord,
208
+ request: CommonSilentFlowRequest
209
+ ): Promise<AuthenticationResult> {
210
+ let idTokenClaims: TokenClaims | undefined;
211
+ if (cacheRecord.idToken) {
212
+ idTokenClaims = extractTokenClaims(
213
+ cacheRecord.idToken.secret,
214
+ this.config.cryptoInterface.base64Decode
215
+ );
216
+ }
217
+
218
+ // token max_age check
219
+ if (request.maxAge || request.maxAge === 0) {
220
+ const authTime = idTokenClaims?.auth_time;
221
+ if (!authTime) {
222
+ throw createClientAuthError(
223
+ ClientAuthErrorCodes.authTimeNotFound
224
+ );
225
+ }
226
+
227
+ checkMaxAge(authTime, request.maxAge);
228
+ }
229
+
230
+ return await ResponseHandler.generateAuthenticationResult(
231
+ this.cryptoUtils,
232
+ this.authority,
233
+ cacheRecord,
234
+ true,
235
+ request,
236
+ idTokenClaims
237
+ );
238
+ }
239
+ }
@@ -0,0 +1,47 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ /**
7
+ * Extensibility interface, which allows the app developer to return a token, based on the passed-in parameters, instead of fetching tokens from
8
+ * the Identity Provider (AAD).
9
+ * Developers need to construct and return an AppTokenProviderResult object back to MSAL. MSAL will cache the token response
10
+ * in the same way it would do if the result were comming from AAD.
11
+ * This extensibility point is only defined for the client_credential flow, i.e. acquireTokenByClientCredential and
12
+ * meant for Azure SDK to enhance Managed Identity support.
13
+ */
14
+ export interface IAppTokenProvider {
15
+ (
16
+ appTokenProviderParameters: AppTokenProviderParameters
17
+ ): Promise<AppTokenProviderResult>;
18
+ }
19
+
20
+ /**
21
+ * Input object for the IAppTokenProvider extensiblity. MSAL will create this object, which can be used
22
+ * to help create an AppTokenProviderResult.
23
+ *
24
+ * - correlationId - the correlation Id associated with the request
25
+ * - tenantId - the tenant Id for which the token must be provided
26
+ * - scopes - the scopes for which the token must be provided
27
+ * - claims - any extra claims that the token must satisfy
28
+ */
29
+ export type AppTokenProviderParameters = {
30
+ readonly correlationId?: string;
31
+ readonly tenantId: string;
32
+ readonly scopes: Array<string>;
33
+ readonly claims?: string;
34
+ };
35
+
36
+ /**
37
+ * Output object for IAppTokenProvider extensiblity.
38
+ *
39
+ * - accessToken - the actual access token, typically in JWT format, that satisfies the request data AppTokenProviderParameters
40
+ * - expiresInSeconds - how long the tokens has before expiry, in seconds. Similar to the "expires_in" field in an AAD token response.
41
+ * - refreshInSeconds - how long the token has before it should be proactively refreshed. Similar to the "refresh_in" field in an AAD token response.
42
+ */
43
+ export type AppTokenProviderResult = {
44
+ accessToken: string;
45
+ expiresInSeconds: number;
46
+ refreshInSeconds?: number;
47
+ };
@@ -0,0 +1,286 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { INetworkModule } from "../network/INetworkModule";
7
+ import { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from "../crypto/ICrypto";
8
+ import { ILoggerCallback, Logger, LogLevel } from "../logger/Logger";
9
+ import { Constants } from "../utils/Constants";
10
+ import { version } from "../packageMetadata";
11
+ import { Authority } from "../authority/Authority";
12
+ import { AzureCloudInstance } from "../authority/AuthorityOptions";
13
+ import { CacheManager, DefaultStorageClass } from "../cache/CacheManager";
14
+ import { ServerTelemetryManager } from "../telemetry/server/ServerTelemetryManager";
15
+ import { ICachePlugin } from "../cache/interface/ICachePlugin";
16
+ import { ISerializableTokenCache } from "../cache/interface/ISerializableTokenCache";
17
+ import { ClientCredentials } from "../account/ClientCredentials";
18
+ import { ProtocolMode } from "../authority/ProtocolMode";
19
+ import {
20
+ ClientAuthErrorCodes,
21
+ createClientAuthError,
22
+ } from "../error/ClientAuthError";
23
+
24
+ // Token renewal offset default in seconds
25
+ const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;
26
+
27
+ /**
28
+ * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.
29
+ *
30
+ * This object allows you to configure important elements of MSAL functionality:
31
+ * - authOptions - Authentication for application
32
+ * - cryptoInterface - Implementation of crypto functions
33
+ * - libraryInfo - Library metadata
34
+ * - telemetry - Telemetry options and data
35
+ * - loggerOptions - Logging for application
36
+ * - networkInterface - Network implementation
37
+ * - storageInterface - Storage implementation
38
+ * - systemOptions - Additional library options
39
+ * - clientCredentials - Credentials options for confidential clients
40
+ * @internal
41
+ */
42
+ export type ClientConfiguration = {
43
+ authOptions: AuthOptions;
44
+ systemOptions?: SystemOptions;
45
+ loggerOptions?: LoggerOptions;
46
+ cacheOptions?: CacheOptions;
47
+ storageInterface?: CacheManager;
48
+ networkInterface?: INetworkModule;
49
+ cryptoInterface?: ICrypto;
50
+ clientCredentials?: ClientCredentials;
51
+ libraryInfo?: LibraryInfo;
52
+ telemetry?: TelemetryOptions;
53
+ serverTelemetryManager?: ServerTelemetryManager | null;
54
+ persistencePlugin?: ICachePlugin | null;
55
+ serializableCache?: ISerializableTokenCache | null;
56
+ };
57
+
58
+ export type CommonClientConfiguration = {
59
+ authOptions: Required<AuthOptions>;
60
+ systemOptions: Required<SystemOptions>;
61
+ loggerOptions: Required<LoggerOptions>;
62
+ cacheOptions: Required<CacheOptions>;
63
+ storageInterface: CacheManager;
64
+ networkInterface: INetworkModule;
65
+ cryptoInterface: Required<ICrypto>;
66
+ libraryInfo: LibraryInfo;
67
+ telemetry: Required<TelemetryOptions>;
68
+ serverTelemetryManager: ServerTelemetryManager | null;
69
+ clientCredentials: ClientCredentials;
70
+ persistencePlugin: ICachePlugin | null;
71
+ serializableCache: ISerializableTokenCache | null;
72
+ };
73
+
74
+ /**
75
+ * Use this to configure the auth options in the ClientConfiguration object
76
+ *
77
+ * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform
78
+ * - authority - You can configure a specific authority, defaults to " " or "https://login.microsoftonline.com/common"
79
+ * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.
80
+ * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.
81
+ * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.
82
+ * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.
83
+ * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.
84
+ * @internal
85
+ */
86
+ export type AuthOptions = {
87
+ clientId: string;
88
+ authority: Authority;
89
+ clientCapabilities?: Array<string>;
90
+ azureCloudOptions?: AzureCloudOptions;
91
+ skipAuthorityMetadataCache?: boolean;
92
+ };
93
+
94
+ /**
95
+ * Use this to configure token renewal info in the Configuration object
96
+ *
97
+ * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry
98
+ */
99
+ export type SystemOptions = {
100
+ tokenRenewalOffsetSeconds?: number;
101
+ preventCorsPreflight?: boolean;
102
+ };
103
+
104
+ /**
105
+ * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object
106
+ *
107
+ * - loggerCallback - Callback for logger
108
+ * - piiLoggingEnabled - Sets whether pii logging is enabled
109
+ * - logLevel - Sets the level at which logging happens
110
+ * - correlationId - Sets the correlationId printed by the logger
111
+ */
112
+ export type LoggerOptions = {
113
+ loggerCallback?: ILoggerCallback;
114
+ piiLoggingEnabled?: boolean;
115
+ logLevel?: LogLevel;
116
+ correlationId?: string;
117
+ };
118
+
119
+ /**
120
+ * Use this to configure credential cache preferences in the ClientConfiguration object
121
+ *
122
+ * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false.
123
+ */
124
+ export type CacheOptions = {
125
+ claimsBasedCachingEnabled?: boolean;
126
+ };
127
+
128
+ /**
129
+ * Library-specific options
130
+ */
131
+ export type LibraryInfo = {
132
+ sku: string;
133
+ version: string;
134
+ cpu: string;
135
+ os: string;
136
+ };
137
+
138
+ /**
139
+ * AzureCloudInstance specific options
140
+ *
141
+ * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities
142
+ * - tenant - provision to provide the tenant info
143
+ */
144
+ export type AzureCloudOptions = {
145
+ azureCloudInstance: AzureCloudInstance;
146
+ tenant?: string;
147
+ };
148
+
149
+ export type TelemetryOptions = {
150
+ application: ApplicationTelemetry;
151
+ };
152
+
153
+ /**
154
+ * Telemetry information sent on request
155
+ * - appName: Unique string name of an application
156
+ * - appVersion: Version of the application using MSAL
157
+ */
158
+ export type ApplicationTelemetry = {
159
+ appName: string;
160
+ appVersion: string;
161
+ };
162
+
163
+ export const DEFAULT_SYSTEM_OPTIONS: Required<SystemOptions> = {
164
+ tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,
165
+ preventCorsPreflight: false,
166
+ };
167
+
168
+ const DEFAULT_LOGGER_IMPLEMENTATION: Required<LoggerOptions> = {
169
+ loggerCallback: () => {
170
+ // allow users to not set loggerCallback
171
+ },
172
+ piiLoggingEnabled: false,
173
+ logLevel: LogLevel.Info,
174
+ correlationId: Constants.EMPTY_STRING,
175
+ };
176
+
177
+ const DEFAULT_CACHE_OPTIONS: Required<CacheOptions> = {
178
+ claimsBasedCachingEnabled: false,
179
+ };
180
+
181
+ const DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {
182
+ async sendGetRequestAsync<T>(): Promise<T> {
183
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
184
+ },
185
+ async sendPostRequestAsync<T>(): Promise<T> {
186
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
187
+ },
188
+ };
189
+
190
+ const DEFAULT_LIBRARY_INFO: LibraryInfo = {
191
+ sku: Constants.SKU,
192
+ version: version,
193
+ cpu: Constants.EMPTY_STRING,
194
+ os: Constants.EMPTY_STRING,
195
+ };
196
+
197
+ const DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {
198
+ clientSecret: Constants.EMPTY_STRING,
199
+ clientAssertion: undefined,
200
+ };
201
+
202
+ const DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {
203
+ azureCloudInstance: AzureCloudInstance.None,
204
+ tenant: `${Constants.DEFAULT_COMMON_TENANT}`,
205
+ };
206
+
207
+ const DEFAULT_TELEMETRY_OPTIONS: Required<TelemetryOptions> = {
208
+ application: {
209
+ appName: "",
210
+ appVersion: "",
211
+ },
212
+ };
213
+
214
+ /**
215
+ * Function that sets the default options when not explicitly configured from app developer
216
+ *
217
+ * @param Configuration
218
+ *
219
+ * @returns Configuration
220
+ */
221
+ export function buildClientConfiguration({
222
+ authOptions: userAuthOptions,
223
+ systemOptions: userSystemOptions,
224
+ loggerOptions: userLoggerOption,
225
+ cacheOptions: userCacheOptions,
226
+ storageInterface: storageImplementation,
227
+ networkInterface: networkImplementation,
228
+ cryptoInterface: cryptoImplementation,
229
+ clientCredentials: clientCredentials,
230
+ libraryInfo: libraryInfo,
231
+ telemetry: telemetry,
232
+ serverTelemetryManager: serverTelemetryManager,
233
+ persistencePlugin: persistencePlugin,
234
+ serializableCache: serializableCache,
235
+ }: ClientConfiguration): CommonClientConfiguration {
236
+ const loggerOptions = {
237
+ ...DEFAULT_LOGGER_IMPLEMENTATION,
238
+ ...userLoggerOption,
239
+ };
240
+
241
+ return {
242
+ authOptions: buildAuthOptions(userAuthOptions),
243
+ systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },
244
+ loggerOptions: loggerOptions,
245
+ cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },
246
+ storageInterface:
247
+ storageImplementation ||
248
+ new DefaultStorageClass(
249
+ userAuthOptions.clientId,
250
+ DEFAULT_CRYPTO_IMPLEMENTATION,
251
+ new Logger(loggerOptions)
252
+ ),
253
+ networkInterface:
254
+ networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,
255
+ cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,
256
+ clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,
257
+ libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },
258
+ telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },
259
+ serverTelemetryManager: serverTelemetryManager || null,
260
+ persistencePlugin: persistencePlugin || null,
261
+ serializableCache: serializableCache || null,
262
+ };
263
+ }
264
+
265
+ /**
266
+ * Construct authoptions from the client and platform passed values
267
+ * @param authOptions
268
+ */
269
+ function buildAuthOptions(authOptions: AuthOptions): Required<AuthOptions> {
270
+ return {
271
+ clientCapabilities: [],
272
+ azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,
273
+ skipAuthorityMetadataCache: false,
274
+ ...authOptions,
275
+ };
276
+ }
277
+
278
+ /**
279
+ * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise
280
+ * @param ClientConfiguration
281
+ */
282
+ export function isOidcProtocolMode(config: ClientConfiguration): boolean {
283
+ return (
284
+ config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC
285
+ );
286
+ }
@@ -0,0 +1,112 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import {
7
+ ClientAuthErrorCodes,
8
+ createClientAuthError,
9
+ } from "../error/ClientAuthError";
10
+ import { BaseAuthRequest } from "../request/BaseAuthRequest";
11
+ import { SignedHttpRequest } from "./SignedHttpRequest";
12
+
13
+ /**
14
+ * The PkceCodes type describes the structure
15
+ * of objects that contain PKCE code
16
+ * challenge and verifier pairs
17
+ */
18
+ export type PkceCodes = {
19
+ verifier: string;
20
+ challenge: string;
21
+ };
22
+
23
+ export type SignedHttpRequestParameters = Pick<
24
+ BaseAuthRequest,
25
+ "resourceRequestMethod" | "resourceRequestUri" | "shrClaims" | "shrNonce"
26
+ > & {
27
+ correlationId?: string;
28
+ };
29
+
30
+ /**
31
+ * Interface for crypto functions used by library
32
+ */
33
+ export interface ICrypto {
34
+ /**
35
+ * Creates a guid randomly.
36
+ */
37
+ createNewGuid(): string;
38
+ /**
39
+ * base64 Encode string
40
+ * @param input
41
+ */
42
+ base64Encode(input: string): string;
43
+ /**
44
+ * base64 decode string
45
+ * @param input
46
+ */
47
+ base64Decode(input: string): string;
48
+ /**
49
+ * Generate PKCE codes for OAuth. See RFC here: https://tools.ietf.org/html/rfc7636
50
+ */
51
+ generatePkceCodes(): Promise<PkceCodes>;
52
+ /**
53
+ * Generates an JWK RSA S256 Thumbprint
54
+ * @param request
55
+ */
56
+ getPublicKeyThumbprint(
57
+ request: SignedHttpRequestParameters
58
+ ): Promise<string>;
59
+ /**
60
+ * Removes cryptographic keypair from key store matching the keyId passed in
61
+ * @param kid
62
+ */
63
+ removeTokenBindingKey(kid: string): Promise<boolean>;
64
+ /**
65
+ * Removes all cryptographic keys from IndexedDB storage
66
+ */
67
+ clearKeystore(): Promise<boolean>;
68
+ /**
69
+ * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.
70
+ * @param accessToken
71
+ */
72
+ signJwt(
73
+ payload: SignedHttpRequest,
74
+ kid: string,
75
+ correlationId?: string
76
+ ): Promise<string>;
77
+ /**
78
+ * Returns the SHA-256 hash of an input string
79
+ * @param plainText
80
+ */
81
+ hashString(plainText: string): Promise<string>;
82
+ }
83
+
84
+ export const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {
85
+ createNewGuid: (): string => {
86
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
87
+ },
88
+ base64Decode: (): string => {
89
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
90
+ },
91
+ base64Encode: (): string => {
92
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
93
+ },
94
+ async generatePkceCodes(): Promise<PkceCodes> {
95
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
96
+ },
97
+ async getPublicKeyThumbprint(): Promise<string> {
98
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
99
+ },
100
+ async removeTokenBindingKey(): Promise<boolean> {
101
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
102
+ },
103
+ async clearKeystore(): Promise<boolean> {
104
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
105
+ },
106
+ async signJwt(): Promise<string> {
107
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
108
+ },
109
+ async hashString(): Promise<string> {
110
+ throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);
111
+ },
112
+ };
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ export interface IGuidGenerator {
7
+ generateGuid(): string;
8
+ isGuid(guid: string): boolean;
9
+ }