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