@azure/msal-common 16.15.0 → 16.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +46 -9
- 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 +46 -9
- 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-C1QI6fAD.js} +65 -16
- package/lib/{index-node-DD4RzKVr.js.map → index-node-C1QI6fAD.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 +87 -15
- 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 +9 -0
- package/types/cache/CacheManager.d.ts.map +1 -1
- 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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0";
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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.0 2026-11-05 */
|
|
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
|
/**
|
|
@@ -508,12 +512,32 @@ class CacheManager {
|
|
|
508
512
|
* @param correlationId
|
|
509
513
|
*/
|
|
510
514
|
removeAccessToken(key, correlationId) {
|
|
515
|
+
const credential = this.removeAccessTokenCredential(key, correlationId);
|
|
516
|
+
if (credential) {
|
|
517
|
+
void this.removeTokenBindingKeyForCredential(credential, correlationId);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Removes an access token and waits for any unreferenced token-binding key
|
|
522
|
+
* cleanup. Internal callers that require deterministic cleanup should use
|
|
523
|
+
* this method instead of the synchronous public cache contract.
|
|
524
|
+
*/
|
|
525
|
+
async removeAccessTokenAndTokenBindingKey(key, correlationId, preservedKeyId) {
|
|
526
|
+
const credential = this.removeAccessTokenCredential(key, correlationId);
|
|
527
|
+
if (credential) {
|
|
528
|
+
await this.removeTokenBindingKeyForCredential(credential, correlationId, preservedKeyId);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
removeAccessTokenCredential(key, correlationId) {
|
|
511
532
|
const credential = this.getAccessTokenCredential(key, correlationId);
|
|
512
533
|
if (!credential) {
|
|
513
|
-
return;
|
|
534
|
+
return null;
|
|
514
535
|
}
|
|
515
536
|
this.removeItem(key, correlationId);
|
|
516
537
|
this.performanceClient.incrementFields({ accessTokensRemoved: 1 }, correlationId);
|
|
538
|
+
return credential;
|
|
539
|
+
}
|
|
540
|
+
async removeTokenBindingKeyForCredential(credential, correlationId, preservedKeyId) {
|
|
517
541
|
// Remove Token Binding Key from key store for token-bound access token credentials
|
|
518
542
|
if (credential.credentialType.toLowerCase() ===
|
|
519
543
|
CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) {
|
|
@@ -523,19 +547,28 @@ class CacheManager {
|
|
|
523
547
|
case AuthenticationScheme.DPOP.toLowerCase(): {
|
|
524
548
|
const accessTokenWithAuthSchemeEntity = credential;
|
|
525
549
|
const kid = accessTokenWithAuthSchemeEntity.keyId;
|
|
526
|
-
if (kid
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
550
|
+
if (kid &&
|
|
551
|
+
kid !== preservedKeyId &&
|
|
552
|
+
!this.isTokenBindingKeyReferenced(kid, correlationId)) {
|
|
553
|
+
try {
|
|
554
|
+
await this.tokenBindingKeyManager.removeTokenBindingKey(kid, correlationId);
|
|
555
|
+
}
|
|
556
|
+
catch {
|
|
530
557
|
this.commonLogger.error("0id34f", correlationId);
|
|
531
558
|
this.performanceClient?.incrementFields({ removeTokenBindingKeyFailure: 1 }, correlationId);
|
|
532
|
-
}
|
|
559
|
+
}
|
|
533
560
|
}
|
|
534
561
|
break;
|
|
535
562
|
}
|
|
536
563
|
}
|
|
537
564
|
}
|
|
538
565
|
}
|
|
566
|
+
isTokenBindingKeyReferenced(keyId, correlationId) {
|
|
567
|
+
return this.getTokenKeys().accessToken.some((accessTokenKey) => {
|
|
568
|
+
const accessToken = this.getAccessTokenCredential(accessTokenKey, correlationId);
|
|
569
|
+
return accessToken?.keyId === keyId;
|
|
570
|
+
});
|
|
571
|
+
}
|
|
539
572
|
/**
|
|
540
573
|
* Removes all app metadata objects from cache.
|
|
541
574
|
*/
|
|
@@ -674,6 +707,7 @@ class CacheManager {
|
|
|
674
707
|
const scopes = ScopeSet.createSearchScopes(request.scopes, correlationId);
|
|
675
708
|
const authScheme = request.authenticationScheme ||
|
|
676
709
|
AuthenticationScheme.BEARER;
|
|
710
|
+
const normalizedAuthScheme = authScheme.toLowerCase();
|
|
677
711
|
/*
|
|
678
712
|
* Distinguish between Bearer and PoP/SSH token cache types
|
|
679
713
|
* Cast to lowercase to handle "bearer" from ADFS
|
|
@@ -699,7 +733,10 @@ class CacheManager {
|
|
|
699
733
|
tokenType: authScheme,
|
|
700
734
|
keyId: authScheme === AuthenticationScheme.SSH
|
|
701
735
|
? request.sshKid
|
|
702
|
-
:
|
|
736
|
+
: normalizedAuthScheme ===
|
|
737
|
+
AuthenticationScheme.DPOP.toLowerCase()
|
|
738
|
+
? request.popKid || request.dpopJkt
|
|
739
|
+
: undefined,
|
|
703
740
|
additionalCacheKeyComponents: additionalCacheKeyComponents,
|
|
704
741
|
};
|
|
705
742
|
const accessTokenKeys = (tokenKeys && tokenKeys.accessToken) ||
|