diff --git a/src/Common/Constants.ts b/src/Common/Constants.ts index cde5e9462..ce0042890 100644 --- a/src/Common/Constants.ts +++ b/src/Common/Constants.ts @@ -183,6 +183,12 @@ export class CassandraProxyAPIs { public static readonly connectionStringSchemaApi: string = "api/connectionstring/cassandra/schema"; } +export class AadEndpoints { + public static readonly Prod: string = "https://login.microsoftonline.com/"; + public static readonly Fairfax: string = "https://login.microsoftonline.us/"; + public static readonly Mooncake: string = "https://login.partner.microsoftonline.cn/"; +} + export class Queries { public static CustomPageOption: string = "custom"; public static UnlimitedPageOption: string = "unlimited"; diff --git a/src/ConfigContext.ts b/src/ConfigContext.ts index 6d15a8a0f..5bf6c962b 100644 --- a/src/ConfigContext.ts +++ b/src/ConfigContext.ts @@ -5,6 +5,7 @@ import { MongoProxyEndpoints, PortalBackendEndpoints, } from "Common/Constants"; +import { userContext } from "UserContext"; import { allowedAadEndpoints, allowedArcadiaEndpoints, @@ -36,6 +37,7 @@ export interface ConfigContext { gitSha?: string; proxyPath?: string; AAD_ENDPOINT: string; + ENVIRONMENT: string; ARM_AUTH_AREA: string; ARM_ENDPOINT: string; EMULATOR_ENDPOINT?: string; @@ -91,7 +93,7 @@ let configContext: Readonly = { ], // Webpack injects this at build time gitSha: process.env.GIT_SHA, hostedExplorerURL: "https://cosmos.azure.com/", - AAD_ENDPOINT: "https://login.microsoftonline.com/", + AAD_ENDPOINT: "", ARM_AUTH_AREA: "https://management.azure.com/", ARM_ENDPOINT: "https://management.azure.com/", ARM_API_VERSION: "2016-06-01", diff --git a/src/Utils/EndpointUtils.ts b/src/Utils/EndpointUtils.ts index b685dc71a..fb505a431 100644 --- a/src/Utils/EndpointUtils.ts +++ b/src/Utils/EndpointUtils.ts @@ -52,7 +52,10 @@ export const defaultAllowedArmEndpoints: ReadonlyArray = [ "https://management.chinacloudapi.cn", ]; -export const allowedAadEndpoints: ReadonlyArray = ["https://login.microsoftonline.com/"]; +export const allowedAadEndpoints: ReadonlyArray = ["https://login.microsoftonline.com/", + "https://login.microsoftonline.us/", + "https://login.partner.microsoftonline.cn/" +]; export const defaultAllowedBackendEndpoints: ReadonlyArray = [ "https://main.documentdb.ext.azure.com", diff --git a/src/hooks/useKnockoutExplorer.ts b/src/hooks/useKnockoutExplorer.ts index ed7b762bc..0a8902777 100644 --- a/src/hooks/useKnockoutExplorer.ts +++ b/src/hooks/useKnockoutExplorer.ts @@ -639,6 +639,31 @@ function updateContextsFromPortalMessage(inputs: DataExplorerInputsFrame) { PORTAL_BACKEND_ENDPOINT: inputs.portalBackendEndpoint, }); + const portalEnv = inputs.serverId as PortalEnv; + + switch (portalEnv) { + case "prod1": + case "prod": + updateConfigContext({ + AAD_ENDPOINT: Constants.AadEndpoints.Prod + }); + break; + case "fairfax": + updateConfigContext({ + AAD_ENDPOINT: Constants.AadEndpoints.Fairfax + }); + break; + case "mooncake": + updateConfigContext({ + AAD_ENDPOINT: Constants.AadEndpoints.Mooncake + }); + break; + + default: + console.warn(`Unknown portal environment: ${portalEnv}`); + break; + } + updateUserContext({ authorizationToken, databaseAccount,