@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.
- package/dist/account/AccountInfo.d.ts +31 -31
- package/dist/account/AuthToken.d.ts +17 -17
- package/dist/account/AuthToken.mjs +58 -58
- package/dist/account/CcsCredential.d.ts +9 -9
- package/dist/account/CcsCredential.mjs +8 -8
- package/dist/account/ClientCredentials.d.ts +14 -14
- package/dist/account/ClientInfo.d.ts +19 -19
- package/dist/account/ClientInfo.mjs +37 -37
- package/dist/account/TokenClaims.d.ts +65 -65
- package/dist/authority/Authority.d.ts +249 -249
- package/dist/authority/Authority.mjs +788 -788
- package/dist/authority/AuthorityFactory.d.ts +31 -31
- package/dist/authority/AuthorityFactory.mjs +47 -47
- package/dist/authority/AuthorityMetadata.d.ts +503 -503
- package/dist/authority/AuthorityMetadata.mjs +603 -603
- package/dist/authority/AuthorityOptions.d.ts +27 -27
- package/dist/authority/AuthorityOptions.mjs +18 -18
- package/dist/authority/AuthorityType.d.ts +10 -10
- package/dist/authority/AuthorityType.mjs +13 -13
- package/dist/authority/AzureRegion.d.ts +1 -1
- package/dist/authority/AzureRegionConfiguration.d.ts +5 -5
- package/dist/authority/CloudDiscoveryMetadata.d.ts +5 -5
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.d.ts +13 -13
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +8 -8
- package/dist/authority/CloudInstanceDiscoveryResponse.d.ts +9 -9
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs +8 -8
- package/dist/authority/ImdsOptions.d.ts +5 -5
- package/dist/authority/OIDCOptions.d.ts +8 -8
- package/dist/authority/OpenIdConfigResponse.d.ts +11 -11
- package/dist/authority/OpenIdConfigResponse.mjs +10 -10
- package/dist/authority/ProtocolMode.d.ts +8 -8
- package/dist/authority/ProtocolMode.mjs +11 -11
- package/dist/authority/RegionDiscovery.d.ts +32 -32
- package/dist/authority/RegionDiscovery.mjs +106 -106
- package/dist/authority/RegionDiscoveryMetadata.d.ts +6 -6
- package/dist/broker/nativeBroker/INativeBrokerPlugin.d.ts +15 -15
- package/dist/cache/CacheManager.d.ts +485 -485
- package/dist/cache/CacheManager.mjs +1102 -1102
- package/dist/cache/entities/AccessTokenEntity.d.ts +25 -25
- package/dist/cache/entities/AccountEntity.d.ts +101 -101
- package/dist/cache/entities/AccountEntity.mjs +218 -218
- package/dist/cache/entities/AppMetadataEntity.d.ts +39 -39
- package/dist/cache/entities/AppMetadataEntity.mjs +66 -66
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts +48 -48
- package/dist/cache/entities/AuthorityMetadataEntity.mjs +78 -78
- package/dist/cache/entities/CacheRecord.d.ts +14 -14
- package/dist/cache/entities/CacheRecord.mjs +14 -14
- package/dist/cache/entities/CredentialEntity.d.ts +30 -30
- package/dist/cache/entities/IdTokenEntity.d.ts +8 -8
- package/dist/cache/entities/RefreshTokenEntity.d.ts +7 -5
- package/dist/cache/entities/RefreshTokenEntity.d.ts.map +1 -1
- package/dist/cache/entities/ServerTelemetryEntity.d.ts +5 -5
- package/dist/cache/entities/ThrottlingEntity.d.ts +13 -13
- package/dist/cache/entities/ThrottlingEntity.mjs +23 -23
- package/dist/cache/interface/ICacheManager.d.ts +166 -166
- package/dist/cache/interface/ICachePlugin.d.ts +5 -5
- package/dist/cache/interface/ISerializableTokenCache.d.ts +4 -4
- package/dist/cache/persistence/TokenCacheContext.d.ts +23 -23
- package/dist/cache/persistence/TokenCacheContext.mjs +25 -25
- package/dist/cache/utils/CacheHelpers.d.ts +64 -64
- package/dist/cache/utils/CacheHelpers.d.ts.map +1 -1
- package/dist/cache/utils/CacheHelpers.mjs +234 -231
- package/dist/cache/utils/CacheHelpers.mjs.map +1 -1
- package/dist/cache/utils/CacheTypes.d.ts +67 -67
- package/dist/client/AuthorizationCodeClient.d.ts +74 -74
- package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.mjs +402 -402
- package/dist/client/AuthorizationCodeClient.mjs.map +1 -1
- package/dist/client/BaseClient.d.ts +51 -51
- package/dist/client/BaseClient.mjs +100 -100
- package/dist/client/RefreshTokenClient.d.ts +35 -35
- package/dist/client/RefreshTokenClient.d.ts.map +1 -1
- package/dist/client/RefreshTokenClient.mjs +193 -187
- package/dist/client/RefreshTokenClient.mjs.map +1 -1
- package/dist/client/SilentFlowClient.d.ts +27 -27
- package/dist/client/SilentFlowClient.mjs +118 -118
- package/dist/config/AppTokenProvider.d.ts +38 -38
- package/dist/config/ClientConfiguration.d.ts +150 -150
- package/dist/config/ClientConfiguration.mjs +97 -97
- package/dist/crypto/ICrypto.d.ts +58 -58
- package/dist/crypto/ICrypto.mjs +30 -30
- package/dist/crypto/IGuidGenerator.d.ts +4 -4
- package/dist/crypto/JoseHeader.d.ts +22 -22
- package/dist/crypto/JoseHeader.mjs +37 -37
- package/dist/crypto/PopTokenGenerator.d.ts +60 -60
- package/dist/crypto/PopTokenGenerator.mjs +82 -82
- package/dist/crypto/SignedHttpRequest.d.ts +15 -15
- package/dist/error/AuthError.d.ts +44 -44
- package/dist/error/AuthError.mjs +46 -46
- package/dist/error/AuthErrorCodes.d.ts +5 -5
- package/dist/error/AuthErrorCodes.mjs +9 -9
- package/dist/error/ClientAuthError.d.ts +237 -237
- package/dist/error/ClientAuthError.mjs +249 -249
- package/dist/error/ClientAuthErrorCodes.d.ts +44 -44
- package/dist/error/ClientAuthErrorCodes.mjs +48 -48
- package/dist/error/ClientConfigurationError.d.ts +128 -128
- package/dist/error/ClientConfigurationError.mjs +135 -135
- package/dist/error/ClientConfigurationErrorCodes.d.ts +22 -22
- package/dist/error/ClientConfigurationErrorCodes.mjs +26 -26
- package/dist/error/InteractionRequiredAuthError.d.ts +57 -57
- package/dist/error/InteractionRequiredAuthError.d.ts.map +1 -1
- package/dist/error/InteractionRequiredAuthError.mjs +78 -77
- package/dist/error/InteractionRequiredAuthError.mjs.map +1 -1
- package/dist/error/InteractionRequiredAuthErrorCodes.d.ts +6 -5
- package/dist/error/InteractionRequiredAuthErrorCodes.d.ts.map +1 -1
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs +13 -12
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs.map +1 -1
- package/dist/error/JoseHeaderError.d.ts +15 -15
- package/dist/error/JoseHeaderError.mjs +22 -22
- package/dist/error/JoseHeaderErrorCodes.d.ts +2 -2
- package/dist/error/JoseHeaderErrorCodes.mjs +6 -6
- package/dist/error/ServerError.d.ts +7 -7
- package/dist/error/ServerError.mjs +14 -14
- package/dist/index.cjs +8290 -8278
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +98 -98
- package/dist/index.mjs +1 -1
- package/dist/logger/Logger.d.ts +95 -95
- package/dist/logger/Logger.mjs +188 -188
- package/dist/network/INetworkModule.d.ts +29 -29
- package/dist/network/INetworkModule.mjs +12 -12
- package/dist/network/NetworkManager.d.ts +33 -33
- package/dist/network/NetworkManager.mjs +34 -34
- package/dist/network/RequestThumbprint.d.ts +18 -18
- package/dist/network/ThrottlingUtils.d.ts +42 -42
- package/dist/network/ThrottlingUtils.mjs +95 -95
- package/dist/packageMetadata.d.ts +2 -2
- package/dist/packageMetadata.d.ts.map +1 -1
- package/dist/packageMetadata.mjs +4 -4
- package/dist/packageMetadata.mjs.map +1 -1
- package/dist/request/AuthenticationHeaderParser.d.ts +19 -19
- package/dist/request/AuthenticationHeaderParser.mjs +55 -55
- package/dist/request/BaseAuthRequest.d.ts +43 -43
- package/dist/request/CommonAuthorizationCodeRequest.d.ts +27 -27
- package/dist/request/CommonAuthorizationUrlRequest.d.ts +50 -50
- package/dist/request/CommonClientCredentialRequest.d.ts +17 -17
- package/dist/request/CommonDeviceCodeRequest.d.ts +21 -21
- package/dist/request/CommonEndSessionRequest.d.ts +21 -21
- package/dist/request/CommonOnBehalfOfRequest.d.ts +13 -13
- package/dist/request/CommonRefreshTokenRequest.d.ts +23 -22
- package/dist/request/CommonRefreshTokenRequest.d.ts.map +1 -1
- package/dist/request/CommonSilentFlowRequest.d.ts +21 -20
- package/dist/request/CommonSilentFlowRequest.d.ts.map +1 -1
- package/dist/request/CommonUsernamePasswordRequest.d.ts +17 -17
- package/dist/request/NativeRequest.d.ts +19 -19
- package/dist/request/NativeSignOutRequest.d.ts +5 -5
- package/dist/request/RequestParameterBuilder.d.ts +217 -217
- package/dist/request/RequestParameterBuilder.mjs +381 -381
- package/dist/request/RequestValidator.d.ts +33 -33
- package/dist/request/RequestValidator.mjs +81 -81
- package/dist/request/ScopeSet.d.ts +88 -88
- package/dist/request/ScopeSet.mjs +197 -197
- package/dist/request/StoreInCache.d.ts +8 -8
- package/dist/response/AuthenticationResult.d.ts +41 -41
- package/dist/response/AuthorizationCodePayload.d.ts +13 -13
- package/dist/response/DeviceCodeResponse.d.ts +25 -25
- package/dist/response/ExternalTokenResponse.d.ts +15 -15
- package/dist/response/IMDSBadResponse.d.ts +4 -4
- package/dist/response/ResponseHandler.d.ts +67 -67
- package/dist/response/ResponseHandler.d.ts.map +1 -1
- package/dist/response/ResponseHandler.mjs +312 -312
- package/dist/response/ResponseHandler.mjs.map +1 -1
- package/dist/response/ServerAuthorizationCodeResponse.d.ts +25 -25
- package/dist/response/ServerAuthorizationTokenResponse.d.ts +46 -46
- package/dist/telemetry/performance/IPerformanceClient.d.ts +51 -51
- package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +5 -5
- package/dist/telemetry/performance/PerformanceClient.d.ts +191 -191
- package/dist/telemetry/performance/PerformanceClient.mjs +409 -409
- package/dist/telemetry/performance/PerformanceEvent.d.ts +464 -464
- package/dist/telemetry/performance/PerformanceEvent.mjs +253 -253
- package/dist/telemetry/performance/StubPerformanceClient.d.ts +24 -24
- package/dist/telemetry/performance/StubPerformanceClient.mjs +76 -76
- package/dist/telemetry/server/ServerTelemetryManager.d.ts +66 -66
- package/dist/telemetry/server/ServerTelemetryManager.mjs +201 -201
- package/dist/telemetry/server/ServerTelemetryRequest.d.ts +8 -8
- package/dist/url/IUri.d.ts +12 -12
- package/dist/url/UrlString.d.ts +48 -48
- package/dist/url/UrlString.mjs +161 -161
- package/dist/utils/Constants.d.ts +365 -365
- package/dist/utils/Constants.mjs +375 -375
- package/dist/utils/FunctionWrappers.d.ts +27 -27
- package/dist/utils/FunctionWrappers.mjs +84 -84
- package/dist/utils/MsalTypes.d.ts +6 -6
- package/dist/utils/ProtocolUtils.d.ts +42 -42
- package/dist/utils/ProtocolUtils.mjs +69 -69
- package/dist/utils/StringUtils.d.ts +40 -40
- package/dist/utils/StringUtils.mjs +95 -95
- package/dist/utils/TimeUtils.d.ts +27 -27
- package/dist/utils/TimeUtils.mjs +45 -45
- package/dist/utils/UrlUtils.d.ts +10 -10
- package/dist/utils/UrlUtils.mjs +44 -44
- package/package.json +92 -92
- package/src/cache/entities/RefreshTokenEntity.ts +3 -1
- package/src/cache/utils/CacheHelpers.ts +6 -1
- package/src/client/AuthorizationCodeClient.ts +2 -1
- package/src/client/RefreshTokenClient.ts +13 -1
- package/src/error/InteractionRequiredAuthError.ts +2 -0
- package/src/error/InteractionRequiredAuthErrorCodes.ts +1 -0
- package/src/packageMetadata.ts +1 -1
- package/src/request/CommonRefreshTokenRequest.ts +1 -0
- package/src/request/CommonSilentFlowRequest.ts +1 -0
- package/src/response/ResponseHandler.ts +8 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v14.4.
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
entity.hasOwnProperty("
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const
|
|
192
|
-
credentialEntity.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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;
|
|
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
|