@azure/msal-common 14.4.0 → 14.4.1-beta.1

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 (202) hide show
  1. package/dist/account/AccountInfo.d.ts +31 -31
  2. package/dist/account/AuthToken.d.ts +17 -17
  3. package/dist/account/AuthToken.mjs +58 -58
  4. package/dist/account/CcsCredential.d.ts +9 -9
  5. package/dist/account/CcsCredential.mjs +8 -8
  6. package/dist/account/ClientCredentials.d.ts +14 -14
  7. package/dist/account/ClientInfo.d.ts +19 -19
  8. package/dist/account/ClientInfo.mjs +37 -37
  9. package/dist/account/TokenClaims.d.ts +65 -65
  10. package/dist/authority/Authority.d.ts +249 -249
  11. package/dist/authority/Authority.mjs +788 -788
  12. package/dist/authority/AuthorityFactory.d.ts +31 -31
  13. package/dist/authority/AuthorityFactory.mjs +47 -47
  14. package/dist/authority/AuthorityMetadata.d.ts +503 -503
  15. package/dist/authority/AuthorityMetadata.mjs +603 -603
  16. package/dist/authority/AuthorityOptions.d.ts +27 -27
  17. package/dist/authority/AuthorityOptions.mjs +18 -18
  18. package/dist/authority/AuthorityType.d.ts +10 -10
  19. package/dist/authority/AuthorityType.mjs +13 -13
  20. package/dist/authority/AzureRegion.d.ts +1 -1
  21. package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
  22. package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
  23. package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
  24. package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
  25. package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
  26. package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
  27. package/dist/authority/ImdsOptions.d.ts +5 -5
  28. package/dist/authority/OIDCOptions.d.ts +8 -8
  29. package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
  30. package/dist/authority/OpenIdConfigResponse.mjs +10 -10
  31. package/dist/authority/ProtocolMode.d.ts +8 -8
  32. package/dist/authority/ProtocolMode.mjs +11 -11
  33. package/dist/authority/RegionDiscovery.d.ts +32 -32
  34. package/dist/authority/RegionDiscovery.mjs +106 -106
  35. package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
  36. package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
  37. package/dist/cache/CacheManager.d.ts +485 -485
  38. package/dist/cache/CacheManager.mjs +1102 -1102
  39. package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
  40. package/dist/cache/entities/AccountEntity.d.ts +101 -101
  41. package/dist/cache/entities/AccountEntity.mjs +218 -218
  42. package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
  43. package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
  44. package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
  45. package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
  46. package/dist/cache/entities/CacheRecord.d.ts +14 -14
  47. package/dist/cache/entities/CacheRecord.mjs +14 -14
  48. package/dist/cache/entities/CredentialEntity.d.ts +30 -30
  49. package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
  50. package/dist/cache/entities/RefreshTokenEntity.d.ts +7 -5
  51. package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
  52. package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
  53. package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
  54. package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
  55. package/dist/cache/interface/ICacheManager.d.ts +166 -166
  56. package/dist/cache/interface/ICachePlugin.d.ts +5 -5
  57. package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
  58. package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
  59. package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
  60. package/dist/cache/utils/CacheHelpers.d.ts +64 -64
  61. package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
  62. package/dist/cache/utils/CacheHelpers.mjs +234 -231
  63. package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
  64. package/dist/cache/utils/CacheTypes.d.ts +67 -67
  65. package/dist/client/AuthorizationCodeClient.d.ts +74 -74
  66. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  67. package/dist/client/AuthorizationCodeClient.mjs +402 -402
  68. package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
  69. package/dist/client/BaseClient.d.ts +51 -51
  70. package/dist/client/BaseClient.mjs +100 -100
  71. package/dist/client/RefreshTokenClient.d.ts +35 -35
  72. package/dist/client/RefreshTokenClient.d.ts.map +1 -1
  73. package/dist/client/RefreshTokenClient.mjs +193 -187
  74. package/dist/client/RefreshTokenClient.mjs.map +1 -1
  75. package/dist/client/SilentFlowClient.d.ts +27 -27
  76. package/dist/client/SilentFlowClient.mjs +118 -118
  77. package/dist/config/AppTokenProvider.d.ts +38 -38
  78. package/dist/config/ClientConfiguration.d.ts +150 -150
  79. package/dist/config/ClientConfiguration.mjs +97 -97
  80. package/dist/crypto/ICrypto.d.ts +58 -58
  81. package/dist/crypto/ICrypto.mjs +30 -30
  82. package/dist/crypto/IGuidGenerator.d.ts +4 -4
  83. package/dist/crypto/JoseHeader.d.ts +22 -22
  84. package/dist/crypto/JoseHeader.mjs +37 -37
  85. package/dist/crypto/PopTokenGenerator.d.ts +60 -60
  86. package/dist/crypto/PopTokenGenerator.mjs +82 -82
  87. package/dist/crypto/SignedHttpRequest.d.ts +15 -15
  88. package/dist/error/AuthError.d.ts +44 -44
  89. package/dist/error/AuthError.mjs +46 -46
  90. package/dist/error/AuthErrorCodes.d.ts +5 -5
  91. package/dist/error/AuthErrorCodes.mjs +9 -9
  92. package/dist/error/ClientAuthError.d.ts +237 -237
  93. package/dist/error/ClientAuthError.mjs +249 -249
  94. package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
  95. package/dist/error/ClientAuthErrorCodes.mjs +48 -48
  96. package/dist/error/ClientConfigurationError.d.ts +128 -128
  97. package/dist/error/ClientConfigurationError.mjs +135 -135
  98. package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
  99. package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
  100. package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
  101. package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
  102. package/dist/error/InteractionRequiredAuthError.mjs +78 -77
  103. package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
  104. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +6 -5
  105. package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
  106. package/dist/error/InteractionRequiredAuthErrorCodes.mjs +13 -12
  107. package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
  108. package/dist/error/JoseHeaderError.d.ts +15 -15
  109. package/dist/error/JoseHeaderError.mjs +22 -22
  110. package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
  111. package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
  112. package/dist/error/ServerError.d.ts +7 -7
  113. package/dist/error/ServerError.mjs +14 -14
  114. package/dist/index.cjs +8290 -8278
  115. package/dist/index.cjs.map +1 -1
  116. package/dist/index.d.ts +98 -98
  117. package/dist/index.mjs +1 -1
  118. package/dist/logger/Logger.d.ts +95 -95
  119. package/dist/logger/Logger.mjs +188 -188
  120. package/dist/network/INetworkModule.d.ts +29 -29
  121. package/dist/network/INetworkModule.mjs +12 -12
  122. package/dist/network/NetworkManager.d.ts +33 -33
  123. package/dist/network/NetworkManager.mjs +34 -34
  124. package/dist/network/RequestThumbprint.d.ts +18 -18
  125. package/dist/network/ThrottlingUtils.d.ts +42 -42
  126. package/dist/network/ThrottlingUtils.mjs +95 -95
  127. package/dist/packageMetadata.d.ts +2 -2
  128. package/dist/packageMetadata.d.ts.map +1 -1
  129. package/dist/packageMetadata.mjs +4 -4
  130. package/dist/packageMetadata.mjs.map +1 -1
  131. package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
  132. package/dist/request/AuthenticationHeaderParser.mjs +55 -55
  133. package/dist/request/BaseAuthRequest.d.ts +43 -43
  134. package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
  135. package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
  136. package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
  137. package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
  138. package/dist/request/CommonEndSessionRequest.d.ts +21 -21
  139. package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
  140. package/dist/request/CommonRefreshTokenRequest.d.ts +23 -22
  141. package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
  142. package/dist/request/CommonSilentFlowRequest.d.ts +21 -20
  143. package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
  144. package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
  145. package/dist/request/NativeRequest.d.ts +19 -19
  146. package/dist/request/NativeSignOutRequest.d.ts +5 -5
  147. package/dist/request/RequestParameterBuilder.d.ts +217 -217
  148. package/dist/request/RequestParameterBuilder.mjs +381 -381
  149. package/dist/request/RequestValidator.d.ts +33 -33
  150. package/dist/request/RequestValidator.mjs +81 -81
  151. package/dist/request/ScopeSet.d.ts +88 -88
  152. package/dist/request/ScopeSet.mjs +197 -197
  153. package/dist/request/StoreInCache.d.ts +8 -8
  154. package/dist/response/AuthenticationResult.d.ts +41 -41
  155. package/dist/response/AuthorizationCodePayload.d.ts +13 -13
  156. package/dist/response/DeviceCodeResponse.d.ts +25 -25
  157. package/dist/response/ExternalTokenResponse.d.ts +15 -15
  158. package/dist/response/IMDSBadResponse.d.ts +4 -4
  159. package/dist/response/ResponseHandler.d.ts +67 -67
  160. package/dist/response/ResponseHandler.d.ts.map +1 -1
  161. package/dist/response/ResponseHandler.mjs +312 -312
  162. package/dist/response/ResponseHandler.mjs.map +1 -1
  163. package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
  164. package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
  165. package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
  166. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
  167. package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
  168. package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
  169. package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
  170. package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
  171. package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
  172. package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
  173. package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
  174. package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
  175. package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
  176. package/dist/url/IUri.d.ts +12 -12
  177. package/dist/url/UrlString.d.ts +48 -48
  178. package/dist/url/UrlString.mjs +161 -161
  179. package/dist/utils/Constants.d.ts +365 -365
  180. package/dist/utils/Constants.mjs +375 -375
  181. package/dist/utils/FunctionWrappers.d.ts +27 -27
  182. package/dist/utils/FunctionWrappers.mjs +84 -84
  183. package/dist/utils/MsalTypes.d.ts +6 -6
  184. package/dist/utils/ProtocolUtils.d.ts +42 -42
  185. package/dist/utils/ProtocolUtils.mjs +69 -69
  186. package/dist/utils/StringUtils.d.ts +40 -40
  187. package/dist/utils/StringUtils.mjs +95 -95
  188. package/dist/utils/TimeUtils.d.ts +27 -27
  189. package/dist/utils/TimeUtils.mjs +45 -45
  190. package/dist/utils/UrlUtils.d.ts +10 -10
  191. package/dist/utils/UrlUtils.mjs +44 -44
  192. package/package.json +92 -92
  193. package/src/cache/entities/RefreshTokenEntity.ts +3 -1
  194. package/src/cache/utils/CacheHelpers.ts +6 -1
  195. package/src/client/AuthorizationCodeClient.ts +2 -1
  196. package/src/client/RefreshTokenClient.ts +13 -1
  197. package/src/error/InteractionRequiredAuthError.ts +2 -0
  198. package/src/error/InteractionRequiredAuthErrorCodes.ts +1 -0
  199. package/src/packageMetadata.ts +1 -1
  200. package/src/request/CommonRefreshTokenRequest.ts +1 -0
  201. package/src/request/CommonSilentFlowRequest.ts +1 -0
  202. package/src/response/ResponseHandler.ts +8 -4
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v14.4.0 2023-11-07 */
1
+ /*! @azure/msal-common v14.4.1-beta.1 2023-11-14 */
2
2
  'use strict';
3
3
  import { extractTokenClaims } from '../../account/AuthToken.mjs';
4
4
  import { createClientAuthError } from '../../error/ClientAuthError.mjs';
@@ -6,236 +6,239 @@ import { Separators, CredentialType, AuthenticationScheme, SERVER_TELEM_CONSTANT
6
6
  import { TimeUtils } from '../../utils/TimeUtils.mjs';
7
7
  import { tokenClaimsCnfRequiredForSignedJwt } from '../../error/ClientAuthErrorCodes.mjs';
8
8
 
9
- /*
10
- * Copyright (c) Microsoft Corporation. All rights reserved.
11
- * Licensed under the MIT License.
12
- */
13
- /**
14
- * Cache Key: <home_account_id>-<environment>-<credential_type>-<client_id or familyId>-<realm>-<scopes>-<claims hash>-<scheme>
15
- * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com
16
- * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop
17
- * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com
18
- * @param credentialEntity
19
- * @returns
20
- */
21
- function generateCredentialKey(credentialEntity) {
22
- const credentialKey = [
23
- generateAccountId(credentialEntity),
24
- generateCredentialId(credentialEntity),
25
- generateTarget(credentialEntity),
26
- generateClaimsHash(credentialEntity),
27
- generateScheme(credentialEntity),
28
- ];
29
- return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
30
- }
31
- /**
32
- * Create IdTokenEntity
33
- * @param homeAccountId
34
- * @param authenticationResult
35
- * @param clientId
36
- * @param authority
37
- */
38
- function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {
39
- const idTokenEntity = {
40
- credentialType: CredentialType.ID_TOKEN,
41
- homeAccountId: homeAccountId,
42
- environment: environment,
43
- clientId: clientId,
44
- secret: idToken,
45
- realm: tenantId,
46
- };
47
- return idTokenEntity;
48
- }
49
- /**
50
- * Create AccessTokenEntity
51
- * @param homeAccountId
52
- * @param environment
53
- * @param accessToken
54
- * @param clientId
55
- * @param tenantId
56
- * @param scopes
57
- * @param expiresOn
58
- * @param extExpiresOn
59
- */
60
- function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {
61
- const atEntity = {
62
- homeAccountId: homeAccountId,
63
- credentialType: CredentialType.ACCESS_TOKEN,
64
- secret: accessToken,
65
- cachedAt: TimeUtils.nowSeconds().toString(),
66
- expiresOn: expiresOn.toString(),
67
- extendedExpiresOn: extExpiresOn.toString(),
68
- environment: environment,
69
- clientId: clientId,
70
- realm: tenantId,
71
- target: scopes,
72
- tokenType: tokenType || AuthenticationScheme.BEARER,
73
- };
74
- if (userAssertionHash) {
75
- atEntity.userAssertionHash = userAssertionHash;
76
- }
77
- if (refreshOn) {
78
- atEntity.refreshOn = refreshOn.toString();
79
- }
80
- if (requestedClaims) {
81
- atEntity.requestedClaims = requestedClaims;
82
- atEntity.requestedClaimsHash = requestedClaimsHash;
83
- }
84
- /*
85
- * Create Access Token With Auth Scheme instead of regular access token
86
- * Cast to lower to handle "bearer" from ADFS
87
- */
88
- if (atEntity.tokenType?.toLowerCase() !==
89
- AuthenticationScheme.BEARER.toLowerCase()) {
90
- atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;
91
- switch (atEntity.tokenType) {
92
- case AuthenticationScheme.POP:
93
- // Make sure keyId is present and add it to credential
94
- const tokenClaims = extractTokenClaims(accessToken, base64Decode);
95
- if (!tokenClaims?.cnf?.kid) {
96
- throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);
97
- }
98
- atEntity.keyId = tokenClaims.cnf.kid;
99
- break;
100
- case AuthenticationScheme.SSH:
101
- atEntity.keyId = keyId;
102
- }
103
- }
104
- return atEntity;
105
- }
106
- /**
107
- * Create RefreshTokenEntity
108
- * @param homeAccountId
109
- * @param authenticationResult
110
- * @param clientId
111
- * @param authority
112
- */
113
- function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash) {
114
- const rtEntity = {
115
- credentialType: CredentialType.REFRESH_TOKEN,
116
- homeAccountId: homeAccountId,
117
- environment: environment,
118
- clientId: clientId,
119
- secret: refreshToken,
120
- };
121
- if (userAssertionHash) {
122
- rtEntity.userAssertionHash = userAssertionHash;
123
- }
124
- if (familyId) {
125
- rtEntity.familyId = familyId;
126
- }
127
- return rtEntity;
128
- }
129
- function isCredentialEntity(entity) {
130
- return (entity.hasOwnProperty("homeAccountId") &&
131
- entity.hasOwnProperty("environment") &&
132
- entity.hasOwnProperty("credentialType") &&
133
- entity.hasOwnProperty("clientId") &&
134
- entity.hasOwnProperty("secret"));
135
- }
136
- /**
137
- * Validates an entity: checks for all expected params
138
- * @param entity
139
- */
140
- function isAccessTokenEntity(entity) {
141
- if (!entity) {
142
- return false;
143
- }
144
- return (isCredentialEntity(entity) &&
145
- entity.hasOwnProperty("realm") &&
146
- entity.hasOwnProperty("target") &&
147
- (entity["credentialType"] === CredentialType.ACCESS_TOKEN ||
148
- entity["credentialType"] ===
149
- CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));
150
- }
151
- /**
152
- * Validates an entity: checks for all expected params
153
- * @param entity
154
- */
155
- function isIdTokenEntity(entity) {
156
- if (!entity) {
157
- return false;
158
- }
159
- return (isCredentialEntity(entity) &&
160
- entity.hasOwnProperty("realm") &&
161
- entity["credentialType"] === CredentialType.ID_TOKEN);
162
- }
163
- /**
164
- * Validates an entity: checks for all expected params
165
- * @param entity
166
- */
167
- function isRefreshTokenEntity(entity) {
168
- if (!entity) {
169
- return false;
170
- }
171
- return (isCredentialEntity(entity) &&
172
- entity["credentialType"] === CredentialType.REFRESH_TOKEN);
173
- }
174
- /**
175
- * Generate Account Id key component as per the schema: <home_account_id>-<environment>
176
- */
177
- function generateAccountId(credentialEntity) {
178
- const accountId = [
179
- credentialEntity.homeAccountId,
180
- credentialEntity.environment,
181
- ];
182
- return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
183
- }
184
- /**
185
- * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>
186
- */
187
- function generateCredentialId(credentialEntity) {
188
- const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN
189
- ? credentialEntity.familyId || credentialEntity.clientId
190
- : credentialEntity.clientId;
191
- const credentialId = [
192
- credentialEntity.credentialType,
193
- clientOrFamilyId,
194
- credentialEntity.realm || "",
195
- ];
196
- return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
197
- }
198
- /**
199
- * Generate target key component as per schema: <target>
200
- */
201
- function generateTarget(credentialEntity) {
202
- return (credentialEntity.target || "").toLowerCase();
203
- }
204
- /**
205
- * Generate requested claims key component as per schema: <requestedClaims>
206
- */
207
- function generateClaimsHash(credentialEntity) {
208
- return (credentialEntity.requestedClaimsHash || "").toLowerCase();
209
- }
210
- /**
211
- * Generate scheme key componenet as per schema: <scheme>
212
- */
213
- function generateScheme(credentialEntity) {
214
- /*
215
- * PoP Tokens and SSH certs include scheme in cache key
216
- * Cast to lowercase to handle "bearer" from ADFS
217
- */
218
- return credentialEntity.tokenType &&
219
- credentialEntity.tokenType.toLowerCase() !==
220
- AuthenticationScheme.BEARER.toLowerCase()
221
- ? credentialEntity.tokenType.toLowerCase()
222
- : "";
223
- }
224
- /**
225
- * validates if a given cache entry is "Telemetry", parses <key,value>
226
- * @param key
227
- * @param entity
228
- */
229
- function isServerTelemetryEntity(key, entity) {
230
- const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;
231
- let validateEntity = true;
232
- if (entity) {
233
- validateEntity =
234
- entity.hasOwnProperty("failedRequests") &&
235
- entity.hasOwnProperty("errors") &&
236
- entity.hasOwnProperty("cacheHits");
237
- }
238
- return validateKey && validateEntity;
9
+ /*
10
+ * Copyright (c) Microsoft Corporation. All rights reserved.
11
+ * Licensed under the MIT License.
12
+ */
13
+ /**
14
+ * Cache Key: <home_account_id>-<environment>-<credential_type>-<client_id or familyId>-<realm>-<scopes>-<claims hash>-<scheme>
15
+ * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com
16
+ * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop
17
+ * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com
18
+ * @param credentialEntity
19
+ * @returns
20
+ */
21
+ function generateCredentialKey(credentialEntity) {
22
+ const credentialKey = [
23
+ generateAccountId(credentialEntity),
24
+ generateCredentialId(credentialEntity),
25
+ generateTarget(credentialEntity),
26
+ generateClaimsHash(credentialEntity),
27
+ generateScheme(credentialEntity),
28
+ ];
29
+ return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
30
+ }
31
+ /**
32
+ * Create IdTokenEntity
33
+ * @param homeAccountId
34
+ * @param authenticationResult
35
+ * @param clientId
36
+ * @param authority
37
+ */
38
+ function createIdTokenEntity(homeAccountId, environment, idToken, clientId, tenantId) {
39
+ const idTokenEntity = {
40
+ credentialType: CredentialType.ID_TOKEN,
41
+ homeAccountId: homeAccountId,
42
+ environment: environment,
43
+ clientId: clientId,
44
+ secret: idToken,
45
+ realm: tenantId,
46
+ };
47
+ return idTokenEntity;
48
+ }
49
+ /**
50
+ * Create AccessTokenEntity
51
+ * @param homeAccountId
52
+ * @param environment
53
+ * @param accessToken
54
+ * @param clientId
55
+ * @param tenantId
56
+ * @param scopes
57
+ * @param expiresOn
58
+ * @param extExpiresOn
59
+ */
60
+ function createAccessTokenEntity(homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, base64Decode, refreshOn, tokenType, userAssertionHash, keyId, requestedClaims, requestedClaimsHash) {
61
+ const atEntity = {
62
+ homeAccountId: homeAccountId,
63
+ credentialType: CredentialType.ACCESS_TOKEN,
64
+ secret: accessToken,
65
+ cachedAt: TimeUtils.nowSeconds().toString(),
66
+ expiresOn: expiresOn.toString(),
67
+ extendedExpiresOn: extExpiresOn.toString(),
68
+ environment: environment,
69
+ clientId: clientId,
70
+ realm: tenantId,
71
+ target: scopes,
72
+ tokenType: tokenType || AuthenticationScheme.BEARER,
73
+ };
74
+ if (userAssertionHash) {
75
+ atEntity.userAssertionHash = userAssertionHash;
76
+ }
77
+ if (refreshOn) {
78
+ atEntity.refreshOn = refreshOn.toString();
79
+ }
80
+ if (requestedClaims) {
81
+ atEntity.requestedClaims = requestedClaims;
82
+ atEntity.requestedClaimsHash = requestedClaimsHash;
83
+ }
84
+ /*
85
+ * Create Access Token With Auth Scheme instead of regular access token
86
+ * Cast to lower to handle "bearer" from ADFS
87
+ */
88
+ if (atEntity.tokenType?.toLowerCase() !==
89
+ AuthenticationScheme.BEARER.toLowerCase()) {
90
+ atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;
91
+ switch (atEntity.tokenType) {
92
+ case AuthenticationScheme.POP:
93
+ // Make sure keyId is present and add it to credential
94
+ const tokenClaims = extractTokenClaims(accessToken, base64Decode);
95
+ if (!tokenClaims?.cnf?.kid) {
96
+ throw createClientAuthError(tokenClaimsCnfRequiredForSignedJwt);
97
+ }
98
+ atEntity.keyId = tokenClaims.cnf.kid;
99
+ break;
100
+ case AuthenticationScheme.SSH:
101
+ atEntity.keyId = keyId;
102
+ }
103
+ }
104
+ return atEntity;
105
+ }
106
+ /**
107
+ * Create RefreshTokenEntity
108
+ * @param homeAccountId
109
+ * @param authenticationResult
110
+ * @param clientId
111
+ * @param authority
112
+ */
113
+ function createRefreshTokenEntity(homeAccountId, environment, refreshToken, clientId, familyId, userAssertionHash, expiresOn) {
114
+ const rtEntity = {
115
+ credentialType: CredentialType.REFRESH_TOKEN,
116
+ homeAccountId: homeAccountId,
117
+ environment: environment,
118
+ clientId: clientId,
119
+ secret: refreshToken,
120
+ };
121
+ if (userAssertionHash) {
122
+ rtEntity.userAssertionHash = userAssertionHash;
123
+ }
124
+ if (familyId) {
125
+ rtEntity.familyId = familyId;
126
+ }
127
+ if (expiresOn) {
128
+ rtEntity.expiresOn = expiresOn;
129
+ }
130
+ return rtEntity;
131
+ }
132
+ function isCredentialEntity(entity) {
133
+ return (entity.hasOwnProperty("homeAccountId") &&
134
+ entity.hasOwnProperty("environment") &&
135
+ entity.hasOwnProperty("credentialType") &&
136
+ entity.hasOwnProperty("clientId") &&
137
+ entity.hasOwnProperty("secret"));
138
+ }
139
+ /**
140
+ * Validates an entity: checks for all expected params
141
+ * @param entity
142
+ */
143
+ function isAccessTokenEntity(entity) {
144
+ if (!entity) {
145
+ return false;
146
+ }
147
+ return (isCredentialEntity(entity) &&
148
+ entity.hasOwnProperty("realm") &&
149
+ entity.hasOwnProperty("target") &&
150
+ (entity["credentialType"] === CredentialType.ACCESS_TOKEN ||
151
+ entity["credentialType"] ===
152
+ CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));
153
+ }
154
+ /**
155
+ * Validates an entity: checks for all expected params
156
+ * @param entity
157
+ */
158
+ function isIdTokenEntity(entity) {
159
+ if (!entity) {
160
+ return false;
161
+ }
162
+ return (isCredentialEntity(entity) &&
163
+ entity.hasOwnProperty("realm") &&
164
+ entity["credentialType"] === CredentialType.ID_TOKEN);
165
+ }
166
+ /**
167
+ * Validates an entity: checks for all expected params
168
+ * @param entity
169
+ */
170
+ function isRefreshTokenEntity(entity) {
171
+ if (!entity) {
172
+ return false;
173
+ }
174
+ return (isCredentialEntity(entity) &&
175
+ entity["credentialType"] === CredentialType.REFRESH_TOKEN);
176
+ }
177
+ /**
178
+ * Generate Account Id key component as per the schema: <home_account_id>-<environment>
179
+ */
180
+ function generateAccountId(credentialEntity) {
181
+ const accountId = [
182
+ credentialEntity.homeAccountId,
183
+ credentialEntity.environment,
184
+ ];
185
+ return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
186
+ }
187
+ /**
188
+ * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>
189
+ */
190
+ function generateCredentialId(credentialEntity) {
191
+ const clientOrFamilyId = credentialEntity.credentialType === CredentialType.REFRESH_TOKEN
192
+ ? credentialEntity.familyId || credentialEntity.clientId
193
+ : credentialEntity.clientId;
194
+ const credentialId = [
195
+ credentialEntity.credentialType,
196
+ clientOrFamilyId,
197
+ credentialEntity.realm || "",
198
+ ];
199
+ return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();
200
+ }
201
+ /**
202
+ * Generate target key component as per schema: <target>
203
+ */
204
+ function generateTarget(credentialEntity) {
205
+ return (credentialEntity.target || "").toLowerCase();
206
+ }
207
+ /**
208
+ * Generate requested claims key component as per schema: <requestedClaims>
209
+ */
210
+ function generateClaimsHash(credentialEntity) {
211
+ return (credentialEntity.requestedClaimsHash || "").toLowerCase();
212
+ }
213
+ /**
214
+ * Generate scheme key componenet as per schema: <scheme>
215
+ */
216
+ function generateScheme(credentialEntity) {
217
+ /*
218
+ * PoP Tokens and SSH certs include scheme in cache key
219
+ * Cast to lowercase to handle "bearer" from ADFS
220
+ */
221
+ return credentialEntity.tokenType &&
222
+ credentialEntity.tokenType.toLowerCase() !==
223
+ AuthenticationScheme.BEARER.toLowerCase()
224
+ ? credentialEntity.tokenType.toLowerCase()
225
+ : "";
226
+ }
227
+ /**
228
+ * validates if a given cache entry is "Telemetry", parses <key,value>
229
+ * @param key
230
+ * @param entity
231
+ */
232
+ function isServerTelemetryEntity(key, entity) {
233
+ const validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;
234
+ let validateEntity = true;
235
+ if (entity) {
236
+ validateEntity =
237
+ entity.hasOwnProperty("failedRequests") &&
238
+ entity.hasOwnProperty("errors") &&
239
+ entity.hasOwnProperty("cacheHits");
240
+ }
241
+ return validateKey && validateEntity;
239
242
  }
240
243
 
241
244
  export { createAccessTokenEntity, createIdTokenEntity, createRefreshTokenEntity, generateCredentialKey, isAccessTokenEntity, isCredentialEntity, isIdTokenEntity, isRefreshTokenEntity, isServerTelemetryEntity };
@@ -1 +1 @@
1
- {"version":3,"file":"CacheHelpers.mjs","sources":["../../../src/cache/utils/CacheHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAWA;AAOA;AACA;AACA;;;;;AAUG;AACH;AAcA;;;;;;AAMG,QAAA,cAAA,CAAA,gBAAA,CAAA;AACH,QAAgB,kBAAA,CAAA,gBAAmB,CAC/B;AAkBJ,QAAA,cAAA,CAAA,gBAAA,CAAA;;;;;;;;;;AAUG;AACH,SAAA,mBAAuC,CAAA,aACtB,EAAA,WAAA,SACb,EAAA,QAAA,EAAa,UACF;AAwEf,IAAA,MAAA,aAAA,GAAA;;;;;;AAMG,QAAA,KAAA,EAAA,QAAA;AACH,KAAA,CAAA;AA2BA,IAAA,OAAA,aAAgB;AAUhB,CAAA;;;AAGG;AACH;AAeA;;;AAGG;AACH;AAYA;;;AAGG,IAAA,MAAA,QAAA,GAAA;AACH,QAAA,aAAA,EAAA;AAoEA,QAAA,cAAA,EAAA,cAAA,CAAA,YAAA;;;;AAIG,QAAA,iBAAA,EAAA,YAAA,CAAA,QAAA,EAAA;AACH,QAAA,WAAA,EAAA,WAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"CacheHelpers.mjs","sources":["../../../src/cache/utils/CacheHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAWA;AAOA;AACA;AACA;;;;;AAUG;AACH;AAcA;;;;;;AAMG,QAAA,cAAA,CAAA,gBAAA,CAAA;AACH,QAAgB,kBAAA,CAAA,gBAAmB,CAC/B;AAkBJ,QAAA,cAAA,CAAA,gBAAA,CAAA;;;;;;;;;;AAUG;AACH,SAAA,mBAAuC,CAAA,aACtB,EAAA,WAAA,SACb,EAAA,QAAA,EAAa,UACF;AAwEf,IAAA,MAAA,aAAA,GAAA;;;;;;AAMG,QAAA,KAAA,EAAA,QAAA;AACH,KAAA,CAAA;AAgCA,IAAA,OAAA,aAAgB;AAUhB,CAAA;;;AAGG;AACH;AAeA;;;AAGG;AACH;AAYA;;;AAGG,IAAA,MAAA,QAAA,GAAA;AACH,QAAA,aAAA,EAAA;AAoEA,QAAA,cAAA,EAAA,cAAA,CAAA,YAAA;;;;AAIG,QAAA,iBAAA,EAAA,YAAA,CAAA,QAAA,EAAA;AACH,QAAA,WAAA,EAAA,WAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,68 +1,68 @@
1
- import { AccountEntity } from "../entities/AccountEntity";
2
- import { IdTokenEntity } from "../entities/IdTokenEntity";
3
- import { AccessTokenEntity } from "../entities/AccessTokenEntity";
4
- import { RefreshTokenEntity } from "../entities/RefreshTokenEntity";
5
- import { AppMetadataEntity } from "../entities/AppMetadataEntity";
6
- import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity";
7
- import { ThrottlingEntity } from "../entities/ThrottlingEntity";
8
- import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity";
9
- import { AuthenticationScheme } from "../../utils/Constants";
10
- import { ScopeSet } from "../../request/ScopeSet";
11
- import { AccountInfo } from "../../account/AccountInfo";
12
- /** @internal */
13
- export type AccountCache = Record<string, AccountEntity>;
14
- /** @internal */
15
- export type IdTokenCache = Record<string, IdTokenEntity>;
16
- /** @internal */
17
- export type AccessTokenCache = Record<string, AccessTokenEntity>;
18
- /** @internal */
19
- export type RefreshTokenCache = Record<string, RefreshTokenEntity>;
20
- /** @internal */
21
- export type AppMetadataCache = Record<string, AppMetadataEntity>;
22
- /**
23
- * Object type of all accepted cache types
24
- * @internal
25
- */
26
- export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string;
27
- /**
28
- * Object type of all credential types
29
- * @internal
30
- */
31
- export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity;
32
- /**
33
- * Account: <home_account_id>-<environment>-<realm*>
34
- */
35
- export type AccountFilter = Omit<Partial<AccountInfo>, "idToken" | "idTokenClaims"> & {
36
- realm?: string;
37
- loginHint?: string;
38
- sid?: string;
39
- };
40
- /**
41
- * Credential: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<scheme*>
42
- */
43
- export type CredentialFilter = {
44
- homeAccountId?: string;
45
- environment?: string;
46
- credentialType?: string;
47
- clientId?: string;
48
- familyId?: string;
49
- realm?: string;
50
- target?: ScopeSet;
51
- userAssertionHash?: string;
52
- tokenType?: AuthenticationScheme;
53
- keyId?: string;
54
- requestedClaimsHash?: string;
55
- };
56
- /**
57
- * AppMetadata: appmetadata-<environment>-<client_id>
58
- */
59
- export type AppMetadataFilter = {
60
- environment?: string;
61
- clientId?: string;
62
- };
63
- export type TokenKeys = {
64
- idToken: string[];
65
- accessToken: string[];
66
- refreshToken: string[];
67
- };
1
+ import { AccountEntity } from "../entities/AccountEntity";
2
+ import { IdTokenEntity } from "../entities/IdTokenEntity";
3
+ import { AccessTokenEntity } from "../entities/AccessTokenEntity";
4
+ import { RefreshTokenEntity } from "../entities/RefreshTokenEntity";
5
+ import { AppMetadataEntity } from "../entities/AppMetadataEntity";
6
+ import { ServerTelemetryEntity } from "../entities/ServerTelemetryEntity";
7
+ import { ThrottlingEntity } from "../entities/ThrottlingEntity";
8
+ import { AuthorityMetadataEntity } from "../entities/AuthorityMetadataEntity";
9
+ import { AuthenticationScheme } from "../../utils/Constants";
10
+ import { ScopeSet } from "../../request/ScopeSet";
11
+ import { AccountInfo } from "../../account/AccountInfo";
12
+ /** @internal */
13
+ export type AccountCache = Record<string, AccountEntity>;
14
+ /** @internal */
15
+ export type IdTokenCache = Record<string, IdTokenEntity>;
16
+ /** @internal */
17
+ export type AccessTokenCache = Record<string, AccessTokenEntity>;
18
+ /** @internal */
19
+ export type RefreshTokenCache = Record<string, RefreshTokenEntity>;
20
+ /** @internal */
21
+ export type AppMetadataCache = Record<string, AppMetadataEntity>;
22
+ /**
23
+ * Object type of all accepted cache types
24
+ * @internal
25
+ */
26
+ export type ValidCacheType = AccountEntity | IdTokenEntity | AccessTokenEntity | RefreshTokenEntity | AppMetadataEntity | AuthorityMetadataEntity | ServerTelemetryEntity | ThrottlingEntity | string;
27
+ /**
28
+ * Object type of all credential types
29
+ * @internal
30
+ */
31
+ export type ValidCredentialType = IdTokenEntity | AccessTokenEntity | RefreshTokenEntity;
32
+ /**
33
+ * Account: <home_account_id>-<environment>-<realm*>
34
+ */
35
+ export type AccountFilter = Omit<Partial<AccountInfo>, "idToken" | "idTokenClaims"> & {
36
+ realm?: string;
37
+ loginHint?: string;
38
+ sid?: string;
39
+ };
40
+ /**
41
+ * Credential: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<scheme*>
42
+ */
43
+ export type CredentialFilter = {
44
+ homeAccountId?: string;
45
+ environment?: string;
46
+ credentialType?: string;
47
+ clientId?: string;
48
+ familyId?: string;
49
+ realm?: string;
50
+ target?: ScopeSet;
51
+ userAssertionHash?: string;
52
+ tokenType?: AuthenticationScheme;
53
+ keyId?: string;
54
+ requestedClaimsHash?: string;
55
+ };
56
+ /**
57
+ * AppMetadata: appmetadata-<environment>-<client_id>
58
+ */
59
+ export type AppMetadataFilter = {
60
+ environment?: string;
61
+ clientId?: string;
62
+ };
63
+ export type TokenKeys = {
64
+ idToken: string[];
65
+ accessToken: string[];
66
+ refreshToken: string[];
67
+ };
68
68
  //# sourceMappingURL=CacheTypes.d.ts.map