@azure/msal-common 5.0.1 → 5.1.2
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/_virtual/_tslib.js +1 -1
- package/dist/account/AuthToken.js +1 -1
- package/dist/account/CcsCredential.js +1 -1
- package/dist/account/ClientInfo.js +1 -1
- package/dist/authority/Authority.d.ts.map +1 -1
- package/dist/authority/Authority.js +8 -2
- package/dist/authority/Authority.js.map +1 -1
- package/dist/authority/AuthorityFactory.js +1 -1
- package/dist/authority/AuthorityType.js +1 -1
- package/dist/authority/CloudInstanceDiscoveryResponse.js +1 -1
- package/dist/authority/OpenIdConfigResponse.d.ts +1 -1
- package/dist/authority/OpenIdConfigResponse.d.ts.map +1 -1
- package/dist/authority/OpenIdConfigResponse.js +1 -2
- package/dist/authority/OpenIdConfigResponse.js.map +1 -1
- package/dist/authority/ProtocolMode.js +1 -1
- package/dist/authority/RegionDiscovery.js +1 -1
- package/dist/cache/CacheManager.d.ts +14 -3
- package/dist/cache/CacheManager.d.ts.map +1 -1
- package/dist/cache/CacheManager.js +47 -17
- package/dist/cache/CacheManager.js.map +1 -1
- package/dist/cache/entities/AccessTokenEntity.d.ts +1 -1
- package/dist/cache/entities/AccessTokenEntity.d.ts.map +1 -1
- package/dist/cache/entities/AccessTokenEntity.js +15 -9
- package/dist/cache/entities/AccessTokenEntity.js.map +1 -1
- package/dist/cache/entities/AccountEntity.js +1 -1
- package/dist/cache/entities/AppMetadataEntity.js +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.d.ts.map +1 -1
- package/dist/cache/entities/AuthorityMetadataEntity.js +1 -2
- package/dist/cache/entities/AuthorityMetadataEntity.js.map +1 -1
- package/dist/cache/entities/CacheRecord.js +1 -1
- package/dist/cache/entities/CredentialEntity.d.ts +1 -0
- package/dist/cache/entities/CredentialEntity.d.ts.map +1 -1
- package/dist/cache/entities/CredentialEntity.js +3 -3
- package/dist/cache/entities/CredentialEntity.js.map +1 -1
- package/dist/cache/entities/IdTokenEntity.js +1 -1
- package/dist/cache/entities/RefreshTokenEntity.js +1 -1
- package/dist/cache/entities/ServerTelemetryEntity.js +1 -1
- package/dist/cache/entities/ThrottlingEntity.js +1 -1
- package/dist/cache/interface/ICacheManager.d.ts +5 -1
- package/dist/cache/interface/ICacheManager.d.ts.map +1 -1
- package/dist/cache/persistence/TokenCacheContext.js +1 -1
- package/dist/cache/utils/CacheTypes.d.ts +1 -0
- package/dist/cache/utils/CacheTypes.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.d.ts +1 -0
- package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
- package/dist/client/AuthorizationCodeClient.js +43 -15
- package/dist/client/AuthorizationCodeClient.js.map +1 -1
- package/dist/client/BaseClient.js +1 -1
- package/dist/client/ClientCredentialClient.d.ts.map +1 -1
- package/dist/client/ClientCredentialClient.js +4 -2
- package/dist/client/ClientCredentialClient.js.map +1 -1
- package/dist/client/DeviceCodeClient.d.ts.map +1 -1
- package/dist/client/DeviceCodeClient.js +7 -3
- package/dist/client/DeviceCodeClient.js.map +1 -1
- package/dist/client/OnBehalfOfClient.d.ts.map +1 -1
- package/dist/client/OnBehalfOfClient.js +4 -2
- package/dist/client/OnBehalfOfClient.js.map +1 -1
- package/dist/client/RefreshTokenClient.d.ts.map +1 -1
- package/dist/client/RefreshTokenClient.js +20 -8
- package/dist/client/RefreshTokenClient.js.map +1 -1
- package/dist/client/SilentFlowClient.d.ts.map +1 -1
- package/dist/client/SilentFlowClient.js +17 -12
- package/dist/client/SilentFlowClient.js.map +1 -1
- package/dist/client/UsernamePasswordClient.d.ts.map +1 -1
- package/dist/client/UsernamePasswordClient.js +4 -2
- package/dist/client/UsernamePasswordClient.js.map +1 -1
- package/dist/config/ClientConfiguration.js +1 -1
- package/dist/crypto/ICrypto.d.ts +1 -1
- package/dist/crypto/ICrypto.d.ts.map +1 -1
- package/dist/crypto/ICrypto.js +1 -1
- package/dist/crypto/ICrypto.js.map +1 -1
- package/dist/crypto/PopTokenGenerator.js +4 -4
- package/dist/crypto/PopTokenGenerator.js.map +1 -1
- package/dist/error/AuthError.js +1 -1
- package/dist/error/ClientAuthError.d.ts +8 -0
- package/dist/error/ClientAuthError.d.ts.map +1 -1
- package/dist/error/ClientAuthError.js +11 -1
- package/dist/error/ClientAuthError.js.map +1 -1
- package/dist/error/ClientConfigurationError.d.ts +29 -0
- package/dist/error/ClientConfigurationError.d.ts.map +1 -1
- package/dist/error/ClientConfigurationError.js +43 -3
- package/dist/error/ClientConfigurationError.js.map +1 -1
- package/dist/error/InteractionRequiredAuthError.js +1 -1
- package/dist/error/ServerError.js +1 -1
- package/dist/index.cjs.js +294 -75
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/logger/Logger.js +1 -1
- package/dist/network/INetworkModule.js +1 -1
- package/dist/network/NetworkManager.js +1 -1
- package/dist/network/RequestThumbprint.d.ts +2 -0
- package/dist/network/RequestThumbprint.d.ts.map +1 -1
- package/dist/network/ThrottlingUtils.d.ts.map +1 -1
- package/dist/network/ThrottlingUtils.js +4 -2
- package/dist/network/ThrottlingUtils.js.map +1 -1
- package/dist/packageMetadata.d.ts +1 -1
- package/dist/packageMetadata.js +2 -2
- package/dist/packageMetadata.js.map +1 -1
- package/dist/request/AuthenticationHeaderParser.d.ts +20 -0
- package/dist/request/AuthenticationHeaderParser.d.ts.map +1 -0
- package/dist/request/AuthenticationHeaderParser.js +64 -0
- package/dist/request/AuthenticationHeaderParser.js.map +1 -0
- package/dist/request/BaseAuthRequest.d.ts +7 -1
- package/dist/request/BaseAuthRequest.d.ts.map +1 -1
- package/dist/request/RequestParameterBuilder.d.ts +4 -0
- package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
- package/dist/request/RequestParameterBuilder.js +10 -1
- package/dist/request/RequestParameterBuilder.js.map +1 -1
- package/dist/request/RequestValidator.js +1 -1
- package/dist/request/ScopeSet.js +1 -1
- package/dist/response/AuthenticationResult.d.ts +1 -1
- package/dist/response/ResponseHandler.d.ts.map +1 -1
- package/dist/response/ResponseHandler.js +4 -2
- package/dist/response/ResponseHandler.js.map +1 -1
- package/dist/response/ServerAuthorizationTokenResponse.d.ts +2 -0
- package/dist/response/ServerAuthorizationTokenResponse.d.ts.map +1 -1
- package/dist/telemetry/server/ServerTelemetryManager.js +1 -1
- package/dist/url/UrlString.js +1 -1
- package/dist/utils/Constants.d.ts +5 -2
- package/dist/utils/Constants.d.ts.map +1 -1
- package/dist/utils/Constants.js +5 -2
- package/dist/utils/Constants.js.map +1 -1
- package/dist/utils/ProtocolUtils.js +1 -1
- package/dist/utils/StringUtils.js +1 -1
- package/dist/utils/TimeUtils.js +1 -1
- package/package.json +1 -1
- package/CHANGELOG.json +0 -1187
- package/CHANGELOG.md +0 -452
package/dist/_virtual/_tslib.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../src/authority/Authority.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAA0B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;GAGG;AACH,qBAAa,SAAS;IAGlB,OAAO,CAAC,mBAAmB,CAAY;IAEvC,OAAO,CAAC,gCAAgC,CAAc;IAEtD,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;IAEtC,OAAO,CAAC,gBAAgB,CAAmB;IAE3C,OAAO,CAAC,QAAQ,CAA0B;IAE1C,OAAO,CAAC,eAAe,CAAkB;IAElC,uBAAuB,EAAE,uBAAuB,CAAC;gBAE5C,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB;IAWhI,IAAW,aAAa,IAAI,aAAa,CAQxC;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,gBAAgB,CAErC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED;;OAEG;IACH,IAAW,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAIxC;IAED;;OAEG;IACH,IAAW,+BAA+B,IAAI,IAAI,CAMjD;IAED;;OAEG;IACH,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAW,qBAAqB,IAAI,MAAM,CAOzC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,CAOjC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAOtC;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"Authority.d.ts","sourceRoot":"","sources":["../../src/authority/Authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v5.
|
|
1
|
+
/*! @azure/msal-common v5.1.2 2022-08-03 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';
|
|
4
4
|
import { AuthorityType } from './AuthorityType.js';
|
|
@@ -164,6 +164,10 @@ var Authority = /** @class */ (function () {
|
|
|
164
164
|
*/
|
|
165
165
|
get: function () {
|
|
166
166
|
if (this.discoveryComplete()) {
|
|
167
|
+
// ROPC policies may not have end_session_endpoint set
|
|
168
|
+
if (!this.metadata.end_session_endpoint) {
|
|
169
|
+
throw ClientAuthError.createLogoutNotSupportedError();
|
|
170
|
+
}
|
|
167
171
|
var endpoint = this.replacePath(this.metadata.end_session_endpoint);
|
|
168
172
|
return this.replaceTenant(endpoint);
|
|
169
173
|
}
|
|
@@ -564,7 +568,9 @@ var Authority = /** @class */ (function () {
|
|
|
564
568
|
metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);
|
|
565
569
|
// TODO: Enquire on whether we should leave the query string or remove it before releasing the feature
|
|
566
570
|
metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, "allowestsrnonmsi=true");
|
|
567
|
-
|
|
571
|
+
if (metadata.end_session_endpoint) {
|
|
572
|
+
metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);
|
|
573
|
+
}
|
|
568
574
|
return metadata;
|
|
569
575
|
};
|
|
570
576
|
return Authority;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Authority.js","sources":["../../src/authority/Authority.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n // Region discovery metadata\r\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\r\n\r\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n\r\n return AuthorityType.Default;\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString \r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n const cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return endpoint;\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise<void> {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n } \r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity \r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata);\r\n\r\n const azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG \r\n ? autodetectedRegionName \r\n : this.authorityOptions.azureRegionConfiguration.azureRegion;\r\n\r\n if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n } else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n } else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n \r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata \r\n * @param newMetadata \r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface \r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(instanceDiscoveryEndpoint);\r\n const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n if (metadata.length === 0) {\r\n // If no metadata is returned, authority is untrusted\r\n return null;\r\n }\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n } catch(e) {\r\n return null;\r\n }\r\n\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n } \r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host \r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response \r\n * @param authority \r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host \r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n * \r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n * \r\n * @param host string\r\n * @param region string \r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n * \r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n \r\n return metadata;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Authority.js","sources":["../../src/authority/Authority.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { AuthorityType } from \"./AuthorityType\";\r\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\r\nimport { UrlString } from \"../url/UrlString\";\r\nimport { IUri } from \"../url/IUri\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\n\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nexport class Authority {\r\n\r\n // Canonical authority url string\r\n private _canonicalAuthority: UrlString;\r\n // Canonicaly authority url components\r\n private _canonicalAuthorityUrlComponents: IUri | null;\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Cache Manager to cache network responses\r\n protected cacheManager: ICacheManager;\r\n // Protocol mode to construct endpoints\r\n private authorityOptions: AuthorityOptions;\r\n // Authority metadata\r\n private metadata: AuthorityMetadataEntity;\r\n // Region discovery service\r\n private regionDiscovery: RegionDiscovery;\r\n // Region discovery metadata\r\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\r\n\r\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n }\r\n\r\n // See above for AuthorityType\r\n public get authorityType(): AuthorityType {\r\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n\r\n return AuthorityType.Default;\r\n }\r\n\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n public get protocolMode(): ProtocolMode {\r\n return this.authorityOptions.protocolMode;\r\n }\r\n\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n public get options(): AuthorityOptions {\r\n return this.authorityOptions;\r\n }\r\n\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n public get canonicalAuthority(): string {\r\n return this._canonicalAuthority.urlString;\r\n }\r\n\r\n /**\r\n * Sets canonical authority.\r\n */\r\n public set canonicalAuthority(url: string) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n }\r\n\r\n /**\r\n * Get authority components.\r\n */\r\n public get canonicalAuthorityUrlComponents(): IUri {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n\r\n return this._canonicalAuthorityUrlComponents;\r\n }\r\n\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n public get hostnameAndPort(): string {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n }\r\n\r\n /**\r\n * Get tenant for authority.\r\n */\r\n public get tenant(): string {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n }\r\n\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n public get authorizationEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n public get tokenEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n public get deviceCodeEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n public get endSessionEndpoint(): string {\r\n if(this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n public get selfSignedJwtAudience(): string {\r\n if(this.discoveryComplete()) {\r\n const endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n private replaceTenant(urlString: string): string {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n }\r\n\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString \r\n */\r\n private replacePath(urlString: string): string {\r\n let endpoint = urlString;\r\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n\r\n currentAuthorityParts.forEach((currentPart, index) => {\r\n const cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\r\n }\r\n });\r\n\r\n return endpoint;\r\n }\r\n\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n protected get defaultOpenIdConfigurationEndpoint(): string {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\r\n }\r\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\r\n }\r\n\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n discoveryComplete(): boolean {\r\n return !!this.metadata;\r\n }\r\n\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n public async resolveEndpointsAsync(): Promise<void> {\r\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n\r\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\r\n\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n } \r\n\r\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n }\r\n\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity \r\n */\r\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n let metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getEndpointMetadataFromNetwork();\r\n if (metadata) {\r\n // If the user prefers to use an azure region replace the global endpoints with regional information.\r\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\r\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata);\r\n\r\n const azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG \r\n ? autodetectedRegionName \r\n : this.authorityOptions.azureRegionConfiguration.azureRegion;\r\n\r\n if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n } else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n } else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n }\r\n\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n }\r\n\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\r\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n \r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n }\r\n\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint);\r\n return isOpenIdConfigResponse(response.body) ? response.body : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata \r\n * @param newMetadata \r\n */\r\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\r\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return AuthorityMetadataSource.CONFIG;\r\n }\r\n\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return AuthorityMetadataSource.CACHE;\r\n }\r\n\r\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return AuthorityMetadataSource.NETWORK;\r\n } else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\r\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n } catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface \r\n */\r\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\r\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(instanceDiscoveryEndpoint);\r\n const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n if (metadata.length === 0) {\r\n // If no metadata is returned, authority is untrusted\r\n return null;\r\n }\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n } catch(e) {\r\n return null;\r\n }\r\n\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return match;\r\n } \r\n\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n private isInKnownAuthorities(): boolean {\r\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\r\n });\r\n\r\n return matches.length > 0;\r\n }\r\n\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host \r\n */\r\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n }\r\n\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response \r\n * @param authority \r\n */\r\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\r\n for (let i = 0; i < response.length; i++) {\r\n const metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n getPreferredCache(): string {\r\n if(this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n } else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n }\r\n\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host \r\n */\r\n isAlias(host: string): boolean {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n }\r\n\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n * \r\n * @param authority string\r\n * @returns bool\r\n */\r\n static isPublicCloudAuthority(host: string): boolean {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n }\r\n\r\n /**\r\n * Rebuild the authority string with the region\r\n * \r\n * @param host string\r\n * @param region string \r\n */\r\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\r\n // Create and validate a Url string object with the initial authority string\r\n const authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n\r\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n\r\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\r\n\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\r\n }\r\n\r\n // Include the query string portion of the url\r\n const url = UrlString.constructAuthorityUriFromObject({\r\n ...authorityUrlInstance.getUrlComponents(),\r\n HostNameAndPort: hostNameAndPort\r\n }).urlString;\r\n\r\n // Add the query string if a query string was provided\r\n if (queryString) return `${url}?${queryString}`;\r\n\r\n return url;\r\n }\r\n\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n * \r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\r\n\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n \r\n return metadata;\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export declare type OpenIdConfigResponse = {
|
|
5
5
|
authorization_endpoint: string;
|
|
6
6
|
token_endpoint: string;
|
|
7
|
-
end_session_endpoint
|
|
7
|
+
end_session_endpoint?: string;
|
|
8
8
|
issuer: string;
|
|
9
9
|
};
|
|
10
10
|
export declare function isOpenIdConfigResponse(response: object): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenIdConfigResponse.d.ts","sourceRoot":"","sources":["../../src/authority/OpenIdConfigResponse.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,oBAAoB,GAAG;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMhE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v5.
|
|
1
|
+
/*! @azure/msal-common v5.1.2 2022-08-03 */
|
|
2
2
|
'use strict';
|
|
3
3
|
/*
|
|
4
4
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
function isOpenIdConfigResponse(response) {
|
|
8
8
|
return (response.hasOwnProperty("authorization_endpoint") &&
|
|
9
9
|
response.hasOwnProperty("token_endpoint") &&
|
|
10
|
-
response.hasOwnProperty("end_session_endpoint") &&
|
|
11
10
|
response.hasOwnProperty("issuer"));
|
|
12
11
|
}
|
|
13
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenIdConfigResponse.js","sources":["../../src/authority/OpenIdConfigResponse.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint
|
|
1
|
+
{"version":3,"file":"OpenIdConfigResponse.js","sources":["../../src/authority/OpenIdConfigResponse.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\n/**\r\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\r\n */\r\nexport type OpenIdConfigResponse = {\r\n authorization_endpoint: string;\r\n token_endpoint: string;\r\n end_session_endpoint?: string;\r\n issuer: string;\r\n};\r\n\r\nexport function isOpenIdConfigResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") && \r\n response.hasOwnProperty(\"issuer\")\r\n );\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;SAegB,sBAAsB,CAAC,QAAgB;IACnD,QACI,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC;QACjD,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC;QACzC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EACnC;AACN;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AccountCache, AccountFilter, CredentialFilter, CredentialCache, AppMetadataFilter, AppMetadataCache } from "./utils/CacheTypes";
|
|
1
|
+
import { AccountCache, AccountFilter, CredentialFilter, CredentialCache, ValidCredentialType, AppMetadataFilter, AppMetadataCache } from "./utils/CacheTypes";
|
|
2
2
|
import { CacheRecord } from "./entities/CacheRecord";
|
|
3
3
|
import { AuthenticationScheme } from "../utils/Constants";
|
|
4
4
|
import { CredentialEntity } from "./entities/CredentialEntity";
|
|
@@ -126,6 +126,10 @@ export declare abstract class CacheManager implements ICacheManager {
|
|
|
126
126
|
* Function which clears cache.
|
|
127
127
|
*/
|
|
128
128
|
abstract clear(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Function which updates an outdated credential cache key
|
|
131
|
+
*/
|
|
132
|
+
abstract updateCredentialCacheKey(currentCacheKey: string, credential: ValidCredentialType): string;
|
|
129
133
|
/**
|
|
130
134
|
* Returns all accounts in cache
|
|
131
135
|
*/
|
|
@@ -225,7 +229,7 @@ export declare abstract class CacheManager implements ICacheManager {
|
|
|
225
229
|
* @param environment
|
|
226
230
|
* @param authScheme
|
|
227
231
|
*/
|
|
228
|
-
readCacheRecord(account: AccountInfo, clientId: string, scopes: ScopeSet, environment: string, authScheme: AuthenticationScheme): CacheRecord;
|
|
232
|
+
readCacheRecord(account: AccountInfo, clientId: string, scopes: ScopeSet, environment: string, authScheme: AuthenticationScheme, keyId?: string): CacheRecord;
|
|
229
233
|
/**
|
|
230
234
|
* Retrieve AccountEntity from cache
|
|
231
235
|
* @param account
|
|
@@ -245,7 +249,7 @@ export declare abstract class CacheManager implements ICacheManager {
|
|
|
245
249
|
* @param scopes
|
|
246
250
|
* @param authScheme
|
|
247
251
|
*/
|
|
248
|
-
readAccessTokenFromCache(clientId: string, account: AccountInfo, scopes: ScopeSet, authScheme: AuthenticationScheme): AccessTokenEntity | null;
|
|
252
|
+
readAccessTokenFromCache(clientId: string, account: AccountInfo, scopes: ScopeSet, authScheme: AuthenticationScheme, keyId?: string): AccessTokenEntity | null;
|
|
249
253
|
/**
|
|
250
254
|
* Helper to retrieve the appropriate refresh token from cache
|
|
251
255
|
* @param clientId
|
|
@@ -317,6 +321,12 @@ export declare abstract class CacheManager implements ICacheManager {
|
|
|
317
321
|
* @param tokenType
|
|
318
322
|
*/
|
|
319
323
|
private matchTokenType;
|
|
324
|
+
/**
|
|
325
|
+
* Returns true if the credential's keyId matches the one in the request, false otherwise
|
|
326
|
+
* @param entity
|
|
327
|
+
* @param tokenType
|
|
328
|
+
*/
|
|
329
|
+
private matchKeyId;
|
|
320
330
|
/**
|
|
321
331
|
* returns if a given cache entity is of the type appmetadata
|
|
322
332
|
* @param key
|
|
@@ -366,5 +376,6 @@ export declare class DefaultStorageClass extends CacheManager {
|
|
|
366
376
|
containsKey(): boolean;
|
|
367
377
|
getKeys(): string[];
|
|
368
378
|
clear(): Promise<void>;
|
|
379
|
+
updateCredentialCacheKey(): string;
|
|
369
380
|
}
|
|
370
381
|
//# sourceMappingURL=CacheManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../src/cache/CacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! @azure/msal-common v5.
|
|
1
|
+
/*! @azure/msal-common v5.1.2 2022-08-03 */
|
|
2
2
|
'use strict';
|
|
3
3
|
import { __awaiter, __generator, __extends } from '../_virtual/_tslib.js';
|
|
4
4
|
import { Constants, CredentialType, AuthenticationScheme, CacheSchemaType, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.js';
|
|
@@ -169,7 +169,7 @@ var CacheManager = /** @class */ (function () {
|
|
|
169
169
|
* @param target
|
|
170
170
|
*/
|
|
171
171
|
CacheManager.prototype.getCredentialsFilteredBy = function (filter) {
|
|
172
|
-
return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.oboAssertion, filter.tokenType);
|
|
172
|
+
return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.oboAssertion, filter.tokenType, filter.keyId);
|
|
173
173
|
};
|
|
174
174
|
/**
|
|
175
175
|
* Support function to help match credentials
|
|
@@ -182,7 +182,7 @@ var CacheManager = /** @class */ (function () {
|
|
|
182
182
|
* @param oboAssertion
|
|
183
183
|
* @param tokenType
|
|
184
184
|
*/
|
|
185
|
-
CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, oboAssertion, tokenType) {
|
|
185
|
+
CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, oboAssertion, tokenType, keyId) {
|
|
186
186
|
var _this = this;
|
|
187
187
|
var allCacheKeys = this.getKeys();
|
|
188
188
|
var matchingCredentials = {
|
|
@@ -229,27 +229,43 @@ var CacheManager = /** @class */ (function () {
|
|
|
229
229
|
if (!!target && !_this.matchTarget(entity, target)) {
|
|
230
230
|
return;
|
|
231
231
|
}
|
|
232
|
+
// Access Token with Auth Scheme specific matching
|
|
232
233
|
if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {
|
|
233
234
|
if (!!tokenType && !_this.matchTokenType(entity, tokenType)) {
|
|
234
235
|
return;
|
|
235
236
|
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
switch (tokenType) {
|
|
238
|
+
case AuthenticationScheme.POP:
|
|
239
|
+
// This check avoids matching outdated POP tokens that don't have the <-scheme> in the cache key
|
|
240
|
+
if (cacheKey.indexOf(AuthenticationScheme.POP) === -1) {
|
|
241
|
+
// AccessToken_With_AuthScheme that doesn't have "-pop" in the key is outdated and needs to be removed
|
|
242
|
+
_this.removeItem(cacheKey, CacheSchemaType.CREDENTIAL);
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
case AuthenticationScheme.SSH:
|
|
247
|
+
// KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key
|
|
248
|
+
if (keyId && !_this.matchKeyId(entity, keyId)) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
241
252
|
}
|
|
242
253
|
}
|
|
254
|
+
/*
|
|
255
|
+
* At this point, the entity matches the request, update cache key if key schema has changed
|
|
256
|
+
* Migration code for forwards compatibility with new versions of the library in case of rollback.
|
|
257
|
+
*/
|
|
258
|
+
var updatedCacheKey = _this.updateCredentialCacheKey(cacheKey, entity);
|
|
243
259
|
switch (credType) {
|
|
244
260
|
case CredentialType.ID_TOKEN:
|
|
245
|
-
matchingCredentials.idTokens[
|
|
261
|
+
matchingCredentials.idTokens[updatedCacheKey] = entity;
|
|
246
262
|
break;
|
|
247
263
|
case CredentialType.ACCESS_TOKEN:
|
|
248
264
|
case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:
|
|
249
|
-
matchingCredentials.accessTokens[
|
|
265
|
+
matchingCredentials.accessTokens[updatedCacheKey] = entity;
|
|
250
266
|
break;
|
|
251
267
|
case CredentialType.REFRESH_TOKEN:
|
|
252
|
-
matchingCredentials.refreshTokens[
|
|
268
|
+
matchingCredentials.refreshTokens[updatedCacheKey] = entity;
|
|
253
269
|
break;
|
|
254
270
|
}
|
|
255
271
|
});
|
|
@@ -408,6 +424,7 @@ var CacheManager = /** @class */ (function () {
|
|
|
408
424
|
case 0:
|
|
409
425
|
key = credential.generateCredentialKey();
|
|
410
426
|
if (!(credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())) return [3 /*break*/, 4];
|
|
427
|
+
if (!(credential.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 4];
|
|
411
428
|
accessTokenWithAuthSchemeEntity = credential;
|
|
412
429
|
kid = accessTokenWithAuthSchemeEntity.keyId;
|
|
413
430
|
if (!kid) return [3 /*break*/, 4];
|
|
@@ -447,10 +464,10 @@ var CacheManager = /** @class */ (function () {
|
|
|
447
464
|
* @param environment
|
|
448
465
|
* @param authScheme
|
|
449
466
|
*/
|
|
450
|
-
CacheManager.prototype.readCacheRecord = function (account, clientId, scopes, environment, authScheme) {
|
|
467
|
+
CacheManager.prototype.readCacheRecord = function (account, clientId, scopes, environment, authScheme, keyId) {
|
|
451
468
|
var cachedAccount = this.readAccountFromCache(account);
|
|
452
469
|
var cachedIdToken = this.readIdTokenFromCache(clientId, account);
|
|
453
|
-
var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, scopes, authScheme);
|
|
470
|
+
var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, scopes, authScheme, keyId);
|
|
454
471
|
var cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);
|
|
455
472
|
var cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);
|
|
456
473
|
if (cachedAccount && cachedIdToken) {
|
|
@@ -504,9 +521,9 @@ var CacheManager = /** @class */ (function () {
|
|
|
504
521
|
* @param scopes
|
|
505
522
|
* @param authScheme
|
|
506
523
|
*/
|
|
507
|
-
CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, scopes, authScheme) {
|
|
508
|
-
// Distinguish between Bearer and PoP token cache types
|
|
509
|
-
var credentialType = (authScheme
|
|
524
|
+
CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, scopes, authScheme, keyId) {
|
|
525
|
+
// Distinguish between Bearer and PoP/SSH token cache types
|
|
526
|
+
var credentialType = (authScheme && authScheme !== AuthenticationScheme.BEARER) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;
|
|
510
527
|
var accessTokenFilter = {
|
|
511
528
|
homeAccountId: account.homeAccountId,
|
|
512
529
|
environment: account.environment,
|
|
@@ -514,7 +531,8 @@ var CacheManager = /** @class */ (function () {
|
|
|
514
531
|
clientId: clientId,
|
|
515
532
|
realm: account.tenantId,
|
|
516
533
|
target: scopes.printScopesLowerCase(),
|
|
517
|
-
tokenType: authScheme
|
|
534
|
+
tokenType: authScheme,
|
|
535
|
+
keyId: keyId
|
|
518
536
|
};
|
|
519
537
|
var credentialCache = this.getCredentialsFilteredBy(accessTokenFilter);
|
|
520
538
|
var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });
|
|
@@ -667,6 +685,14 @@ var CacheManager = /** @class */ (function () {
|
|
|
667
685
|
CacheManager.prototype.matchTokenType = function (entity, tokenType) {
|
|
668
686
|
return !!(entity.tokenType && entity.tokenType === tokenType);
|
|
669
687
|
};
|
|
688
|
+
/**
|
|
689
|
+
* Returns true if the credential's keyId matches the one in the request, false otherwise
|
|
690
|
+
* @param entity
|
|
691
|
+
* @param tokenType
|
|
692
|
+
*/
|
|
693
|
+
CacheManager.prototype.matchKeyId = function (entity, keyId) {
|
|
694
|
+
return !!(entity.keyId && entity.keyId === keyId);
|
|
695
|
+
};
|
|
670
696
|
/**
|
|
671
697
|
* returns if a given cache entity is of the type appmetadata
|
|
672
698
|
* @param key
|
|
@@ -815,6 +841,10 @@ var DefaultStorageClass = /** @class */ (function (_super) {
|
|
|
815
841
|
});
|
|
816
842
|
});
|
|
817
843
|
};
|
|
844
|
+
DefaultStorageClass.prototype.updateCredentialCacheKey = function () {
|
|
845
|
+
var notImplErr = "Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.";
|
|
846
|
+
throw AuthError.createUnexpectedError(notImplErr);
|
|
847
|
+
};
|
|
818
848
|
return DefaultStorageClass;
|
|
819
849
|
}(CacheManager));
|
|
820
850
|
|