@azure/msal-common 6.0.0 → 6.3.0-beta.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.
Files changed (188) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +62 -62
  3. package/dist/_virtual/_tslib.js +1 -1
  4. package/dist/account/AccountInfo.d.ts +6 -1
  5. package/dist/account/AccountInfo.d.ts.map +1 -1
  6. package/dist/account/AuthToken.js +1 -1
  7. package/dist/account/AuthToken.js.map +1 -1
  8. package/dist/account/CcsCredential.js +1 -1
  9. package/dist/account/CcsCredential.js.map +1 -1
  10. package/dist/account/ClientInfo.js +1 -1
  11. package/dist/account/ClientInfo.js.map +1 -1
  12. package/dist/account/TokenClaims.d.ts +30 -0
  13. package/dist/account/TokenClaims.d.ts.map +1 -1
  14. package/dist/authority/Authority.d.ts +9 -1
  15. package/dist/authority/Authority.d.ts.map +1 -1
  16. package/dist/authority/Authority.js +36 -11
  17. package/dist/authority/Authority.js.map +1 -1
  18. package/dist/authority/AuthorityFactory.d.ts +2 -2
  19. package/dist/authority/AuthorityFactory.d.ts.map +1 -1
  20. package/dist/authority/AuthorityFactory.js +5 -5
  21. package/dist/authority/AuthorityFactory.js.map +1 -1
  22. package/dist/authority/AuthorityOptions.d.ts +8 -0
  23. package/dist/authority/AuthorityOptions.d.ts.map +1 -1
  24. package/dist/authority/AuthorityOptions.js +24 -0
  25. package/dist/authority/AuthorityOptions.js.map +1 -0
  26. package/dist/authority/AuthorityType.js +1 -1
  27. package/dist/authority/AuthorityType.js.map +1 -1
  28. package/dist/authority/CloudInstanceDiscoveryResponse.js +1 -1
  29. package/dist/authority/CloudInstanceDiscoveryResponse.js.map +1 -1
  30. package/dist/authority/ImdsOptions.d.ts +7 -0
  31. package/dist/authority/ImdsOptions.d.ts.map +1 -0
  32. package/dist/authority/OpenIdConfigResponse.js +1 -1
  33. package/dist/authority/OpenIdConfigResponse.js.map +1 -1
  34. package/dist/authority/ProtocolMode.js +1 -1
  35. package/dist/authority/ProtocolMode.js.map +1 -1
  36. package/dist/authority/RegionDiscovery.d.ts +3 -6
  37. package/dist/authority/RegionDiscovery.d.ts.map +1 -1
  38. package/dist/authority/RegionDiscovery.js +19 -11
  39. package/dist/authority/RegionDiscovery.js.map +1 -1
  40. package/dist/cache/CacheManager.d.ts +1 -1
  41. package/dist/cache/CacheManager.js +3 -3
  42. package/dist/cache/CacheManager.js.map +1 -1
  43. package/dist/cache/entities/AccessTokenEntity.js +1 -1
  44. package/dist/cache/entities/AccessTokenEntity.js.map +1 -1
  45. package/dist/cache/entities/AccountEntity.d.ts +3 -1
  46. package/dist/cache/entities/AccountEntity.d.ts.map +1 -1
  47. package/dist/cache/entities/AccountEntity.js +16 -12
  48. package/dist/cache/entities/AccountEntity.js.map +1 -1
  49. package/dist/cache/entities/AppMetadataEntity.js +1 -1
  50. package/dist/cache/entities/AppMetadataEntity.js.map +1 -1
  51. package/dist/cache/entities/AuthorityMetadataEntity.js +1 -1
  52. package/dist/cache/entities/AuthorityMetadataEntity.js.map +1 -1
  53. package/dist/cache/entities/CacheRecord.js +1 -1
  54. package/dist/cache/entities/CacheRecord.js.map +1 -1
  55. package/dist/cache/entities/CredentialEntity.js +5 -5
  56. package/dist/cache/entities/CredentialEntity.js.map +1 -1
  57. package/dist/cache/entities/IdTokenEntity.js +1 -1
  58. package/dist/cache/entities/IdTokenEntity.js.map +1 -1
  59. package/dist/cache/entities/RefreshTokenEntity.js +1 -1
  60. package/dist/cache/entities/RefreshTokenEntity.js.map +1 -1
  61. package/dist/cache/entities/ServerTelemetryEntity.js +1 -1
  62. package/dist/cache/entities/ServerTelemetryEntity.js.map +1 -1
  63. package/dist/cache/entities/ThrottlingEntity.js +1 -1
  64. package/dist/cache/entities/ThrottlingEntity.js.map +1 -1
  65. package/dist/cache/persistence/TokenCacheContext.js +1 -1
  66. package/dist/cache/persistence/TokenCacheContext.js.map +1 -1
  67. package/dist/client/AuthorizationCodeClient.d.ts.map +1 -1
  68. package/dist/client/AuthorizationCodeClient.js +122 -93
  69. package/dist/client/AuthorizationCodeClient.js.map +1 -1
  70. package/dist/client/BaseClient.js +2 -2
  71. package/dist/client/BaseClient.js.map +1 -1
  72. package/dist/client/ClientCredentialClient.d.ts.map +1 -1
  73. package/dist/client/ClientCredentialClient.js +4 -3
  74. package/dist/client/ClientCredentialClient.js.map +1 -1
  75. package/dist/client/DeviceCodeClient.d.ts.map +1 -1
  76. package/dist/client/DeviceCodeClient.js +4 -2
  77. package/dist/client/DeviceCodeClient.js.map +1 -1
  78. package/dist/client/OnBehalfOfClient.js +3 -2
  79. package/dist/client/OnBehalfOfClient.js.map +1 -1
  80. package/dist/client/RefreshTokenClient.js +2 -1
  81. package/dist/client/RefreshTokenClient.js.map +1 -1
  82. package/dist/client/SilentFlowClient.js +1 -1
  83. package/dist/client/SilentFlowClient.js.map +1 -1
  84. package/dist/client/UsernamePasswordClient.d.ts.map +1 -1
  85. package/dist/client/UsernamePasswordClient.js +3 -1
  86. package/dist/client/UsernamePasswordClient.js.map +1 -1
  87. package/dist/config/ClientConfiguration.d.ts +29 -1
  88. package/dist/config/ClientConfiguration.d.ts.map +1 -1
  89. package/dist/config/ClientConfiguration.js +21 -8
  90. package/dist/config/ClientConfiguration.js.map +1 -1
  91. package/dist/crypto/ICrypto.d.ts +4 -2
  92. package/dist/crypto/ICrypto.d.ts.map +1 -1
  93. package/dist/crypto/ICrypto.js +1 -1
  94. package/dist/crypto/ICrypto.js.map +1 -1
  95. package/dist/crypto/IGuidGenerator.d.ts +5 -0
  96. package/dist/crypto/IGuidGenerator.d.ts.map +1 -0
  97. package/dist/crypto/PopTokenGenerator.d.ts +30 -0
  98. package/dist/crypto/PopTokenGenerator.d.ts.map +1 -1
  99. package/dist/crypto/PopTokenGenerator.js +38 -2
  100. package/dist/crypto/PopTokenGenerator.js.map +1 -1
  101. package/dist/error/AuthError.js +3 -3
  102. package/dist/error/AuthError.js.map +1 -1
  103. package/dist/error/ClientAuthError.js +1 -1
  104. package/dist/error/ClientAuthError.js.map +1 -1
  105. package/dist/error/ClientConfigurationError.d.ts +11 -0
  106. package/dist/error/ClientConfigurationError.d.ts.map +1 -1
  107. package/dist/error/ClientConfigurationError.js +12 -2
  108. package/dist/error/ClientConfigurationError.js.map +1 -1
  109. package/dist/error/InteractionRequiredAuthError.js +1 -1
  110. package/dist/error/InteractionRequiredAuthError.js.map +1 -1
  111. package/dist/error/ServerError.js +1 -1
  112. package/dist/error/ServerError.js.map +1 -1
  113. package/dist/index.cjs.js +764 -176
  114. package/dist/index.cjs.js.map +1 -1
  115. package/dist/index.d.ts +8 -2
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +5 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/logger/Logger.js +13 -13
  120. package/dist/logger/Logger.js.map +1 -1
  121. package/dist/network/INetworkModule.d.ts +1 -0
  122. package/dist/network/INetworkModule.d.ts.map +1 -1
  123. package/dist/network/INetworkModule.js +1 -1
  124. package/dist/network/INetworkModule.js.map +1 -1
  125. package/dist/network/NetworkManager.js +1 -1
  126. package/dist/network/NetworkManager.js.map +1 -1
  127. package/dist/network/ThrottlingUtils.js +1 -1
  128. package/dist/network/ThrottlingUtils.js.map +1 -1
  129. package/dist/packageMetadata.d.ts +1 -1
  130. package/dist/packageMetadata.d.ts.map +1 -1
  131. package/dist/packageMetadata.js +2 -2
  132. package/dist/packageMetadata.js.map +1 -1
  133. package/dist/request/AuthenticationHeaderParser.js +3 -3
  134. package/dist/request/AuthenticationHeaderParser.js.map +1 -1
  135. package/dist/request/BaseAuthRequest.d.ts +8 -5
  136. package/dist/request/BaseAuthRequest.d.ts.map +1 -1
  137. package/dist/request/CommonAuthorizationUrlRequest.d.ts +1 -0
  138. package/dist/request/CommonAuthorizationUrlRequest.d.ts.map +1 -1
  139. package/dist/request/CommonEndSessionRequest.d.ts +2 -0
  140. package/dist/request/CommonEndSessionRequest.d.ts.map +1 -1
  141. package/dist/request/RequestParameterBuilder.d.ts +18 -1
  142. package/dist/request/RequestParameterBuilder.d.ts.map +1 -1
  143. package/dist/request/RequestParameterBuilder.js +37 -3
  144. package/dist/request/RequestParameterBuilder.js.map +1 -1
  145. package/dist/request/RequestValidator.js +1 -1
  146. package/dist/request/RequestValidator.js.map +1 -1
  147. package/dist/request/ScopeSet.js +4 -4
  148. package/dist/request/ScopeSet.js.map +1 -1
  149. package/dist/response/AuthenticationResult.d.ts +1 -0
  150. package/dist/response/AuthenticationResult.d.ts.map +1 -1
  151. package/dist/response/ResponseHandler.d.ts.map +1 -1
  152. package/dist/response/ResponseHandler.js +6 -5
  153. package/dist/response/ResponseHandler.js.map +1 -1
  154. package/dist/response/ServerAuthorizationCodeResponse.d.ts +1 -0
  155. package/dist/response/ServerAuthorizationCodeResponse.d.ts.map +1 -1
  156. package/dist/telemetry/performance/IPerformanceClient.d.ts +22 -0
  157. package/dist/telemetry/performance/IPerformanceClient.d.ts.map +1 -0
  158. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts +6 -0
  159. package/dist/telemetry/performance/IPerformanceMeasurement.d.ts.map +1 -0
  160. package/dist/telemetry/performance/PerformanceClient.d.ts +125 -0
  161. package/dist/telemetry/performance/PerformanceClient.d.ts.map +1 -0
  162. package/dist/telemetry/performance/PerformanceClient.js +275 -0
  163. package/dist/telemetry/performance/PerformanceClient.js.map +1 -0
  164. package/dist/telemetry/performance/PerformanceEvent.d.ts +203 -0
  165. package/dist/telemetry/performance/PerformanceEvent.d.ts.map +1 -0
  166. package/dist/telemetry/performance/PerformanceEvent.js +100 -0
  167. package/dist/telemetry/performance/PerformanceEvent.js.map +1 -0
  168. package/dist/telemetry/performance/StubPerformanceClient.d.ts +13 -0
  169. package/dist/telemetry/performance/StubPerformanceClient.d.ts.map +1 -0
  170. package/dist/telemetry/performance/StubPerformanceClient.js +37 -0
  171. package/dist/telemetry/performance/StubPerformanceClient.js.map +1 -0
  172. package/dist/telemetry/server/ServerTelemetryManager.js +4 -4
  173. package/dist/telemetry/server/ServerTelemetryManager.js.map +1 -1
  174. package/dist/url/UrlString.js +2 -2
  175. package/dist/url/UrlString.js.map +1 -1
  176. package/dist/utils/Constants.d.ts +8 -1
  177. package/dist/utils/Constants.d.ts.map +1 -1
  178. package/dist/utils/Constants.js +9 -2
  179. package/dist/utils/Constants.js.map +1 -1
  180. package/dist/utils/ProtocolUtils.js +3 -3
  181. package/dist/utils/ProtocolUtils.js.map +1 -1
  182. package/dist/utils/StringUtils.js +1 -1
  183. package/dist/utils/StringUtils.js.map +1 -1
  184. package/dist/utils/TimeUtils.js +1 -1
  185. package/dist/utils/TimeUtils.js.map +1 -1
  186. package/package.json +74 -76
  187. package/CHANGELOG.json +0 -1282
  188. package/CHANGELOG.md +0 -491
@@ -1 +1 @@
1
- {"version":3,"file":"Authority.js","sources":["../../src/authority/Authority.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType\";\nimport { isOpenIdConfigResponse, OpenIdConfigResponse } from \"./OpenIdConfigResponse\";\nimport { UrlString } from \"../url/UrlString\";\nimport { IUri } from \"../url/IUri\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { AuthorityMetadataSource, Constants, RegionDiscoveryOutcomes } from \"../utils/Constants\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { ProtocolMode } from \"./ProtocolMode\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\nimport { RegionDiscovery } from \"./RegionDiscovery\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n */\nexport class Authority {\n\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscovery = new RegionDiscovery(networkInterface);\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n const pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\n\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\n return AuthorityType.Adfs;\n }\n\n return AuthorityType.Default;\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.authorization_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if(this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw ClientAuthError.createLogoutNotSupportedError();\n }\n const endpoint = this.replacePath(this.metadata.end_session_endpoint);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if(this.discoveryComplete()) {\n const endpoint = this.replacePath(this.metadata.issuer);\n return this.replaceTenant(endpoint);\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString \n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\n const cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n const currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n const cachedPart = cachedAuthorityParts[index];\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(`/${cachedPart}/`, `/${currentPart}/`);\n }\n });\n\n return endpoint;\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whethr or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise<void> {\n let metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n if (!metadataEntity) {\n metadataEntity = new AuthorityMetadataEntity();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n }\n\n const cloudDiscoverySource = await this.updateCloudDiscoveryMetadata(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\n const endpointSource = await this.updateEndpointMetadata(metadataEntity);\n\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.resetExpiresAt();\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\n } \n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity \n */\n private async updateEndpointMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n let metadata = this.getEndpointMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateEndpointMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n metadata = await this.getEndpointMetadataFromNetwork();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n const autodetectedRegionName = await this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata);\n\n const azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG \n ? autodetectedRegionName \n : this.authorityOptions.azureRegionConfiguration.azureRegion;\n\n if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n } else {\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\n } else {\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n }\n }\n\n if (azureRegion) {\n this.regionDiscoveryMetadata.region_used = azureRegion;\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\n }\n }\n\n metadataEntity.updateEndpointMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } else {\n throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\n }\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(metadataEntity: AuthorityMetadataEntity): boolean {\n const cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n \n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(this.authorityOptions.authorityMetadata) as OpenIdConfigResponse;\n } catch (e) {\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n */\n private async getEndpointMetadataFromNetwork(): Promise<OpenIdConfigResponse | null> {\n try {\n const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint);\n return isOpenIdConfigResponse(response.body) ? response.body : null;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\n * @param cachedMetadata \n * @param newMetadata \n */\n private async updateCloudDiscoveryMetadata(metadataEntity: AuthorityMetadataEntity): Promise<AuthorityMetadataSource> {\n let metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\n // No need to update\n return AuthorityMetadataSource.CACHE;\n }\n\n metadata = await this.getCloudDiscoveryMetadataFromNetwork();\n if (metadata) {\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\n return AuthorityMetadataSource.NETWORK;\n } else {\n // Metadata could not be obtained from config, cache or network\n throw ClientConfigurationError.createUntrustedAuthorityError();\n }\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n try {\n const parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata) as CloudInstanceDiscoveryResponse;\n const metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\n if (metadata) {\n return metadata;\n }\n } catch (e) {\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n * @param networkInterface \n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise<CloudDiscoveryMetadata | null> {\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n let match = null;\n try {\n const response = await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(instanceDiscoveryEndpoint);\n const metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\n if (metadata.length === 0) {\n // If no metadata is returned, authority is untrusted\n return null;\n }\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\n } catch(e) {\n return null;\n }\n\n if (!match) {\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded \n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\n }\n return match;\n } \n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter((authority) => {\n return UrlString.getDomainFromUrl(authority).toLowerCase() === this.hostnameAndPort;\n });\n\n return matches.length > 0;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host \n */\n static createCloudDiscoveryMetadataFromHost(host: string): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host]\n };\n }\n\n /**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response \n * @param authority \n */\n static getCloudDiscoveryMetadataFromNetworkResponse(response: CloudDiscoveryMetadata[], authority: string): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.indexOf(authority) > -1) {\n return metadata;\n }\n }\n\n return null;\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if(this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host \n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n * \n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n * \n * @param host string\n * @param region string \n */\n static buildRegionalAuthorityString(host: string, region: string, queryString?: string): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort= `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n * \n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(metadata: OpenIdConfigResponse, azureRegion: string): OpenIdConfigResponse {\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\n\n if (metadata.end_session_endpoint) {\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\n }\n \n return metadata;\n }\n}\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 , AzureCloudInstance } from \"./AuthorityOptions\";\r\nimport { CloudInstanceDiscoveryResponse, isCloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse\";\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\nimport { RegionDiscovery } from \"./RegionDiscovery\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\nimport { AzureCloudOptions } from \"../config/ClientConfiguration\";\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 // Proxy url string\r\n private proxyUrl: string;\r\n\r\n constructor(authority: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string) {\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 this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\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, this.proxyUrl);\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 const options: ImdsOptions = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<OpenIdConfigResponse>(this.defaultOpenIdConfigurationEndpoint, options);\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 const options: ImdsOptions = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n\r\n let match = null;\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<CloudInstanceDiscoveryResponse>(instanceDiscoveryEndpoint, options);\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 * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n static generateAuthority(authorityString: string, azureCloudOptions?: AzureCloudOptions): string {\r\n let authorityAzureCloudInstance;\r\n\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n const tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\r\n }\r\n\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\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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"}
@@ -13,7 +13,7 @@ export declare class AuthorityFactory {
13
13
  * @param networkClient
14
14
  * @param protocolMode
15
15
  */
16
- static createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Promise<Authority>;
16
+ static createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Promise<Authority>;
17
17
  /**
18
18
  * Create an authority object of the correct type based on the url
19
19
  * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)
@@ -24,6 +24,6 @@ export declare class AuthorityFactory {
24
24
  * @param networkInterface
25
25
  * @param protocolMode
26
26
  */
27
- static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Authority;
27
+ static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Authority;
28
28
  }
29
29
  //# sourceMappingURL=AuthorityFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,gBAAgB;IAEzB;;;;;;;;;OASG;WACU,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAY/K;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,SAAS;CAQ5J"}
1
+ {"version":3,"file":"AuthorityFactory.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,gBAAgB;IAEzB;;;;;;;;;OASG;WACU,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAYlM;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;CAQ/K"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { Authority } from './Authority.js';
@@ -23,13 +23,13 @@ var AuthorityFactory = /** @class */ (function () {
23
23
  * @param networkClient
24
24
  * @param protocolMode
25
25
  */
26
- AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions) {
26
+ AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl) {
27
27
  return __awaiter(this, void 0, void 0, function () {
28
28
  var acquireTokenAuthority, e_1;
29
29
  return __generator(this, function (_a) {
30
30
  switch (_a.label) {
31
31
  case 0:
32
- acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions);
32
+ acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);
33
33
  _a.label = 1;
34
34
  case 1:
35
35
  _a.trys.push([1, 3, , 4]);
@@ -55,12 +55,12 @@ var AuthorityFactory = /** @class */ (function () {
55
55
  * @param networkInterface
56
56
  * @param protocolMode
57
57
  */
58
- AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions) {
58
+ AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl) {
59
59
  // Throw error if authority url is empty
60
60
  if (StringUtils.isEmpty(authorityUrl)) {
61
61
  throw ClientConfigurationError.createUrlEmptyError();
62
62
  }
63
- return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions);
63
+ return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);
64
64
  };
65
65
  return AuthorityFactory;
66
66
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorityFactory.js","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority } from \"./Authority\";\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { StringUtils } from \"../utils/StringUtils\";\nimport { ClientAuthError } from \"../error/ClientAuthError\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\nimport { AuthorityOptions } from \"./AuthorityOptions\";\n\nexport class AuthorityFactory {\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n */\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Promise<Authority> {\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions);\n\n try {\n await acquireTokenAuthority.resolveEndpointsAsync();\n return acquireTokenAuthority;\n } catch (e) {\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\n }\n }\n\n /**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Does not perform endpoint discovery.\n *\n * @param authorityUrl\n * @param networkInterface\n * @param protocolMode\n */\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions): Authority {\n // Throw error if authority url is empty\n if (StringUtils.isEmpty(authorityUrl)) {\n throw ClientConfigurationError.createUrlEmptyError();\n }\n\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions);\n }\n}\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;IAaA;KA0CC;;;;;;;;;;;IA9BgB,yCAAwB,GAArC,UAAsC,YAAoB,EAAE,aAA6B,EAAE,YAA2B,EAAE,gBAAkC;;;;;;wBAEhJ,qBAAqB,GAAc,gBAAgB,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;;;;wBAGlI,qBAAM,qBAAqB,CAAC,qBAAqB,EAAE,EAAA;;wBAAnD,SAAmD,CAAC;wBACpD,sBAAO,qBAAqB,EAAC;;;wBAE7B,MAAM,eAAe,CAAC,sCAAsC,CAAC,GAAC,CAAC,CAAC;;;;;KAEvE;;;;;;;;;;;IAYM,+BAAc,GAArB,UAAsB,YAAoB,EAAE,gBAAgC,EAAE,YAA2B,EAAE,gBAAkC;;QAEzI,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,wBAAwB,CAAC,mBAAmB,EAAE,CAAC;SACxD;QAED,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;KACxF;IACL,uBAAC;AAAD,CAAC;;;;"}
1
+ {"version":3,"file":"AuthorityFactory.js","sources":["../../src/authority/AuthorityFactory.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { Authority } from \"./Authority\";\r\nimport { ClientConfigurationError } from \"../error/ClientConfigurationError\";\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { StringUtils } from \"../utils/StringUtils\";\r\nimport { ClientAuthError } from \"../error/ClientAuthError\";\r\nimport { ICacheManager } from \"../cache/interface/ICacheManager\";\r\nimport { AuthorityOptions } from \"./AuthorityOptions\";\r\n\r\nexport class AuthorityFactory {\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n static async createDiscoveredInstance(authorityUri: string, networkClient: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Promise<Authority> {\r\n // Initialize authority and perform discovery endpoint check.\r\n const acquireTokenAuthority: Authority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\r\n\r\n try {\r\n await acquireTokenAuthority.resolveEndpointsAsync();\r\n return acquireTokenAuthority;\r\n } catch (e) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n static createInstance(authorityUrl: string, networkInterface: INetworkModule, cacheManager: ICacheManager, authorityOptions: AuthorityOptions, proxyUrl?: string): Authority {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAAA;;;;;IAaA;KA0CC;;;;;;;;;;;IA9BgB,yCAAwB,GAArC,UAAsC,YAAoB,EAAE,aAA6B,EAAE,YAA2B,EAAE,gBAAkC,EAAE,QAAiB;;;;;;wBAEnK,qBAAqB,GAAc,gBAAgB,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;;;;wBAG5I,qBAAM,qBAAqB,CAAC,qBAAqB,EAAE,EAAA;;wBAAnD,SAAmD,CAAC;wBACpD,sBAAO,qBAAqB,EAAC;;;wBAE7B,MAAM,eAAe,CAAC,sCAAsC,CAAC,GAAC,CAAC,CAAC;;;;;KAEvE;;;;;;;;;;;IAYM,+BAAc,GAArB,UAAsB,YAAoB,EAAE,gBAAgC,EAAE,YAA2B,EAAE,gBAAkC,EAAE,QAAiB;;QAE5J,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,wBAAwB,CAAC,mBAAmB,EAAE,CAAC;SACxD;QAED,OAAO,IAAI,SAAS,CAAC,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KAClG;IACL,uBAAC;AAAD,CAAC;;;;"}
@@ -7,4 +7,12 @@ export declare type AuthorityOptions = {
7
7
  authorityMetadata: string;
8
8
  azureRegionConfiguration?: AzureRegionConfiguration;
9
9
  };
10
+ export declare enum AzureCloudInstance {
11
+ None = 0,
12
+ AzurePublic = "https://login.microsoftonline.com",
13
+ AzurePpe = "https://login.windows-ppe.net",
14
+ AzureChina = "https://login.chinacloudapi.cn",
15
+ AzureGermany = "https://login.microsoftonline.de",
16
+ AzureUsGovernment = "https://login.microsoftonline.us"
17
+ }
10
18
  //# sourceMappingURL=AuthorityOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,oBAAY,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,CAAC"}
1
+ {"version":3,"file":"AuthorityOptions.d.ts","sourceRoot":"","sources":["../../src/authority/AuthorityOptions.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,oBAAY,gBAAgB,GAAG;IAC3B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;CACvD,CAAC;AAEF,oBAAY,kBAAkB;IAE1B,IAAI,IAAA;IAGJ,WAAW,sCAAsC;IAGjD,QAAQ,kCAAkC;IAG1C,UAAU,mCAAmC;IAG7C,YAAY,qCAAqC;IAGjD,iBAAiB,qCAAqC;CACzD"}
@@ -0,0 +1,24 @@
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
+ 'use strict';
3
+ /*
4
+ * Copyright (c) Microsoft Corporation. All rights reserved.
5
+ * Licensed under the MIT License.
6
+ */
7
+ var AzureCloudInstance;
8
+ (function (AzureCloudInstance) {
9
+ // AzureCloudInstance is not specified.
10
+ AzureCloudInstance[AzureCloudInstance["None"] = 0] = "None";
11
+ // Microsoft Azure public cloud
12
+ AzureCloudInstance["AzurePublic"] = "https://login.microsoftonline.com";
13
+ // Microsoft PPE
14
+ AzureCloudInstance["AzurePpe"] = "https://login.windows-ppe.net";
15
+ // Microsoft Chinese national cloud
16
+ AzureCloudInstance["AzureChina"] = "https://login.chinacloudapi.cn";
17
+ // Microsoft German national cloud ("Black Forest")
18
+ AzureCloudInstance["AzureGermany"] = "https://login.microsoftonline.de";
19
+ // US Government cloud
20
+ AzureCloudInstance["AzureUsGovernment"] = "https://login.microsoftonline.us";
21
+ })(AzureCloudInstance || (AzureCloudInstance = {}));
22
+
23
+ export { AzureCloudInstance };
24
+ //# sourceMappingURL=AuthorityOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorityOptions.js","sources":["../../src/authority/AuthorityOptions.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { ProtocolMode } from \"./ProtocolMode\";\r\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration\";\r\n\r\nexport type AuthorityOptions = {\r\n protocolMode: ProtocolMode;\r\n knownAuthorities: Array<string>;\r\n cloudDiscoveryMetadata: string;\r\n authorityMetadata: string;\r\n azureRegionConfiguration?: AzureRegionConfiguration;\r\n};\r\n\r\nexport enum AzureCloudInstance {\r\n // AzureCloudInstance is not specified.\r\n None,\r\n\r\n // Microsoft Azure public cloud\r\n AzurePublic = \"https://login.microsoftonline.com\",\r\n\r\n // Microsoft PPE\r\n AzurePpe = \"https://login.windows-ppe.net\",\r\n\r\n // Microsoft Chinese national cloud\r\n AzureChina = \"https://login.chinacloudapi.cn\",\r\n\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureGermany = \"https://login.microsoftonline.de\",\r\n\r\n // US Government cloud\r\n AzureUsGovernment = \"https://login.microsoftonline.us\",\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;IAgBY;AAAZ,WAAY,kBAAkB;;IAE1B,2DAAI,CAAA;;IAGJ,uEAAiD,CAAA;;IAGjD,gEAA0C,CAAA;;IAG1C,mEAA6C,CAAA;;IAG7C,uEAAiD,CAAA;;IAGjD,4EAAsD,CAAA;AAC1D,CAAC,EAlBW,kBAAkB,KAAlB,kBAAkB;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorityType.js","sources":["../../src/authority/AuthorityType.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport enum AuthorityType {\n Default,\n Adfs\n}\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;IAGY;AAAZ,WAAY,aAAa;IACrB,uDAAO,CAAA;IACP,iDAAI,CAAA;AACR,CAAC,EAHW,aAAa,KAAb,aAAa;;;;"}
1
+ {"version":3,"file":"AuthorityType.js","sources":["../../src/authority/AuthorityType.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 * Authority types supported by MSAL.\r\n */\r\nexport enum AuthorityType {\r\n Default,\r\n Adfs\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;IAGY;AAAZ,WAAY,aAAa;IACrB,uDAAO,CAAA;IACP,iDAAI,CAAA;AACR,CAAC,EAHW,aAAa,KAAb,aAAa;;;;"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"CloudInstanceDiscoveryResponse.js","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n tenant_discovery_endpoint: string;\n metadata: Array<CloudDiscoveryMetadata>;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n response.hasOwnProperty(\"metadata\")\n );\n}\n"],"names":[],"mappings":";;AAAA;;;;SAegB,gCAAgC,CAAC,QAAgB;IAC7D,QACI,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;QACpD,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"}
1
+ {"version":3,"file":"CloudInstanceDiscoveryResponse.js","sources":["../../src/authority/CloudInstanceDiscoveryResponse.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata\";\r\n\r\n/**\r\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\r\n */\r\nexport type CloudInstanceDiscoveryResponse = {\r\n tenant_discovery_endpoint: string;\r\n metadata: Array<CloudDiscoveryMetadata>;\r\n};\r\n\r\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\r\n return (\r\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\")\r\n );\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;SAegB,gCAAgC,CAAC,QAAgB;IAC7D,QACI,QAAQ,CAAC,cAAc,CAAC,2BAA2B,CAAC;QACpD,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EACrC;AACN;;;;"}
@@ -0,0 +1,7 @@
1
+ export declare type ImdsOptions = {
2
+ headers?: {
3
+ Metadata: string;
4
+ };
5
+ proxyUrl?: string;
6
+ };
7
+ //# sourceMappingURL=ImdsOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImdsOptions.d.ts","sourceRoot":"","sources":["../../src/authority/ImdsOptions.ts"],"names":[],"mappings":"AAKA,oBAAY,WAAW,GAAG;IACtB,OAAO,CAAC,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"OpenIdConfigResponse.js","sources":["../../src/authority/OpenIdConfigResponse.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"authorization_endpoint\") &&\n response.hasOwnProperty(\"token_endpoint\") && \n response.hasOwnProperty(\"issuer\")\n );\n}\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
+ {"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
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  /*
4
4
  * Copyright (c) Microsoft Corporation. All rights reserved.
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolMode.js","sources":["../../src/authority/ProtocolMode.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport enum ProtocolMode {\n AAD = \"AAD\",\n OIDC = \"OIDC\"\n}\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;IAGY;AAAZ,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAHW,YAAY,KAAZ,YAAY;;;;"}
1
+ {"version":3,"file":"ProtocolMode.js","sources":["../../src/authority/ProtocolMode.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 * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n AAD = \"AAD\",\r\n OIDC = \"OIDC\"\r\n}\r\n"],"names":[],"mappings":";;AAAA;;;;AAKA;;;IAGY;AAAZ,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAHW,YAAY,KAAZ,YAAY;;;;"}
@@ -1,19 +1,16 @@
1
1
  import { INetworkModule } from "../network/INetworkModule";
2
2
  import { RegionDiscoveryMetadata } from "./RegionDiscoveryMetadata";
3
+ import { ImdsOptions } from "./ImdsOptions";
3
4
  export declare class RegionDiscovery {
4
5
  protected networkInterface: INetworkModule;
5
- protected static IMDS_OPTIONS: {
6
- headers: {
7
- Metadata: string;
8
- };
9
- };
6
+ protected static IMDS_OPTIONS: ImdsOptions;
10
7
  constructor(networkInterface: INetworkModule);
11
8
  /**
12
9
  * Detect the region from the application's environment.
13
10
  *
14
11
  * @returns Promise<string | null>
15
12
  */
16
- detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise<string | null>;
13
+ detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata, proxyUrl: string): Promise<string | null>;
17
14
  /**
18
15
  * Make the call to the IMDS endpoint
19
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,SAAS,CAAC,MAAM,CAAC,YAAY;;;;MAAmC;gBAEpD,gBAAgB,EAAE,cAAc;IAI5C;;;;OAIG;IACU,YAAY,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EAAE,uBAAuB,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2C1I;;;;;OAKG;YACW,iBAAiB;IAI/B;;;;OAIG;YACW,iBAAiB;CAclC"}
1
+ {"version":3,"file":"RegionDiscovery.d.ts","sourceRoot":"","sources":["../../src/authority/RegionDiscovery.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAI3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,eAAe;IAExB,SAAS,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAE3C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAIxC;gBAEU,gBAAgB,EAAE,cAAc;IAI5C;;;;OAIG;IACU,YAAY,CAAC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgD5J;;;;;OAKG;YACW,iBAAiB;IAI/B;;;;OAIG;YACW,iBAAiB;CAclC"}
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
2
2
  'use strict';
3
3
  import { __awaiter, __generator } from '../_virtual/_tslib.js';
4
4
  import { RegionDiscoverySources, ResponseCodes, Constants } from '../utils/Constants.js';
@@ -16,18 +16,22 @@ var RegionDiscovery = /** @class */ (function () {
16
16
  *
17
17
  * @returns Promise<string | null>
18
18
  */
19
- RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata) {
19
+ RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata, proxyUrl) {
20
20
  return __awaiter(this, void 0, void 0, function () {
21
- var autodetectedRegionName, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;
21
+ var autodetectedRegionName, options, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;
22
22
  return __generator(this, function (_a) {
23
23
  switch (_a.label) {
24
24
  case 0:
25
25
  autodetectedRegionName = environmentRegion;
26
26
  if (!!autodetectedRegionName) return [3 /*break*/, 8];
27
+ options = RegionDiscovery.IMDS_OPTIONS;
28
+ if (proxyUrl) {
29
+ options.proxyUrl = proxyUrl;
30
+ }
27
31
  _a.label = 1;
28
32
  case 1:
29
33
  _a.trys.push([1, 6, , 7]);
30
- return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION)];
34
+ return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION, options)];
31
35
  case 2:
32
36
  localIMDSVersionResponse = _a.sent();
33
37
  if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {
@@ -35,14 +39,14 @@ var RegionDiscovery = /** @class */ (function () {
35
39
  regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;
36
40
  }
37
41
  if (!(localIMDSVersionResponse.status === ResponseCodes.httpBadRequest)) return [3 /*break*/, 5];
38
- return [4 /*yield*/, this.getCurrentVersion()];
42
+ return [4 /*yield*/, this.getCurrentVersion(options)];
39
43
  case 3:
40
44
  currentIMDSVersion = _a.sent();
41
45
  if (!currentIMDSVersion) {
42
46
  regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;
43
47
  return [2 /*return*/, null];
44
48
  }
45
- return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion)];
49
+ return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion, options)];
46
50
  case 4:
47
51
  currentIMDSVersionResponse = _a.sent();
48
52
  if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {
@@ -75,10 +79,10 @@ var RegionDiscovery = /** @class */ (function () {
75
79
  * @param imdsEndpointUrl
76
80
  * @returns Promise<NetworkResponse<string>>
77
81
  */
78
- RegionDiscovery.prototype.getRegionFromIMDS = function (version) {
82
+ RegionDiscovery.prototype.getRegionFromIMDS = function (version, options) {
79
83
  return __awaiter(this, void 0, void 0, function () {
80
84
  return __generator(this, function (_a) {
81
- return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + "?api-version=" + version + "&format=text", RegionDiscovery.IMDS_OPTIONS, Constants.IMDS_TIMEOUT)];
85
+ return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + "?api-version=" + version + "&format=text", options, Constants.IMDS_TIMEOUT)];
82
86
  });
83
87
  });
84
88
  };
@@ -87,14 +91,14 @@ var RegionDiscovery = /** @class */ (function () {
87
91
  *
88
92
  * @returns Promise<string | null>
89
93
  */
90
- RegionDiscovery.prototype.getCurrentVersion = function () {
94
+ RegionDiscovery.prototype.getCurrentVersion = function (options) {
91
95
  return __awaiter(this, void 0, void 0, function () {
92
96
  var response;
93
97
  return __generator(this, function (_a) {
94
98
  switch (_a.label) {
95
99
  case 0:
96
100
  _a.trys.push([0, 2, , 3]);
97
- return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + "?format=json", RegionDiscovery.IMDS_OPTIONS)];
101
+ return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + "?format=json", options)];
98
102
  case 1:
99
103
  response = _a.sent();
100
104
  // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.
@@ -111,7 +115,11 @@ var RegionDiscovery = /** @class */ (function () {
111
115
  });
112
116
  };
113
117
  // Options for the IMDS endpoint request
114
- RegionDiscovery.IMDS_OPTIONS = { headers: { "Metadata": "true" } };
118
+ RegionDiscovery.IMDS_OPTIONS = {
119
+ headers: {
120
+ Metadata: "true",
121
+ },
122
+ };
115
123
  return RegionDiscovery;
116
124
  }());
117
125
 
@@ -1 +1 @@
1
- {"version":3,"file":"RegionDiscovery.js","sources":["../../src/authority/RegionDiscovery.ts"],"sourcesContent":["/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule\";\nimport { NetworkResponse } from \"../network/NetworkManager\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\n\nexport class RegionDiscovery {\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Options for the IMDS endpoint request\n protected static IMDS_OPTIONS = {headers: {\"Metadata\": \"true\"}};\n\n constructor(networkInterface: INetworkModule) {\n this.networkInterface = networkInterface;\n }\n\n /**\n * Detect the region from the application's environment.\n * \n * @returns Promise<string | null>\n */\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata): Promise<string | null> {\n // Initialize auto detected region with the region from the envrionment \n let autodetectedRegionName = environmentRegion;\n\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \n if (!autodetectedRegionName) {\n try {\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION);\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = localIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n } \n \n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\n const currentIMDSVersion = await this.getCurrentVersion();\n if (!currentIMDSVersion) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion);\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\n autodetectedRegionName = currentIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\n }\n }\n } catch(e) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n } \n } else {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n }\n\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n if (!autodetectedRegionName) {\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\n }\n\n return autodetectedRegionName || null;\n }\n\n /**\n * Make the call to the IMDS endpoint\n * \n * @param imdsEndpointUrl\n * @returns Promise<NetworkResponse<string>>\n */\n private async getRegionFromIMDS(version: string): Promise<NetworkResponse<string>> {\n return this.networkInterface.sendGetRequestAsync<string>(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, RegionDiscovery.IMDS_OPTIONS, Constants.IMDS_TIMEOUT);\n }\n\n /**\n * Get the most recent version of the IMDS endpoint available\n * \n * @returns Promise<string | null>\n */\n private async getCurrentVersion(): Promise<string | null> {\n try {\n const response = await this.networkInterface.sendGetRequestAsync<IMDSBadResponse>(`${Constants.IMDS_ENDPOINT}?format=json`, RegionDiscovery.IMDS_OPTIONS);\n\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\n return response.body[\"newest-versions\"][0];\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n}\n"],"names":[],"mappings":";;;;;AAAA;;;;;IAiBI,yBAAY,gBAAgC;QACxC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;KAC5C;;;;;;IAOY,sCAAY,GAAzB,UAA0B,iBAAqC,EAAE,uBAAgD;;;;;;wBAEzG,sBAAsB,GAAG,iBAAiB,CAAC;6BAG3C,CAAC,sBAAsB,EAAvB,wBAAuB;;;;wBAEc,qBAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAA;;wBAA/E,wBAAwB,GAAG,SAAoD;wBACrF,IAAI,wBAAwB,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE;4BAC/D,sBAAsB,GAAG,wBAAwB,CAAC,IAAI,CAAC;4BACvD,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC;yBACvE;8BAGG,wBAAwB,CAAC,MAAM,KAAK,aAAa,CAAC,cAAc,CAAA,EAAhE,wBAAgE;wBACrC,qBAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA;;wBAAnD,kBAAkB,GAAG,SAA8B;wBACzD,IAAI,CAAC,kBAAkB,EAAE;4BACrB,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,qBAAqB,CAAC;4BACrF,sBAAO,IAAI,EAAC;yBACf;wBAEkC,qBAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,EAAA;;wBAA7E,0BAA0B,GAAG,SAAgD;wBACnF,IAAI,0BAA0B,CAAC,MAAM,KAAK,aAAa,CAAC,WAAW,EAAE;4BACjE,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;4BACzD,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC;yBACvE;;;;;wBAGL,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,qBAAqB,CAAC;wBACrF,sBAAO,IAAI,EAAC;;;wBAGhB,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,oBAAoB,CAAC;;;;wBAIxF,IAAI,CAAC,sBAAsB,EAAE;4BACzB,uBAAuB,CAAC,aAAa,GAAG,sBAAsB,CAAC,qBAAqB,CAAC;yBACxF;wBAED,sBAAO,sBAAsB,IAAI,IAAI,EAAC;;;;KACzC;;;;;;;IAQa,2CAAiB,GAA/B,UAAgC,OAAe;;;gBAC3C,sBAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAY,SAAS,CAAC,aAAa,qBAAgB,OAAO,iBAAc,EAAE,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,EAAC;;;KACnL;;;;;;IAOa,2CAAiB,GAA/B;;;;;;;wBAEyB,qBAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAqB,SAAS,CAAC,aAAa,iBAAc,EAAE,eAAe,CAAC,YAAY,CAAC,EAAA;;wBAAnJ,QAAQ,GAAG,SAAwI;;wBAGzJ,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;4BACtJ,sBAAO,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAC;yBAC9C;wBAED,sBAAO,IAAI,EAAC;;;wBAEZ,sBAAO,IAAI,EAAC;;;;;KAEnB;;IAlFgB,4BAAY,GAAG,EAAC,OAAO,EAAE,EAAC,UAAU,EAAE,MAAM,EAAC,EAAC,CAAC;IAmFpE,sBAAC;CAvFD;;;;"}
1
+ {"version":3,"file":"RegionDiscovery.js","sources":["../../src/authority/RegionDiscovery.ts"],"sourcesContent":["/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { INetworkModule } from \"../network/INetworkModule\";\r\nimport { NetworkResponse } from \"../network/NetworkManager\";\r\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse\";\r\nimport { Constants, RegionDiscoverySources, ResponseCodes } from \"../utils/Constants\";\r\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata\";\r\nimport { ImdsOptions } from \"./ImdsOptions\";\r\n\r\nexport class RegionDiscovery {\r\n // Network interface to make requests with.\r\n protected networkInterface: INetworkModule;\r\n // Options for the IMDS endpoint request\r\n protected static IMDS_OPTIONS: ImdsOptions = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n\r\n constructor(networkInterface: INetworkModule) {\r\n this.networkInterface = networkInterface;\r\n }\r\n\r\n /**\r\n * Detect the region from the application's environment.\r\n * \r\n * @returns Promise<string | null>\r\n */\r\n public async detectRegion(environmentRegion: string | undefined, regionDiscoveryMetadata: RegionDiscoveryMetadata, proxyUrl: string): Promise<string | null> {\r\n // Initialize auto detected region with the region from the envrionment \r\n let autodetectedRegionName = environmentRegion;\r\n\r\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS \r\n if (!autodetectedRegionName) {\r\n const options = RegionDiscovery.IMDS_OPTIONS;\r\n if (proxyUrl) {\r\n options.proxyUrl = proxyUrl;\r\n }\r\n\r\n try {\r\n const localIMDSVersionResponse = await this.getRegionFromIMDS(Constants.IMDS_VERSION, options);\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n } \r\n \r\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry. \r\n if (localIMDSVersionResponse.status === ResponseCodes.httpBadRequest) {\r\n const currentIMDSVersion = await this.getCurrentVersion(options);\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n }\r\n\r\n const currentIMDSVersionResponse = await this.getRegionFromIMDS(currentIMDSVersion, options);\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n }\r\n } catch(e) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return null;\r\n } \r\n } else {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n }\r\n\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n\r\n return autodetectedRegionName || null;\r\n }\r\n\r\n /**\r\n * Make the call to the IMDS endpoint\r\n * \r\n * @param imdsEndpointUrl\r\n * @returns Promise<NetworkResponse<string>>\r\n */\r\n private async getRegionFromIMDS(version: string, options: ImdsOptions): Promise<NetworkResponse<string>> {\r\n return this.networkInterface.sendGetRequestAsync<string>(`${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`, options, Constants.IMDS_TIMEOUT);\r\n }\r\n\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n * \r\n * @returns Promise<string | null>\r\n */\r\n private async getCurrentVersion(options: ImdsOptions): Promise<string | null> {\r\n try {\r\n const response = await this.networkInterface.sendGetRequestAsync<IMDSBadResponse>(`${Constants.IMDS_ENDPOINT}?format=json`, options);\r\n\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return response.body[\"newest-versions\"][0];\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -207,7 +207,7 @@ export declare abstract class CacheManager implements ICacheManager {
207
207
  */
208
208
  removeAccount(accountKey: string): Promise<boolean>;
209
209
  /**
210
- * returns a boolean if the given account is removed
210
+ * Removes credentials associated with the provided account
211
211
  * @param account
212
212
  */
213
213
  removeAccountContext(account: AccountEntity): Promise<boolean>;
@@ -1,4 +1,4 @@
1
- /*! @azure/msal-common v6.0.0 2022-01-04 */
1
+ /*! @azure/msal-common v6.3.0-beta.0 2022-04-27 */
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';
@@ -129,7 +129,7 @@ var CacheManager = /** @class */ (function () {
129
129
  * @param realm
130
130
  */
131
131
  CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {
132
- return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : "", accountFilter ? accountFilter.environment : "", accountFilter ? accountFilter.realm : "");
132
+ return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING, accountFilter ? accountFilter.environment : Constants.EMPTY_STRING, accountFilter ? accountFilter.realm : Constants.EMPTY_STRING);
133
133
  };
134
134
  /**
135
135
  * retrieve accounts matching all provided filters; if no filter is set, get all accounts
@@ -375,7 +375,7 @@ var CacheManager = /** @class */ (function () {
375
375
  });
376
376
  };
377
377
  /**
378
- * returns a boolean if the given account is removed
378
+ * Removes credentials associated with the provided account
379
379
  * @param account
380
380
  */
381
381
  CacheManager.prototype.removeAccountContext = function (account) {