@azure/msal-common 14.4.1-beta.0 → 14.5.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 (287) hide show
  1. package/dist/account/AccountInfo.d.ts +58 -31
  2. package/dist/account/AccountInfo.d.ts.map +1 -1
  3. package/dist/account/AccountInfo.mjs +64 -0
  4. package/dist/account/AccountInfo.mjs.map +1 -0
  5. package/dist/account/AuthToken.d.ts +17 -17
  6. package/dist/account/AuthToken.mjs +58 -58
  7. package/dist/account/AuthToken.mjs.map +1 -1
  8. package/dist/account/CcsCredential.d.ts +9 -9
  9. package/dist/account/CcsCredential.mjs +8 -8
  10. package/dist/account/CcsCredential.mjs.map +1 -1
  11. package/dist/account/ClientCredentials.d.ts +14 -14
  12. package/dist/account/ClientInfo.d.ts +18 -19
  13. package/dist/account/ClientInfo.d.ts.map +1 -1
  14. package/dist/account/ClientInfo.mjs +37 -37
  15. package/dist/account/ClientInfo.mjs.map +1 -1
  16. package/dist/account/TokenClaims.d.ts +83 -65
  17. package/dist/account/TokenClaims.d.ts.map +1 -1
  18. package/dist/account/TokenClaims.mjs +25 -0
  19. package/dist/account/TokenClaims.mjs.map +1 -0
  20. package/dist/authority/Authority.d.ts +253 -249
  21. package/dist/authority/Authority.d.ts.map +1 -1
  22. package/dist/authority/Authority.mjs +812 -789
  23. package/dist/authority/Authority.mjs.map +1 -1
  24. package/dist/authority/AuthorityFactory.d.ts +31 -31
  25. package/dist/authority/AuthorityFactory.mjs +47 -47
  26. package/dist/authority/AuthorityFactory.mjs.map +1 -1
  27. package/dist/authority/AuthorityMetadata.d.ts +503 -503
  28. package/dist/authority/AuthorityMetadata.mjs +603 -603
  29. package/dist/authority/AuthorityMetadata.mjs.map +1 -1
  30. package/dist/authority/AuthorityOptions.d.ts +27 -27
  31. package/dist/authority/AuthorityOptions.mjs +18 -18
  32. package/dist/authority/AuthorityOptions.mjs.map +1 -1
  33. package/dist/authority/AuthorityType.d.ts +10 -10
  34. package/dist/authority/AuthorityType.mjs +13 -13
  35. package/dist/authority/AuthorityType.mjs.map +1 -1
  36. package/dist/authority/AzureRegion.d.ts +1 -1
  37. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  38. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  39. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  40. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  41. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs.map +1 -1
  42. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  43. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  44. package/dist/authority/CloudInstanceDiscoveryResponse.mjs.map +1 -1
  45. package/dist/authority/ImdsOptions.d.ts +5 -5
  46. package/dist/authority/OIDCOptions.d.ts +8 -8
  47. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  48. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  49. package/dist/authority/OpenIdConfigResponse.mjs.map +1 -1
  50. package/dist/authority/ProtocolMode.d.ts +8 -8
  51. package/dist/authority/ProtocolMode.mjs +11 -11
  52. package/dist/authority/ProtocolMode.mjs.map +1 -1
  53. package/dist/authority/RegionDiscovery.d.ts +32 -32
  54. package/dist/authority/RegionDiscovery.mjs +106 -106
  55. package/dist/authority/RegionDiscovery.mjs.map +1 -1
  56. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  57. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  58. package/dist/cache/CacheManager.d.ts +517 -485
  59. package/dist/cache/CacheManager.d.ts.map +1 -1
  60. package/dist/cache/CacheManager.mjs +1264 -1102
  61. package/dist/cache/CacheManager.mjs.map +1 -1
  62. package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
  63. package/dist/cache/entities/AccountEntity.d.ts +106 -101
  64. package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
  65. package/dist/cache/entities/AccountEntity.mjs +247 -219
  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 +30 -30
  77. package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
  78. package/dist/cache/entities/RefreshTokenEntity.d.ts +5 -7
  79. package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
  80. package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
  81. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  82. package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
  83. package/dist/cache/entities/ThrottlingEntity.mjs.map +1 -1
  84. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  85. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  86. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  87. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  88. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  89. package/dist/cache/persistence/TokenCacheContext.mjs.map +1 -1
  90. package/dist/cache/utils/CacheHelpers.d.ts +64 -64
  91. package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
  92. package/dist/cache/utils/CacheHelpers.mjs +231 -234
  93. package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
  94. package/dist/cache/utils/CacheTypes.d.ts +69 -67
  95. package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
  96. package/dist/client/AuthorizationCodeClient.d.ts +74 -74
  97. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  98. package/dist/client/AuthorizationCodeClient.mjs +404 -403
  99. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  100. package/dist/client/BaseClient.d.ts +51 -51
  101. package/dist/client/BaseClient.mjs +100 -100
  102. package/dist/client/BaseClient.mjs.map +1 -1
  103. package/dist/client/RefreshTokenClient.d.ts +35 -35
  104. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  105. package/dist/client/RefreshTokenClient.mjs +189 -194
  106. package/dist/client/RefreshTokenClient.mjs.map +1 -1
  107. package/dist/client/SilentFlowClient.d.ts +27 -27
  108. package/dist/client/SilentFlowClient.mjs +118 -118
  109. package/dist/client/SilentFlowClient.mjs.map +1 -1
  110. package/dist/config/AppTokenProvider.d.ts +38 -38
  111. package/dist/config/ClientConfiguration.d.ts +150 -150
  112. package/dist/config/ClientConfiguration.mjs +97 -97
  113. package/dist/config/ClientConfiguration.mjs.map +1 -1
  114. package/dist/constants/AADServerParamKeys.d.ts +52 -0
  115. package/dist/constants/AADServerParamKeys.d.ts.map +1 -0
  116. package/dist/constants/AADServerParamKeys.mjs +60 -0
  117. package/dist/constants/AADServerParamKeys.mjs.map +1 -0
  118. package/dist/crypto/ICrypto.d.ts +58 -58
  119. package/dist/crypto/ICrypto.mjs +30 -30
  120. package/dist/crypto/ICrypto.mjs.map +1 -1
  121. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  122. package/dist/crypto/JoseHeader.d.ts +22 -22
  123. package/dist/crypto/JoseHeader.mjs +37 -37
  124. package/dist/crypto/JoseHeader.mjs.map +1 -1
  125. package/dist/crypto/PopTokenGenerator.d.ts +60 -60
  126. package/dist/crypto/PopTokenGenerator.mjs +82 -82
  127. package/dist/crypto/PopTokenGenerator.mjs.map +1 -1
  128. package/dist/crypto/SignedHttpRequest.d.ts +15 -15
  129. package/dist/error/AuthError.d.ts +44 -44
  130. package/dist/error/AuthError.mjs +46 -46
  131. package/dist/error/AuthError.mjs.map +1 -1
  132. package/dist/error/AuthErrorCodes.d.ts +5 -5
  133. package/dist/error/AuthErrorCodes.mjs +9 -9
  134. package/dist/error/AuthErrorCodes.mjs.map +1 -1
  135. package/dist/error/ClientAuthError.d.ts +237 -237
  136. package/dist/error/ClientAuthError.mjs +249 -249
  137. package/dist/error/ClientAuthError.mjs.map +1 -1
  138. package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
  139. package/dist/error/ClientAuthErrorCodes.mjs +48 -48
  140. package/dist/error/ClientAuthErrorCodes.mjs.map +1 -1
  141. package/dist/error/ClientConfigurationError.d.ts +128 -128
  142. package/dist/error/ClientConfigurationError.mjs +135 -135
  143. package/dist/error/ClientConfigurationError.mjs.map +1 -1
  144. package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
  145. package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
  146. package/dist/error/ClientConfigurationErrorCodes.mjs.map +1 -1
  147. package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
  148. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  149. package/dist/error/InteractionRequiredAuthError.mjs +77 -78
  150. package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
  151. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +5 -6
  152. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
  153. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +12 -13
  154. package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
  155. package/dist/error/JoseHeaderError.d.ts +15 -15
  156. package/dist/error/JoseHeaderError.mjs +22 -22
  157. package/dist/error/JoseHeaderError.mjs.map +1 -1
  158. package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
  159. package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
  160. package/dist/error/JoseHeaderErrorCodes.mjs.map +1 -1
  161. package/dist/error/ServerError.d.ts +7 -7
  162. package/dist/error/ServerError.mjs +14 -14
  163. package/dist/error/ServerError.mjs.map +1 -1
  164. package/dist/index.cjs +8645 -8295
  165. package/dist/index.cjs.map +1 -1
  166. package/dist/index.d.ts +99 -98
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.mjs +7 -3
  169. package/dist/index.mjs.map +1 -1
  170. package/dist/logger/Logger.d.ts +95 -95
  171. package/dist/logger/Logger.mjs +188 -188
  172. package/dist/logger/Logger.mjs.map +1 -1
  173. package/dist/network/INetworkModule.d.ts +29 -29
  174. package/dist/network/INetworkModule.mjs +12 -12
  175. package/dist/network/INetworkModule.mjs.map +1 -1
  176. package/dist/network/NetworkManager.d.ts +33 -33
  177. package/dist/network/NetworkManager.mjs +34 -34
  178. package/dist/network/NetworkManager.mjs.map +1 -1
  179. package/dist/network/RequestThumbprint.d.ts +18 -18
  180. package/dist/network/ThrottlingUtils.d.ts +42 -42
  181. package/dist/network/ThrottlingUtils.mjs +95 -95
  182. package/dist/network/ThrottlingUtils.mjs.map +1 -1
  183. package/dist/packageMetadata.d.ts +2 -2
  184. package/dist/packageMetadata.mjs +4 -4
  185. package/dist/packageMetadata.mjs.map +1 -1
  186. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  187. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  188. package/dist/request/AuthenticationHeaderParser.mjs.map +1 -1
  189. package/dist/request/BaseAuthRequest.d.ts +43 -43
  190. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  191. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  192. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  193. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  194. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  195. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  196. package/dist/request/CommonRefreshTokenRequest.d.ts +22 -23
  197. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  198. package/dist/request/CommonSilentFlowRequest.d.ts +20 -21
  199. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  200. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  201. package/dist/request/NativeRequest.d.ts +19 -19
  202. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  203. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  204. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  205. package/dist/request/RequestParameterBuilder.mjs +383 -382
  206. package/dist/request/RequestParameterBuilder.mjs.map +1 -1
  207. package/dist/request/RequestValidator.d.ts +33 -33
  208. package/dist/request/RequestValidator.mjs +81 -81
  209. package/dist/request/RequestValidator.mjs.map +1 -1
  210. package/dist/request/ScopeSet.d.ts +88 -88
  211. package/dist/request/ScopeSet.mjs +197 -197
  212. package/dist/request/ScopeSet.mjs.map +1 -1
  213. package/dist/request/StoreInCache.d.ts +8 -8
  214. package/dist/response/AuthenticationResult.d.ts +41 -41
  215. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  216. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  217. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  218. package/dist/response/IMDSBadResponse.d.ts +4 -4
  219. package/dist/response/ResponseHandler.d.ts +69 -67
  220. package/dist/response/ResponseHandler.d.ts.map +1 -1
  221. package/dist/response/ResponseHandler.mjs +339 -313
  222. package/dist/response/ResponseHandler.mjs.map +1 -1
  223. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  224. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
  225. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  226. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  227. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  228. package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
  229. package/dist/telemetry/performance/PerformanceClient.mjs.map +1 -1
  230. package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
  231. package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
  232. package/dist/telemetry/performance/PerformanceEvent.mjs.map +1 -1
  233. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  234. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  235. package/dist/telemetry/performance/StubPerformanceClient.mjs.map +1 -1
  236. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  237. package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
  238. package/dist/telemetry/server/ServerTelemetryManager.mjs.map +1 -1
  239. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  240. package/dist/url/IUri.d.ts +12 -12
  241. package/dist/url/UrlString.d.ts +48 -48
  242. package/dist/url/UrlString.mjs +161 -161
  243. package/dist/url/UrlString.mjs.map +1 -1
  244. package/dist/utils/Constants.d.ts +296 -365
  245. package/dist/utils/Constants.d.ts.map +1 -1
  246. package/dist/utils/Constants.mjs +309 -376
  247. package/dist/utils/Constants.mjs.map +1 -1
  248. package/dist/utils/FunctionWrappers.d.ts +27 -27
  249. package/dist/utils/FunctionWrappers.mjs +84 -84
  250. package/dist/utils/FunctionWrappers.mjs.map +1 -1
  251. package/dist/utils/MsalTypes.d.ts +6 -6
  252. package/dist/utils/ProtocolUtils.d.ts +42 -42
  253. package/dist/utils/ProtocolUtils.mjs +69 -69
  254. package/dist/utils/ProtocolUtils.mjs.map +1 -1
  255. package/dist/utils/StringUtils.d.ts +40 -40
  256. package/dist/utils/StringUtils.mjs +95 -95
  257. package/dist/utils/StringUtils.mjs.map +1 -1
  258. package/dist/utils/TimeUtils.d.ts +27 -27
  259. package/dist/utils/TimeUtils.mjs +45 -45
  260. package/dist/utils/TimeUtils.mjs.map +1 -1
  261. package/dist/utils/UrlUtils.d.ts +10 -10
  262. package/dist/utils/UrlUtils.mjs +44 -44
  263. package/dist/utils/UrlUtils.mjs.map +1 -1
  264. package/package.json +93 -92
  265. package/src/account/AccountInfo.ts +96 -0
  266. package/src/account/ClientInfo.ts +2 -3
  267. package/src/account/TokenClaims.ts +28 -0
  268. package/src/authority/Authority.ts +29 -2
  269. package/src/cache/CacheManager.ts +416 -114
  270. package/src/cache/entities/AccountEntity.ts +84 -33
  271. package/src/cache/entities/RefreshTokenEntity.ts +1 -3
  272. package/src/cache/utils/CacheHelpers.ts +1 -6
  273. package/src/cache/utils/CacheTypes.ts +11 -0
  274. package/src/client/AuthorizationCodeClient.ts +4 -5
  275. package/src/client/RefreshTokenClient.ts +3 -15
  276. package/src/client/SilentFlowClient.ts +1 -1
  277. package/src/constants/AADServerParamKeys.ts +56 -0
  278. package/src/crypto/PopTokenGenerator.ts +1 -1
  279. package/src/error/InteractionRequiredAuthError.ts +0 -2
  280. package/src/error/InteractionRequiredAuthErrorCodes.ts +0 -1
  281. package/src/index.ts +17 -5
  282. package/src/packageMetadata.ts +1 -1
  283. package/src/request/CommonRefreshTokenRequest.ts +0 -1
  284. package/src/request/CommonSilentFlowRequest.ts +0 -1
  285. package/src/request/RequestParameterBuilder.ts +7 -5
  286. package/src/response/ResponseHandler.ts +95 -27
  287. package/src/utils/Constants.ts +0 -72
@@ -1,391 +1,392 @@
1
- /*! @azure/msal-common v14.4.1-beta.0 2023-11-14 */
1
+ /*! @azure/msal-common v14.5.0 2023-12-01 */
2
2
  'use strict';
3
- import { AADServerParamKeys, Constants, ResponseMode, OIDC_DEFAULT_SCOPES, SSOTypes, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';
3
+ import { Constants, ResponseMode, OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.mjs';
4
+ import { RESPONSE_TYPE, RESPONSE_MODE, NATIVE_BROKER, SCOPE, CLIENT_ID, REDIRECT_URI, POST_LOGOUT_URI, ID_TOKEN_HINT, DOMAIN_HINT, LOGIN_HINT, SID, CLAIMS, CLIENT_REQUEST_ID, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, X_APP_NAME, X_APP_VER, PROMPT, STATE, NONCE, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE, DEVICE_CODE, REFRESH_TOKEN, CODE_VERIFIER, CLIENT_SECRET, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, OBO_ASSERTION, REQUESTED_TOKEN_USE, GRANT_TYPE, TOKEN_TYPE, REQ_CNF, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, X_MS_LIB_CAPABILITY, LOGOUT_HINT } from '../constants/AADServerParamKeys.mjs';
4
5
  import { ScopeSet } from './ScopeSet.mjs';
5
6
  import { createClientConfigurationError } from '../error/ClientConfigurationError.mjs';
6
7
  import { RequestValidator } from './RequestValidator.mjs';
7
8
  import { pkceParamsMissing, invalidClaims } from '../error/ClientConfigurationErrorCodes.mjs';
8
9
 
9
- /*
10
- * Copyright (c) Microsoft Corporation. All rights reserved.
11
- * Licensed under the MIT License.
12
- */
13
- /** @internal */
14
- class RequestParameterBuilder {
15
- constructor() {
16
- this.parameters = new Map();
17
- }
18
- /**
19
- * add response_type = code
20
- */
21
- addResponseTypeCode() {
22
- this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));
23
- }
24
- /**
25
- * add response_type = token id_token
26
- */
27
- addResponseTypeForTokenAndIdToken() {
28
- this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));
29
- }
30
- /**
31
- * add response_mode. defaults to query.
32
- * @param responseMode
33
- */
34
- addResponseMode(responseMode) {
35
- this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));
36
- }
37
- /**
38
- * Add flag to indicate STS should attempt to use WAM if available
39
- */
40
- addNativeBroker() {
41
- this.parameters.set(AADServerParamKeys.NATIVE_BROKER, encodeURIComponent("1"));
42
- }
43
- /**
44
- * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios
45
- * @param scopeSet
46
- * @param addOidcScopes
47
- */
48
- addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {
49
- // Always add openid to the scopes when adding OIDC scopes
50
- if (addOidcScopes &&
51
- !defaultScopes.includes("openid") &&
52
- !scopes.includes("openid")) {
53
- defaultScopes.push("openid");
54
- }
55
- const requestScopes = addOidcScopes
56
- ? [...(scopes || []), ...defaultScopes]
57
- : scopes || [];
58
- const scopeSet = new ScopeSet(requestScopes);
59
- this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));
60
- }
61
- /**
62
- * add clientId
63
- * @param clientId
64
- */
65
- addClientId(clientId) {
66
- this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));
67
- }
68
- /**
69
- * add redirect_uri
70
- * @param redirectUri
71
- */
72
- addRedirectUri(redirectUri) {
73
- RequestValidator.validateRedirectUri(redirectUri);
74
- this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));
75
- }
76
- /**
77
- * add post logout redirectUri
78
- * @param redirectUri
79
- */
80
- addPostLogoutRedirectUri(redirectUri) {
81
- RequestValidator.validateRedirectUri(redirectUri);
82
- this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));
83
- }
84
- /**
85
- * add id_token_hint to logout request
86
- * @param idTokenHint
87
- */
88
- addIdTokenHint(idTokenHint) {
89
- this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));
90
- }
91
- /**
92
- * add domain_hint
93
- * @param domainHint
94
- */
95
- addDomainHint(domainHint) {
96
- this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));
97
- }
98
- /**
99
- * add login_hint
100
- * @param loginHint
101
- */
102
- addLoginHint(loginHint) {
103
- this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));
104
- }
105
- /**
106
- * Adds the CCS (Cache Credential Service) query parameter for login_hint
107
- * @param loginHint
108
- */
109
- addCcsUpn(loginHint) {
110
- this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));
111
- }
112
- /**
113
- * Adds the CCS (Cache Credential Service) query parameter for account object
114
- * @param loginHint
115
- */
116
- addCcsOid(clientInfo) {
117
- this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));
118
- }
119
- /**
120
- * add sid
121
- * @param sid
122
- */
123
- addSid(sid) {
124
- this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));
125
- }
126
- /**
127
- * add claims
128
- * @param claims
129
- */
130
- addClaims(claims, clientCapabilities) {
131
- const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);
132
- RequestValidator.validateClaims(mergedClaims);
133
- this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));
134
- }
135
- /**
136
- * add correlationId
137
- * @param correlationId
138
- */
139
- addCorrelationId(correlationId) {
140
- this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));
141
- }
142
- /**
143
- * add library info query params
144
- * @param libraryInfo
145
- */
146
- addLibraryInfo(libraryInfo) {
147
- // Telemetry Info
148
- this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);
149
- this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);
150
- if (libraryInfo.os) {
151
- this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);
152
- }
153
- if (libraryInfo.cpu) {
154
- this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);
155
- }
156
- }
157
- /**
158
- * Add client telemetry parameters
159
- * @param appTelemetry
160
- */
161
- addApplicationTelemetry(appTelemetry) {
162
- if (appTelemetry?.appName) {
163
- this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);
164
- }
165
- if (appTelemetry?.appVersion) {
166
- this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);
167
- }
168
- }
169
- /**
170
- * add prompt
171
- * @param prompt
172
- */
173
- addPrompt(prompt) {
174
- RequestValidator.validatePrompt(prompt);
175
- this.parameters.set(`${AADServerParamKeys.PROMPT}`, encodeURIComponent(prompt));
176
- }
177
- /**
178
- * add state
179
- * @param state
180
- */
181
- addState(state) {
182
- if (state) {
183
- this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));
184
- }
185
- }
186
- /**
187
- * add nonce
188
- * @param nonce
189
- */
190
- addNonce(nonce) {
191
- this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));
192
- }
193
- /**
194
- * add code_challenge and code_challenge_method
195
- * - throw if either of them are not passed
196
- * @param codeChallenge
197
- * @param codeChallengeMethod
198
- */
199
- addCodeChallengeParams(codeChallenge, codeChallengeMethod) {
200
- RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);
201
- if (codeChallenge && codeChallengeMethod) {
202
- this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));
203
- this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));
204
- }
205
- else {
206
- throw createClientConfigurationError(pkceParamsMissing);
207
- }
208
- }
209
- /**
210
- * add the `authorization_code` passed by the user to exchange for a token
211
- * @param code
212
- */
213
- addAuthorizationCode(code) {
214
- this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));
215
- }
216
- /**
217
- * add the `authorization_code` passed by the user to exchange for a token
218
- * @param code
219
- */
220
- addDeviceCode(code) {
221
- this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));
222
- }
223
- /**
224
- * add the `refreshToken` passed by the user
225
- * @param refreshToken
226
- */
227
- addRefreshToken(refreshToken) {
228
- this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));
229
- }
230
- /**
231
- * add the `code_verifier` passed by the user to exchange for a token
232
- * @param codeVerifier
233
- */
234
- addCodeVerifier(codeVerifier) {
235
- this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));
236
- }
237
- /**
238
- * add client_secret
239
- * @param clientSecret
240
- */
241
- addClientSecret(clientSecret) {
242
- this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));
243
- }
244
- /**
245
- * add clientAssertion for confidential client flows
246
- * @param clientAssertion
247
- */
248
- addClientAssertion(clientAssertion) {
249
- if (clientAssertion) {
250
- this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));
251
- }
252
- }
253
- /**
254
- * add clientAssertionType for confidential client flows
255
- * @param clientAssertionType
256
- */
257
- addClientAssertionType(clientAssertionType) {
258
- if (clientAssertionType) {
259
- this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));
260
- }
261
- }
262
- /**
263
- * add OBO assertion for confidential client flows
264
- * @param clientAssertion
265
- */
266
- addOboAssertion(oboAssertion) {
267
- this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));
268
- }
269
- /**
270
- * add grant type
271
- * @param grantType
272
- */
273
- addRequestTokenUse(tokenUse) {
274
- this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));
275
- }
276
- /**
277
- * add grant type
278
- * @param grantType
279
- */
280
- addGrantType(grantType) {
281
- this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));
282
- }
283
- /**
284
- * add client info
285
- *
286
- */
287
- addClientInfo() {
288
- this.parameters.set(CLIENT_INFO, "1");
289
- }
290
- /**
291
- * add extraQueryParams
292
- * @param eQParams
293
- */
294
- addExtraQueryParameters(eQParams) {
295
- const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);
296
- Object.keys(sanitizedEQParams).forEach((key) => {
297
- this.parameters.set(key, eQParams[key]);
298
- });
299
- }
300
- addClientCapabilitiesToClaims(claims, clientCapabilities) {
301
- let mergedClaims;
302
- // Parse provided claims into JSON object or initialize empty object
303
- if (!claims) {
304
- mergedClaims = {};
305
- }
306
- else {
307
- try {
308
- mergedClaims = JSON.parse(claims);
309
- }
310
- catch (e) {
311
- throw createClientConfigurationError(invalidClaims);
312
- }
313
- }
314
- if (clientCapabilities && clientCapabilities.length > 0) {
315
- if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {
316
- // Add access_token key to claims object
317
- mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};
318
- }
319
- // Add xms_cc claim with provided clientCapabilities to access_token key
320
- mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {
321
- values: clientCapabilities,
322
- };
323
- }
324
- return JSON.stringify(mergedClaims);
325
- }
326
- /**
327
- * adds `username` for Password Grant flow
328
- * @param username
329
- */
330
- addUsername(username) {
331
- this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));
332
- }
333
- /**
334
- * adds `password` for Password Grant flow
335
- * @param password
336
- */
337
- addPassword(password) {
338
- this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));
339
- }
340
- /**
341
- * add pop_jwk to query params
342
- * @param cnfString
343
- */
344
- addPopToken(cnfString) {
345
- if (cnfString) {
346
- this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);
347
- this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));
348
- }
349
- }
350
- /**
351
- * add SSH JWK and key ID to query params
352
- */
353
- addSshJwk(sshJwkString) {
354
- if (sshJwkString) {
355
- this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);
356
- this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));
357
- }
358
- }
359
- /**
360
- * add server telemetry fields
361
- * @param serverTelemetryManager
362
- */
363
- addServerTelemetry(serverTelemetryManager) {
364
- this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());
365
- this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());
366
- }
367
- /**
368
- * Adds parameter that indicates to the server that throttling is supported
369
- */
370
- addThrottling() {
371
- this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);
372
- }
373
- /**
374
- * Adds logout_hint parameter for "silent" logout which prevent server account picker
375
- */
376
- addLogoutHint(logoutHint) {
377
- this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));
378
- }
379
- /**
380
- * Utility to create a URL from the params map
381
- */
382
- createQueryString() {
383
- const queryParameterArray = new Array();
384
- this.parameters.forEach((value, key) => {
385
- queryParameterArray.push(`${key}=${value}`);
386
- });
387
- return queryParameterArray.join("&");
388
- }
10
+ /*
11
+ * Copyright (c) Microsoft Corporation. All rights reserved.
12
+ * Licensed under the MIT License.
13
+ */
14
+ /** @internal */
15
+ class RequestParameterBuilder {
16
+ constructor() {
17
+ this.parameters = new Map();
18
+ }
19
+ /**
20
+ * add response_type = code
21
+ */
22
+ addResponseTypeCode() {
23
+ this.parameters.set(RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));
24
+ }
25
+ /**
26
+ * add response_type = token id_token
27
+ */
28
+ addResponseTypeForTokenAndIdToken() {
29
+ this.parameters.set(RESPONSE_TYPE, encodeURIComponent(`${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`));
30
+ }
31
+ /**
32
+ * add response_mode. defaults to query.
33
+ * @param responseMode
34
+ */
35
+ addResponseMode(responseMode) {
36
+ this.parameters.set(RESPONSE_MODE, encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY));
37
+ }
38
+ /**
39
+ * Add flag to indicate STS should attempt to use WAM if available
40
+ */
41
+ addNativeBroker() {
42
+ this.parameters.set(NATIVE_BROKER, encodeURIComponent("1"));
43
+ }
44
+ /**
45
+ * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios
46
+ * @param scopeSet
47
+ * @param addOidcScopes
48
+ */
49
+ addScopes(scopes, addOidcScopes = true, defaultScopes = OIDC_DEFAULT_SCOPES) {
50
+ // Always add openid to the scopes when adding OIDC scopes
51
+ if (addOidcScopes &&
52
+ !defaultScopes.includes("openid") &&
53
+ !scopes.includes("openid")) {
54
+ defaultScopes.push("openid");
55
+ }
56
+ const requestScopes = addOidcScopes
57
+ ? [...(scopes || []), ...defaultScopes]
58
+ : scopes || [];
59
+ const scopeSet = new ScopeSet(requestScopes);
60
+ this.parameters.set(SCOPE, encodeURIComponent(scopeSet.printScopes()));
61
+ }
62
+ /**
63
+ * add clientId
64
+ * @param clientId
65
+ */
66
+ addClientId(clientId) {
67
+ this.parameters.set(CLIENT_ID, encodeURIComponent(clientId));
68
+ }
69
+ /**
70
+ * add redirect_uri
71
+ * @param redirectUri
72
+ */
73
+ addRedirectUri(redirectUri) {
74
+ RequestValidator.validateRedirectUri(redirectUri);
75
+ this.parameters.set(REDIRECT_URI, encodeURIComponent(redirectUri));
76
+ }
77
+ /**
78
+ * add post logout redirectUri
79
+ * @param redirectUri
80
+ */
81
+ addPostLogoutRedirectUri(redirectUri) {
82
+ RequestValidator.validateRedirectUri(redirectUri);
83
+ this.parameters.set(POST_LOGOUT_URI, encodeURIComponent(redirectUri));
84
+ }
85
+ /**
86
+ * add id_token_hint to logout request
87
+ * @param idTokenHint
88
+ */
89
+ addIdTokenHint(idTokenHint) {
90
+ this.parameters.set(ID_TOKEN_HINT, encodeURIComponent(idTokenHint));
91
+ }
92
+ /**
93
+ * add domain_hint
94
+ * @param domainHint
95
+ */
96
+ addDomainHint(domainHint) {
97
+ this.parameters.set(DOMAIN_HINT, encodeURIComponent(domainHint));
98
+ }
99
+ /**
100
+ * add login_hint
101
+ * @param loginHint
102
+ */
103
+ addLoginHint(loginHint) {
104
+ this.parameters.set(LOGIN_HINT, encodeURIComponent(loginHint));
105
+ }
106
+ /**
107
+ * Adds the CCS (Cache Credential Service) query parameter for login_hint
108
+ * @param loginHint
109
+ */
110
+ addCcsUpn(loginHint) {
111
+ this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`UPN:${loginHint}`));
112
+ }
113
+ /**
114
+ * Adds the CCS (Cache Credential Service) query parameter for account object
115
+ * @param loginHint
116
+ */
117
+ addCcsOid(clientInfo) {
118
+ this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`));
119
+ }
120
+ /**
121
+ * add sid
122
+ * @param sid
123
+ */
124
+ addSid(sid) {
125
+ this.parameters.set(SID, encodeURIComponent(sid));
126
+ }
127
+ /**
128
+ * add claims
129
+ * @param claims
130
+ */
131
+ addClaims(claims, clientCapabilities) {
132
+ const mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);
133
+ RequestValidator.validateClaims(mergedClaims);
134
+ this.parameters.set(CLAIMS, encodeURIComponent(mergedClaims));
135
+ }
136
+ /**
137
+ * add correlationId
138
+ * @param correlationId
139
+ */
140
+ addCorrelationId(correlationId) {
141
+ this.parameters.set(CLIENT_REQUEST_ID, encodeURIComponent(correlationId));
142
+ }
143
+ /**
144
+ * add library info query params
145
+ * @param libraryInfo
146
+ */
147
+ addLibraryInfo(libraryInfo) {
148
+ // Telemetry Info
149
+ this.parameters.set(X_CLIENT_SKU, libraryInfo.sku);
150
+ this.parameters.set(X_CLIENT_VER, libraryInfo.version);
151
+ if (libraryInfo.os) {
152
+ this.parameters.set(X_CLIENT_OS, libraryInfo.os);
153
+ }
154
+ if (libraryInfo.cpu) {
155
+ this.parameters.set(X_CLIENT_CPU, libraryInfo.cpu);
156
+ }
157
+ }
158
+ /**
159
+ * Add client telemetry parameters
160
+ * @param appTelemetry
161
+ */
162
+ addApplicationTelemetry(appTelemetry) {
163
+ if (appTelemetry?.appName) {
164
+ this.parameters.set(X_APP_NAME, appTelemetry.appName);
165
+ }
166
+ if (appTelemetry?.appVersion) {
167
+ this.parameters.set(X_APP_VER, appTelemetry.appVersion);
168
+ }
169
+ }
170
+ /**
171
+ * add prompt
172
+ * @param prompt
173
+ */
174
+ addPrompt(prompt) {
175
+ RequestValidator.validatePrompt(prompt);
176
+ this.parameters.set(`${PROMPT}`, encodeURIComponent(prompt));
177
+ }
178
+ /**
179
+ * add state
180
+ * @param state
181
+ */
182
+ addState(state) {
183
+ if (state) {
184
+ this.parameters.set(STATE, encodeURIComponent(state));
185
+ }
186
+ }
187
+ /**
188
+ * add nonce
189
+ * @param nonce
190
+ */
191
+ addNonce(nonce) {
192
+ this.parameters.set(NONCE, encodeURIComponent(nonce));
193
+ }
194
+ /**
195
+ * add code_challenge and code_challenge_method
196
+ * - throw if either of them are not passed
197
+ * @param codeChallenge
198
+ * @param codeChallengeMethod
199
+ */
200
+ addCodeChallengeParams(codeChallenge, codeChallengeMethod) {
201
+ RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);
202
+ if (codeChallenge && codeChallengeMethod) {
203
+ this.parameters.set(CODE_CHALLENGE, encodeURIComponent(codeChallenge));
204
+ this.parameters.set(CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));
205
+ }
206
+ else {
207
+ throw createClientConfigurationError(pkceParamsMissing);
208
+ }
209
+ }
210
+ /**
211
+ * add the `authorization_code` passed by the user to exchange for a token
212
+ * @param code
213
+ */
214
+ addAuthorizationCode(code) {
215
+ this.parameters.set(CODE, encodeURIComponent(code));
216
+ }
217
+ /**
218
+ * add the `authorization_code` passed by the user to exchange for a token
219
+ * @param code
220
+ */
221
+ addDeviceCode(code) {
222
+ this.parameters.set(DEVICE_CODE, encodeURIComponent(code));
223
+ }
224
+ /**
225
+ * add the `refreshToken` passed by the user
226
+ * @param refreshToken
227
+ */
228
+ addRefreshToken(refreshToken) {
229
+ this.parameters.set(REFRESH_TOKEN, encodeURIComponent(refreshToken));
230
+ }
231
+ /**
232
+ * add the `code_verifier` passed by the user to exchange for a token
233
+ * @param codeVerifier
234
+ */
235
+ addCodeVerifier(codeVerifier) {
236
+ this.parameters.set(CODE_VERIFIER, encodeURIComponent(codeVerifier));
237
+ }
238
+ /**
239
+ * add client_secret
240
+ * @param clientSecret
241
+ */
242
+ addClientSecret(clientSecret) {
243
+ this.parameters.set(CLIENT_SECRET, encodeURIComponent(clientSecret));
244
+ }
245
+ /**
246
+ * add clientAssertion for confidential client flows
247
+ * @param clientAssertion
248
+ */
249
+ addClientAssertion(clientAssertion) {
250
+ if (clientAssertion) {
251
+ this.parameters.set(CLIENT_ASSERTION, encodeURIComponent(clientAssertion));
252
+ }
253
+ }
254
+ /**
255
+ * add clientAssertionType for confidential client flows
256
+ * @param clientAssertionType
257
+ */
258
+ addClientAssertionType(clientAssertionType) {
259
+ if (clientAssertionType) {
260
+ this.parameters.set(CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));
261
+ }
262
+ }
263
+ /**
264
+ * add OBO assertion for confidential client flows
265
+ * @param clientAssertion
266
+ */
267
+ addOboAssertion(oboAssertion) {
268
+ this.parameters.set(OBO_ASSERTION, encodeURIComponent(oboAssertion));
269
+ }
270
+ /**
271
+ * add grant type
272
+ * @param grantType
273
+ */
274
+ addRequestTokenUse(tokenUse) {
275
+ this.parameters.set(REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));
276
+ }
277
+ /**
278
+ * add grant type
279
+ * @param grantType
280
+ */
281
+ addGrantType(grantType) {
282
+ this.parameters.set(GRANT_TYPE, encodeURIComponent(grantType));
283
+ }
284
+ /**
285
+ * add client info
286
+ *
287
+ */
288
+ addClientInfo() {
289
+ this.parameters.set(CLIENT_INFO, "1");
290
+ }
291
+ /**
292
+ * add extraQueryParams
293
+ * @param eQParams
294
+ */
295
+ addExtraQueryParameters(eQParams) {
296
+ const sanitizedEQParams = RequestValidator.sanitizeEQParams(eQParams, this.parameters);
297
+ Object.keys(sanitizedEQParams).forEach((key) => {
298
+ this.parameters.set(key, eQParams[key]);
299
+ });
300
+ }
301
+ addClientCapabilitiesToClaims(claims, clientCapabilities) {
302
+ let mergedClaims;
303
+ // Parse provided claims into JSON object or initialize empty object
304
+ if (!claims) {
305
+ mergedClaims = {};
306
+ }
307
+ else {
308
+ try {
309
+ mergedClaims = JSON.parse(claims);
310
+ }
311
+ catch (e) {
312
+ throw createClientConfigurationError(invalidClaims);
313
+ }
314
+ }
315
+ if (clientCapabilities && clientCapabilities.length > 0) {
316
+ if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {
317
+ // Add access_token key to claims object
318
+ mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};
319
+ }
320
+ // Add xms_cc claim with provided clientCapabilities to access_token key
321
+ mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {
322
+ values: clientCapabilities,
323
+ };
324
+ }
325
+ return JSON.stringify(mergedClaims);
326
+ }
327
+ /**
328
+ * adds `username` for Password Grant flow
329
+ * @param username
330
+ */
331
+ addUsername(username) {
332
+ this.parameters.set(PasswordGrantConstants.username, encodeURIComponent(username));
333
+ }
334
+ /**
335
+ * adds `password` for Password Grant flow
336
+ * @param password
337
+ */
338
+ addPassword(password) {
339
+ this.parameters.set(PasswordGrantConstants.password, encodeURIComponent(password));
340
+ }
341
+ /**
342
+ * add pop_jwk to query params
343
+ * @param cnfString
344
+ */
345
+ addPopToken(cnfString) {
346
+ if (cnfString) {
347
+ this.parameters.set(TOKEN_TYPE, AuthenticationScheme.POP);
348
+ this.parameters.set(REQ_CNF, encodeURIComponent(cnfString));
349
+ }
350
+ }
351
+ /**
352
+ * add SSH JWK and key ID to query params
353
+ */
354
+ addSshJwk(sshJwkString) {
355
+ if (sshJwkString) {
356
+ this.parameters.set(TOKEN_TYPE, AuthenticationScheme.SSH);
357
+ this.parameters.set(REQ_CNF, encodeURIComponent(sshJwkString));
358
+ }
359
+ }
360
+ /**
361
+ * add server telemetry fields
362
+ * @param serverTelemetryManager
363
+ */
364
+ addServerTelemetry(serverTelemetryManager) {
365
+ this.parameters.set(X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());
366
+ this.parameters.set(X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());
367
+ }
368
+ /**
369
+ * Adds parameter that indicates to the server that throttling is supported
370
+ */
371
+ addThrottling() {
372
+ this.parameters.set(X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);
373
+ }
374
+ /**
375
+ * Adds logout_hint parameter for "silent" logout which prevent server account picker
376
+ */
377
+ addLogoutHint(logoutHint) {
378
+ this.parameters.set(LOGOUT_HINT, encodeURIComponent(logoutHint));
379
+ }
380
+ /**
381
+ * Utility to create a URL from the params map
382
+ */
383
+ createQueryString() {
384
+ const queryParameterArray = new Array();
385
+ this.parameters.forEach((value, key) => {
386
+ queryParameterArray.push(`${key}=${value}`);
387
+ });
388
+ return queryParameterArray.join("&");
389
+ }
389
390
  }
390
391
 
391
392
  export { RequestParameterBuilder };