@azure/msal-common 16.15.0 → 16.16.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.mjs +1 -1
- package/dist/account/AuthToken.mjs +1 -1
- package/dist/account/CcsCredential.mjs +1 -1
- package/dist/account/ClientInfo.mjs +1 -1
- package/dist/account/TokenClaims.mjs +1 -1
- package/dist/authority/Authority.mjs +1 -1
- package/dist/authority/AuthorityFactory.mjs +1 -1
- package/dist/authority/AuthorityMetadata.mjs +1 -1
- package/dist/authority/AuthorityOptions.mjs +1 -1
- package/dist/authority/AuthorityType.mjs +1 -1
- package/dist/authority/CloudInstanceDiscoveryErrorResponse.mjs +1 -1
- package/dist/authority/CloudInstanceDiscoveryResponse.mjs +1 -1
- package/dist/authority/OpenIdConfigResponse.mjs +1 -1
- package/dist/authority/ProtocolMode.mjs +1 -1
- package/dist/authority/RegionDiscovery.mjs +1 -1
- package/dist/cache/CacheManager.mjs +54 -14
- package/dist/cache/CacheManager.mjs.map +1 -1
- package/dist/cache/persistence/TokenCacheContext.mjs +1 -1
- package/dist/cache/utils/AccountEntityUtils.mjs +1 -1
- package/dist/cache/utils/CacheHelpers.mjs +1 -1
- package/dist/client/AuthorizationCodeClient.mjs +1 -1
- package/dist/client/RefreshTokenClient.mjs +1 -1
- package/dist/client/SilentFlowClient.mjs +1 -1
- package/dist/config/ClientConfiguration.mjs +1 -1
- package/dist/constants/AADServerParamKeys.mjs +1 -1
- package/dist/crypto/DpopProofGenerator.mjs +17 -7
- package/dist/crypto/DpopProofGenerator.mjs.map +1 -1
- package/dist/crypto/ICrypto.mjs +1 -1
- package/dist/crypto/ITokenBindingKeyManager.mjs +1 -1
- package/dist/crypto/ITokenBindingKeyManager.mjs.map +1 -1
- package/dist/crypto/JoseHeader.mjs +1 -1
- package/dist/crypto/PopTokenGenerator.mjs +1 -1
- package/dist/error/AuthError.mjs +1 -1
- package/dist/error/AuthErrorCodes.mjs +1 -1
- package/dist/error/CacheError.mjs +1 -1
- package/dist/error/CacheErrorCodes.mjs +1 -1
- package/dist/error/ClientAuthError.mjs +1 -1
- package/dist/error/ClientAuthErrorCodes.mjs +1 -1
- package/dist/error/ClientConfigurationError.mjs +1 -1
- package/dist/error/ClientConfigurationErrorCodes.mjs +1 -1
- package/dist/error/InteractionRequiredAuthError.mjs +1 -1
- package/dist/error/InteractionRequiredAuthErrorCodes.mjs +1 -1
- package/dist/error/JoseHeaderError.mjs +1 -1
- package/dist/error/JoseHeaderErrorCodes.mjs +1 -1
- package/dist/error/NetworkError.mjs +1 -1
- package/dist/error/PlatformBrokerError.mjs +1 -1
- package/dist/error/ServerError.mjs +1 -1
- package/dist/index-node.mjs +1 -1
- package/dist/index.mjs +2 -1
- package/dist/index.mjs.map +1 -1
- package/dist/logger/Logger.mjs +1 -1
- package/dist/network/INetworkModule.mjs +1 -1
- package/dist/network/RequestThumbprint.mjs +1 -1
- package/dist/network/ResponseHeaders.mjs +1 -1
- package/dist/network/ThrottlingUtils.mjs +1 -1
- package/dist/packageMetadata.mjs +2 -2
- package/dist/protocol/Authorize.mjs +1 -1
- package/dist/protocol/Token.mjs +1 -1
- package/dist/request/AuthenticationHeaderParser.mjs +1 -1
- package/dist/request/BaseAuthRequest.mjs +1 -1
- package/dist/request/RequestParameterBuilder.mjs +1 -1
- package/dist/request/ScopeSet.mjs +1 -1
- package/dist/response/ResponseHandler.mjs +1 -1
- package/dist/telemetry/performance/PerformanceClient.mjs +1 -1
- package/dist/telemetry/performance/PerformanceEvent.mjs +1 -1
- package/dist/telemetry/performance/PerformanceEvents.mjs +1 -1
- package/dist/telemetry/performance/StubPerformanceClient.mjs +1 -1
- package/dist/telemetry/server/ServerTelemetryManager.mjs +1 -1
- package/dist/url/UrlString.mjs +1 -1
- package/dist/utils/ClientAssertionUtils.mjs +1 -1
- package/dist/utils/Constants.mjs +1 -1
- package/dist/utils/FunctionWrappers.mjs +1 -1
- package/dist/utils/ObjectUtils.mjs +1 -1
- package/dist/utils/ProtocolUtils.mjs +1 -1
- package/dist/utils/StringUtils.mjs +1 -1
- package/dist/utils/TimeUtils.mjs +1 -1
- package/dist/utils/UrlUtils.mjs +1 -1
- package/dist-browser/account/AccountInfo.mjs +1 -1
- package/dist-browser/account/AuthToken.mjs +1 -1
- package/dist-browser/account/CcsCredential.mjs +1 -1
- package/dist-browser/account/ClientInfo.mjs +1 -1
- package/dist-browser/account/TokenClaims.mjs +1 -1
- package/dist-browser/authority/Authority.mjs +1 -1
- package/dist-browser/authority/AuthorityFactory.mjs +1 -1
- package/dist-browser/authority/AuthorityMetadata.mjs +1 -1
- package/dist-browser/authority/AuthorityOptions.mjs +1 -1
- package/dist-browser/authority/AuthorityType.mjs +1 -1
- package/dist-browser/authority/CloudInstanceDiscoveryErrorResponse.mjs +1 -1
- package/dist-browser/authority/CloudInstanceDiscoveryResponse.mjs +1 -1
- package/dist-browser/authority/OpenIdConfigResponse.mjs +1 -1
- package/dist-browser/authority/ProtocolMode.mjs +1 -1
- package/dist-browser/authority/RegionDiscovery.mjs +1 -1
- package/dist-browser/cache/CacheManager.mjs +54 -14
- package/dist-browser/cache/CacheManager.mjs.map +1 -1
- package/dist-browser/cache/persistence/TokenCacheContext.mjs +1 -1
- package/dist-browser/cache/utils/AccountEntityUtils.mjs +1 -1
- package/dist-browser/cache/utils/CacheHelpers.mjs +1 -1
- package/dist-browser/client/AuthorizationCodeClient.mjs +1 -1
- package/dist-browser/client/RefreshTokenClient.mjs +1 -1
- package/dist-browser/client/SilentFlowClient.mjs +1 -1
- package/dist-browser/config/ClientConfiguration.mjs +1 -1
- package/dist-browser/constants/AADServerParamKeys.mjs +1 -1
- package/dist-browser/crypto/DpopProofGenerator.mjs +17 -7
- package/dist-browser/crypto/DpopProofGenerator.mjs.map +1 -1
- package/dist-browser/crypto/ICrypto.mjs +1 -1
- package/dist-browser/crypto/ITokenBindingKeyManager.mjs +1 -1
- package/dist-browser/crypto/ITokenBindingKeyManager.mjs.map +1 -1
- package/dist-browser/crypto/JoseHeader.mjs +1 -1
- package/dist-browser/crypto/PopTokenGenerator.mjs +1 -1
- package/dist-browser/error/AuthError.mjs +1 -1
- package/dist-browser/error/AuthErrorCodes.mjs +1 -1
- package/dist-browser/error/CacheError.mjs +1 -1
- package/dist-browser/error/CacheErrorCodes.mjs +1 -1
- package/dist-browser/error/ClientAuthError.mjs +1 -1
- package/dist-browser/error/ClientAuthErrorCodes.mjs +1 -1
- package/dist-browser/error/ClientConfigurationError.mjs +1 -1
- package/dist-browser/error/ClientConfigurationErrorCodes.mjs +1 -1
- package/dist-browser/error/InteractionRequiredAuthError.mjs +1 -1
- package/dist-browser/error/InteractionRequiredAuthErrorCodes.mjs +1 -1
- package/dist-browser/error/JoseHeaderError.mjs +1 -1
- package/dist-browser/error/JoseHeaderErrorCodes.mjs +1 -1
- package/dist-browser/error/NetworkError.mjs +1 -1
- package/dist-browser/error/PlatformBrokerError.mjs +1 -1
- package/dist-browser/error/ServerError.mjs +1 -1
- package/dist-browser/index-browser.mjs +2 -1
- package/dist-browser/index-browser.mjs.map +1 -1
- package/dist-browser/index.mjs +2 -1
- package/dist-browser/index.mjs.map +1 -1
- package/dist-browser/log-strings-mapping.json +2 -2
- package/dist-browser/logger/Logger.mjs +1 -1
- package/dist-browser/network/INetworkModule.mjs +1 -1
- package/dist-browser/network/RequestThumbprint.mjs +1 -1
- package/dist-browser/network/ResponseHeaders.mjs +1 -1
- package/dist-browser/network/ThrottlingUtils.mjs +1 -1
- package/dist-browser/packageMetadata.mjs +2 -2
- package/dist-browser/protocol/Authorize.mjs +1 -1
- package/dist-browser/protocol/Token.mjs +1 -1
- package/dist-browser/request/AuthenticationHeaderParser.mjs +1 -1
- package/dist-browser/request/BaseAuthRequest.mjs +1 -1
- package/dist-browser/request/RequestParameterBuilder.mjs +1 -1
- package/dist-browser/request/ScopeSet.mjs +1 -1
- package/dist-browser/response/ResponseHandler.mjs +1 -1
- package/dist-browser/telemetry/performance/PerformanceClient.mjs +1 -1
- package/dist-browser/telemetry/performance/PerformanceEvent.mjs +1 -1
- package/dist-browser/telemetry/performance/PerformanceEvents.mjs +1 -1
- package/dist-browser/telemetry/performance/StubPerformanceClient.mjs +1 -1
- package/dist-browser/telemetry/server/ServerTelemetryManager.mjs +1 -1
- package/dist-browser/url/UrlString.mjs +1 -1
- package/dist-browser/utils/ClientAssertionUtils.mjs +1 -1
- package/dist-browser/utils/Constants.mjs +1 -1
- package/dist-browser/utils/FunctionWrappers.mjs +1 -1
- package/dist-browser/utils/ObjectUtils.mjs +1 -1
- package/dist-browser/utils/ProtocolUtils.mjs +1 -1
- package/dist-browser/utils/StringUtils.mjs +1 -1
- package/dist-browser/utils/TimeUtils.mjs +1 -1
- package/dist-browser/utils/UrlUtils.mjs +1 -1
- package/lib/index-browser.cjs +4 -2
- package/lib/index-browser.cjs.map +1 -1
- package/lib/{index-node-DD4RzKVr.js → index-node-CLM4E-dZ.js} +73 -21
- package/lib/{index-node-DD4RzKVr.js.map → index-node-CLM4E-dZ.js.map} +1 -1
- package/lib/index-node.cjs +2 -2
- package/lib/index.cjs +4 -2
- package/lib/index.cjs.map +1 -1
- package/package.json +1 -1
- package/src/cache/CacheManager.ts +95 -21
- package/src/cache/interface/ICacheManager.ts +2 -2
- package/src/crypto/DpopProofGenerator.ts +36 -5
- package/src/crypto/ITokenBindingKeyManager.ts +11 -0
- package/src/exports-browser-only.ts +5 -0
- package/src/packageMetadata.ts +1 -1
- package/types/cache/CacheManager.d.ts +11 -1
- package/types/cache/CacheManager.d.ts.map +1 -1
- package/types/cache/interface/ICacheManager.d.ts +2 -2
- package/types/crypto/DpopProofGenerator.d.ts +20 -3
- package/types/crypto/DpopProofGenerator.d.ts.map +1 -1
- package/types/crypto/ITokenBindingKeyManager.d.ts +8 -0
- package/types/crypto/ITokenBindingKeyManager.d.ts.map +1 -1
- package/types/exports-browser-only.d.ts +2 -0
- package/types/exports-browser-only.d.ts.map +1 -1
- package/types/packageMetadata.d.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { AuthError } from './AuthError.mjs';
|
|
4
4
|
import { interactionRequired, consentRequired, loginRequired, badToken, uiNotAllowed, interruptedUser } from './InteractionRequiredAuthErrorCodes.mjs';
|
package/dist/index-node.mjs
CHANGED
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import * as AADServerParamKeys from './constants/AADServerParamKeys.mjs';
|
|
4
4
|
export { AADServerParamKeys };
|
|
@@ -39,6 +39,7 @@ export { Constants };
|
|
|
39
39
|
export { DEFAULT_CRYPTO_IMPLEMENTATION, JsonWebTokenAlgorithms } from './crypto/ICrypto.mjs';
|
|
40
40
|
export { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration } from './config/ClientConfiguration.mjs';
|
|
41
41
|
export { DEFAULT_TOKEN_BINDING_KEY_MANAGER } from './crypto/ITokenBindingKeyManager.mjs';
|
|
42
|
+
export { DpopProofGenerator, normalizeDpopResourceRequestContext } from './crypto/DpopProofGenerator.mjs';
|
|
42
43
|
export { IntFields, PerformanceEventStatus } from './telemetry/performance/PerformanceEvent.mjs';
|
|
43
44
|
export { InteractionRequiredAuthError, createInteractionRequiredAuthError } from './error/InteractionRequiredAuthError.mjs';
|
|
44
45
|
import * as InteractionRequiredAuthErrorCodes from './error/InteractionRequiredAuthErrorCodes.mjs';
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/logger/Logger.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { THROTTLING_PREFIX, DEFAULT_THROTTLE_TIME_SECONDS, DEFAULT_MAX_THROTTLE_TIME_SECONDS, HeaderNames } from '../utils/Constants.mjs';
|
|
4
4
|
import { ServerError } from '../error/ServerError.mjs';
|
package/dist/packageMetadata.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
/* eslint-disable header/header */
|
|
4
4
|
const name = "@azure/msal-common";
|
|
5
|
-
const version = "16.
|
|
5
|
+
const version = "16.16.1";
|
|
6
6
|
|
|
7
7
|
export { name, version };
|
|
8
8
|
//# sourceMappingURL=packageMetadata.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { addClientId, addScopes, addResource, addRedirectUri, addCorrelationId, addResponseMode, addClientInfo, addCliData, addPrompt, addDomainHint, addSid, addLoginHint, addCcsOid, addCcsUpn, addNonce, addState, addBrokerParameters, addClaims, addInstanceAware, addPopupOriginCheckDone } from '../request/RequestParameterBuilder.mjs';
|
|
4
4
|
import { INSTANCE_AWARE, CLIENT_ID } from '../constants/AADServerParamKeys.mjs';
|
package/dist/protocol/Token.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { createClientAuthError } from '../error/ClientAuthError.mjs';
|
|
4
4
|
import { misplacedResourceParam, resourceParameterRequired } from '../error/ClientAuthErrorCodes.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { OIDC_DEFAULT_SCOPES, HeaderNames, CLIENT_INFO, PasswordGrantConstants, AuthenticationScheme, ResponseMode, X_MS_LIB_CAPABILITY_VALUE, ClaimsRequestKeys } from '../utils/Constants.mjs';
|
|
4
4
|
import { X_APP_NAME, X_APP_VER, ATTRIBUTE_TOKENS, CODE, BROKER_CLIENT_ID, BROKER_REDIRECT_URI, CLAIMS, CLI_DATA, CLIENT_ASSERTION, CLIENT_ASSERTION_TYPE, CLIENT_ID, CLIENT_SECRET, CODE_CHALLENGE, CODE_CHALLENGE_METHOD, CODE_VERIFIER, CLIENT_REQUEST_ID, DEVICE_CODE, DOMAIN_HINT, EAR_JWK, EAR_JWE_CRYPTO, GRANT_TYPE, ID_TOKEN_HINT, INSTANCE_AWARE, X_CLIENT_SKU, X_CLIENT_VER, X_CLIENT_OS, X_CLIENT_CPU, LOGIN_HINT, LOGOUT_HINT, NATIVE_BROKER, NONCE, OBO_ASSERTION, TOKEN_TYPE, REQ_CNF, POPUP_ORIGIN_CHECK_DONE, POST_LOGOUT_URI, PROMPT, REDIRECT_URI, REFRESH_TOKEN, REQUESTED_TOKEN_USE, RESOURCE, RESPONSE_MODE, RESPONSE_TYPE, SCOPE, X_CLIENT_CURR_TELEM, X_CLIENT_LAST_TELEM, SID, STATE, X_MS_LIB_CAPABILITY } from '../constants/AADServerParamKeys.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { updateAccountTenantProfileData, buildTenantProfile } from '../account/AccountInfo.mjs';
|
|
4
4
|
import { extractTokenClaims, isKmsi } from '../account/AuthToken.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { getAndFlushLogsFromCache } from '../../logger/Logger.mjs';
|
|
4
4
|
import { IntFields, PerformanceEventStatus, EXT_FIELD_PREFIX } from './PerformanceEvent.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { CacheOutcome, SERVER_TELEM_CACHE_KEY, CACHE_KEY_SEPARATOR, SERVER_TELEM_SCHEMA_VERSION, SERVER_TELEM_CATEGORY_SEPARATOR, SERVER_TELEM_VALUE_SEPARATOR, SERVER_TELEM_MAX_CACHED_ERRORS, SERVER_TELEM_UNKNOWN_ERROR, SERVER_TELEM_MAX_LAST_HEADER_BYTES, SERVER_TELEM_OVERFLOW_TRUE, SERVER_TELEM_OVERFLOW_FALSE } from '../../utils/Constants.mjs';
|
|
4
4
|
import { AuthError } from '../../error/AuthError.mjs';
|
package/dist/url/UrlString.mjs
CHANGED
package/dist/utils/Constants.mjs
CHANGED
package/dist/utils/TimeUtils.mjs
CHANGED
package/dist/utils/UrlUtils.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { createClientAuthError } from '../error/ClientAuthError.mjs';
|
|
4
4
|
import { tokenParsingError, nullOrEmptyToken } from '../error/ClientAuthErrorCodes.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { IMDS_VERSION, HTTP_SUCCESS, RegionDiscoverySources, HTTP_BAD_REQUEST, IMDS_ENDPOINT, IMDS_TIMEOUT } from '../utils/Constants.mjs';
|
|
4
4
|
import { RegionDiscoveryGetRegionFromIMDS, RegionDiscoveryGetCurrentVersion } from '../telemetry/performance/PerformanceEvents.mjs';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v16.
|
|
1
|
+
/*! @azure/msal-common v16.16.1 2026-11-06 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { updateAccountTenantProfileData } from '../account/AccountInfo.mjs';
|
|
4
4
|
import { extractTokenClaims } from '../account/AuthToken.mjs';
|
|
@@ -260,6 +260,7 @@ class CacheManager {
|
|
|
260
260
|
};
|
|
261
261
|
const tokenKeys = this.getTokenKeys();
|
|
262
262
|
const currentScopes = ScopeSet.fromString(credential.target, correlationId);
|
|
263
|
+
const accessTokenKeysToRemove = [];
|
|
263
264
|
tokenKeys.accessToken.forEach((key) => {
|
|
264
265
|
if (!this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)) {
|
|
265
266
|
return;
|
|
@@ -269,10 +270,13 @@ class CacheManager {
|
|
|
269
270
|
this.credentialMatchesFilter(tokenEntity, accessTokenFilter, correlationId)) {
|
|
270
271
|
const tokenScopeSet = ScopeSet.fromString(tokenEntity.target, correlationId);
|
|
271
272
|
if (tokenScopeSet.intersectingScopeSets(currentScopes)) {
|
|
272
|
-
|
|
273
|
+
accessTokenKeysToRemove.push(key);
|
|
273
274
|
}
|
|
274
275
|
}
|
|
275
276
|
});
|
|
277
|
+
for (const key of accessTokenKeysToRemove) {
|
|
278
|
+
await this.removeAccessTokenAndTokenBindingKey(key, correlationId, credential.keyId);
|
|
279
|
+
}
|
|
276
280
|
await this.setAccessTokenCredential(credential, correlationId, kmsi, additionalCacheKeyHash);
|
|
277
281
|
}
|
|
278
282
|
/**
|
|
@@ -471,19 +475,25 @@ class CacheManager {
|
|
|
471
475
|
* @param account
|
|
472
476
|
*/
|
|
473
477
|
removeAccount(account, correlationId) {
|
|
474
|
-
this.removeAccountContext(account, correlationId);
|
|
475
478
|
const accountKeys = this.getAccountKeys();
|
|
476
479
|
const keyFilter = (key) => {
|
|
477
480
|
return (key.includes(account.homeAccountId) &&
|
|
478
481
|
key.includes(account.environment));
|
|
479
482
|
};
|
|
483
|
+
this.getTokenKeys()
|
|
484
|
+
.idToken.filter(keyFilter)
|
|
485
|
+
.forEach((key) => {
|
|
486
|
+
this.removeIdToken(key, correlationId);
|
|
487
|
+
});
|
|
488
|
+
this.removeAccountContext(account, correlationId);
|
|
480
489
|
accountKeys.filter(keyFilter).forEach((key) => {
|
|
481
490
|
this.removeItem(key, correlationId);
|
|
482
491
|
this.performanceClient.incrementFields({ accountsRemoved: 1 }, correlationId);
|
|
483
492
|
});
|
|
484
493
|
}
|
|
485
494
|
/**
|
|
486
|
-
* Removes
|
|
495
|
+
* Removes access and refresh tokens associated with the provided account,
|
|
496
|
+
* preserving the account and its ID tokens.
|
|
487
497
|
* @param account
|
|
488
498
|
*/
|
|
489
499
|
removeAccountContext(account, correlationId) {
|
|
@@ -492,9 +502,6 @@ class CacheManager {
|
|
|
492
502
|
return (key.includes(account.homeAccountId) &&
|
|
493
503
|
key.includes(account.environment));
|
|
494
504
|
};
|
|
495
|
-
allTokenKeys.idToken.filter(keyFilter).forEach((key) => {
|
|
496
|
-
this.removeIdToken(key, correlationId);
|
|
497
|
-
});
|
|
498
505
|
allTokenKeys.accessToken.filter(keyFilter).forEach((key) => {
|
|
499
506
|
this.removeAccessToken(key, correlationId);
|
|
500
507
|
});
|
|
@@ -508,12 +515,32 @@ class CacheManager {
|
|
|
508
515
|
* @param correlationId
|
|
509
516
|
*/
|
|
510
517
|
removeAccessToken(key, correlationId) {
|
|
518
|
+
const credential = this.removeAccessTokenCredential(key, correlationId);
|
|
519
|
+
if (credential) {
|
|
520
|
+
void this.removeTokenBindingKeyForCredential(credential, correlationId);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Removes an access token and waits for any unreferenced token-binding key
|
|
525
|
+
* cleanup. Internal callers that require deterministic cleanup should use
|
|
526
|
+
* this method instead of the synchronous public cache contract.
|
|
527
|
+
*/
|
|
528
|
+
async removeAccessTokenAndTokenBindingKey(key, correlationId, preservedKeyId) {
|
|
529
|
+
const credential = this.removeAccessTokenCredential(key, correlationId);
|
|
530
|
+
if (credential) {
|
|
531
|
+
await this.removeTokenBindingKeyForCredential(credential, correlationId, preservedKeyId);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
removeAccessTokenCredential(key, correlationId) {
|
|
511
535
|
const credential = this.getAccessTokenCredential(key, correlationId);
|
|
512
536
|
if (!credential) {
|
|
513
|
-
return;
|
|
537
|
+
return null;
|
|
514
538
|
}
|
|
515
539
|
this.removeItem(key, correlationId);
|
|
516
540
|
this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);
|
|
541
|
+
return credential;
|
|
542
|
+
}
|
|
543
|
+
async removeTokenBindingKeyForCredential(credential, correlationId, preservedKeyId) {
|
|
517
544
|
// Remove Token Binding Key from key store for token-bound access token credentials
|
|
518
545
|
if (credential.credentialType.toLowerCase() ===
|
|
519
546
|
CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {
|
|
@@ -523,19 +550,28 @@ class CacheManager {
|
|
|
523
550
|
case AuthenticationScheme.DPOP.toLowerCase(): {
|
|
524
551
|
const accessTokenWithAuthSchemeEntity = credential;
|
|
525
552
|
const kid = accessTokenWithAuthSchemeEntity.keyId;
|
|
526
|
-
if (kid
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
553
|
+
if (kid &&
|
|
554
|
+
kid !== preservedKeyId &&
|
|
555
|
+
!this.isTokenBindingKeyReferenced(kid, correlationId)) {
|
|
556
|
+
try {
|
|
557
|
+
await this.tokenBindingKeyManager.removeTokenBindingKey(kid, correlationId);
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
530
560
|
this.commonLogger.error("0id34f", correlationId);
|
|
531
561
|
this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);
|
|
532
|
-
}
|
|
562
|
+
}
|
|
533
563
|
}
|
|
534
564
|
break;
|
|
535
565
|
}
|
|
536
566
|
}
|
|
537
567
|
}
|
|
538
568
|
}
|
|
569
|
+
isTokenBindingKeyReferenced(keyId, correlationId) {
|
|
570
|
+
return this.getTokenKeys().accessToken.some((accessTokenKey) => {
|
|
571
|
+
const accessToken = this.getAccessTokenCredential(accessTokenKey, correlationId);
|
|
572
|
+
return accessToken?.keyId === keyId;
|
|
573
|
+
});
|
|
574
|
+
}
|
|
539
575
|
/**
|
|
540
576
|
* Removes all app metadata objects from cache.
|
|
541
577
|
*/
|
|
@@ -674,6 +710,7 @@ class CacheManager {
|
|
|
674
710
|
const scopes = ScopeSet.createSearchScopes(request.scopes, correlationId);
|
|
675
711
|
const authScheme = request.authenticationScheme ||
|
|
676
712
|
AuthenticationScheme.BEARER;
|
|
713
|
+
const normalizedAuthScheme = authScheme.toLowerCase();
|
|
677
714
|
/*
|
|
678
715
|
* Distinguish between Bearer and PoP/SSH token cache types
|
|
679
716
|
* Cast to lowercase to handle "bearer" from ADFS
|
|
@@ -699,7 +736,10 @@ class CacheManager {
|
|
|
699
736
|
tokenType: authScheme,
|
|
700
737
|
keyId: authScheme === AuthenticationScheme.SSH
|
|
701
738
|
? request.sshKid
|
|
702
|
-
:
|
|
739
|
+
: normalizedAuthScheme ===
|
|
740
|
+
AuthenticationScheme.DPOP.toLowerCase()
|
|
741
|
+
? request.popKid || request.dpopJkt
|
|
742
|
+
: undefined,
|
|
703
743
|
additionalCacheKeyComponents: additionalCacheKeyComponents,
|
|
704
744
|
};
|
|
705
745
|
const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||
|