public IIoTKeyVaultClient( AuthenticationCallback authenticationCallback, VaultInner keyVault ) { var kvAuthenticationCallback = new KeyVaultClient.AuthenticationCallback( async(authority, resource, scope) => { return(await authenticationCallback(authority, resource, scope)); } ); _keyVaultClient = new KeyVaultClient(kvAuthenticationCallback); _keyVault = keyVault; }
public async Task RunAsync() { // Generate a random name for a new vault String vaultName = Util.generateRandomVaultId(); // Set up credentials to access management plane to set up example key vault AzureCredentials credentials = new AzureCredentialsFactory().FromServicePrincipal( settings.ClientID, settings.ClientSecret, settings.TenantID, AzureEnvironment.AzureGlobalCloud ); // Ensure that our sample resource group exists. Console.WriteLine("Creating sample resource group"); ResourceManagementClient resourceMgmtClient = new ResourceManagementClient(credentials); resourceMgmtClient.SubscriptionId = settings.SubscriptionID; await resourceMgmtClient.ResourceGroups.CreateOrUpdateAsync(settings.ResourceGroupName, new ResourceGroupInner(settings.AzureLocation)); // Create the sample key vault. Console.WriteLine("Creating sample Key Vault - " + vaultName); // Set up the params for the API call VaultCreateOrUpdateParametersInner createParams = new VaultCreateOrUpdateParametersInner( settings.AzureLocation, new VaultProperties( Guid.Parse(settings.TenantID), new Microsoft.Azure.Management.KeyVault.Fluent.Models.Sku(SkuName.Standard), // Create an access policy granting all secret permissions to our sample's service principal new[] { new AccessPolicyEntry(Guid.Parse(settings.TenantID), settings.ClientOID, new Permissions(null, new[] { "all" })) } ) ); KeyVaultManagementClient kvMgmtClient = new KeyVaultManagementClient(credentials); kvMgmtClient.SubscriptionId = settings.SubscriptionID; VaultInner vault = await kvMgmtClient.Vaults.CreateOrUpdateAsync(settings.ResourceGroupName, vaultName, createParams); // Now demo authentication to the vault using ADAL // Add a delay to wait for KV DNS record to be created. See: https://github.com/Azure/azure-sdk-for-node/pull/1938 System.Threading.Thread.Sleep(15000); await authUsingADALCallbackAsync(vault.Properties.VaultUri); }
private async Task <VaultInner> CreateOrRetrieveVaultAsync(string resourceGroupName, string vaultName, bool enableSoftDelete, bool enablePurgeProtection) { VaultInner vault = null; try { // check whether the vault exists Console.Write("Checking the existence of the vault..."); vault = await ManagementClient.Vaults.GetAsync(resourceGroupName, vaultName).ConfigureAwait(false); Console.WriteLine("done."); } catch (CloudException ce) { if (ce.Response.StatusCode != HttpStatusCode.NotFound) { Console.WriteLine("Unexpected exception encountered retrieving the vault: {0}", ce.Message); throw; } // create a new vault var vaultParameters = CreateVaultParameters(resourceGroupName, vaultName, context.PreferredLocation, enableSoftDelete, enablePurgeProtection); // create new soft-delete-enabled vault Console.Write("Vault does not exist; creating..."); vault = await ManagementClient.Vaults.CreateOrUpdateAsync(resourceGroupName, vaultName, vaultParameters).ConfigureAwait(false); Console.WriteLine("done."); // wait for the DNS record to propagate; verify properties Console.Write("Waiting for DNS propagation.."); Thread.Sleep(10 * 1000); Console.WriteLine("done."); Console.Write("Retrieving newly created vault..."); vault = await ManagementClient.Vaults.GetAsync(resourceGroupName, vaultName).ConfigureAwait(false); Console.WriteLine("done."); } return(vault); }
/// <summary> /// Constructor of IIoT-specific KeyVault client. /// </summary> /// <param name="authenticationCallback"></param> /// <param name="keyVault"></param> public IIoTKeyVaultClient( AuthenticationCallback authenticationCallback, VaultInner keyVault ) { if (authenticationCallback is null) { throw new ArgumentNullException(nameof(authenticationCallback)); } if (keyVault is null) { throw new ArgumentNullException(nameof(keyVault)); } var kvAuthenticationCallback = new KeyVaultClient.AuthenticationCallback( async(authority, resource, scope) => { return(await authenticationCallback(authority, resource, scope)); } ); _keyVaultClient = new KeyVaultClient(kvAuthenticationCallback); _keyVault = keyVault; }
public IIoTEnvironment( AzureEnvironment azureEnvironment, Guid tenantId, // IoT Hub IotHubDescription iotHub, string iotHubOwnerConnectionString, string iotHubEventHubEventsEndpointName, EventHubConsumerGroupInfo iotHubEventHubConsumerGroupEvents, EventHubConsumerGroupInfo iotHubEventHubConsumerGroupTelemetry, EventHubConsumerGroupInfo iotHubEventHubConsumerGroupTunnel, EventHubConsumerGroupInfo iotHubEventHubConsumerGroupOnboarding, // Cosmos DB string cosmosDBAccountConnectionString, // Storage Account string storageAccountConectionString, string storageAccountContainerDataprotection, // ADLS Gen2 Storage Account string adlsAccount, string adlsAccountKey, string adlsEndpointSuffix, string adlsConectionString, string adlsContainerCdm, string adlsContainerCdmRootFolder, // Event Hub Namespace EventhubInner eventHub, string eventHubConnectionString, ConsumerGroupInner telemetryCdm, ConsumerGroupInner telemetryUx, // Service Bus string serviceBusConnectionString, // SignalR string signalRConnectionString, string signalRServiceMode, // Key Vault VaultInner keyVault, string dataprotectionKeyName, // Application Insights ApplicationInsightsComponent applicationInsightsComponent, // Log Analytics Workspace Workspace workspace, string workspaceKey, // Service URL string serviceURL, // App Registrations Application serviceApplication, string serviceApplicationSecret, Application clientApplication, string clientApplicationSecret ) { // IoT Hub PCS_IOTHUB_CONNSTRING = iotHubOwnerConnectionString; PCS_IOTHUB_EVENTHUBENDPOINT = iotHub.Properties.EventHubEndpoints[iotHubEventHubEventsEndpointName].Endpoint; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS = iotHubEventHubConsumerGroupEvents.Name; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY = iotHubEventHubConsumerGroupTelemetry.Name; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TUNNEL = iotHubEventHubConsumerGroupTunnel.Name; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_ONBOARDING = iotHubEventHubConsumerGroupOnboarding.Name; // Cosmos DB PCS_COSMOSDB_CONNSTRING = cosmosDBAccountConnectionString; // Storage Account PCS_STORAGE_CONNSTRING = storageAccountConectionString; PCS_STORAGE_CONTAINER_DATAPROTECTION = storageAccountContainerDataprotection; // ADLS Gen2 Storage Account // NOTE: PCS_ADLSG2_ACCOUNT, PCS_ADLSG2_ACCOUNT_KEY and PCS_ADLSG2_ENDPOINTSUFFIX are required // for <2.8.5 version of components as processing of PCS_ADLSG2_CONNSTRING is not present there. PCS_ADLSG2_ACCOUNT = adlsAccount; PCS_ADLSG2_ACCOUNT_KEY = adlsAccountKey; PCS_ADLSG2_ENDPOINTSUFFIX = adlsEndpointSuffix; PCS_ADLSG2_CONNSTRING = adlsConectionString; PCS_ADLSG2_CONTAINER_CDM = adlsContainerCdm; PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER = adlsContainerCdmRootFolder; // Event Hub Namespace PCS_EVENTHUB_CONNSTRING = eventHubConnectionString; PCS_EVENTHUB_NAME = eventHub.Name; PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM = telemetryCdm.Name; PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX = telemetryUx.Name; // Service Bus PCS_SERVICEBUS_CONNSTRING = serviceBusConnectionString; // Key Vault PCS_KEYVAULT_URL = keyVault.Properties.VaultUri; PCS_KEYVAULT_KEY_DATAPROTECTION = dataprotectionKeyName; PCS_KEYVAULT_APPID = serviceApplication.AppId; PCS_KEYVAULT_SECRET = serviceApplicationSecret; // Application Insights PCS_APPINSIGHTS_INSTRUMENTATIONKEY = applicationInsightsComponent.InstrumentationKey; // Log Analytics Workspace PCS_WORKSPACE_ID = workspace.Id; PCS_WORKSPACE_KEY = workspaceKey; // Service URLs PCS_SERVICE_URL = serviceURL; // Service URLs that will be consumed by microservices. PCS_TWIN_REGISTRY_URL = $"{serviceURL}/registry/"; PCS_TWIN_SERVICE_URL = $"{serviceURL}/twin/"; PCS_HISTORY_SERVICE_URL = $"{serviceURL}/history/"; PCS_VAULT_SERVICE_URL = $"{serviceURL}/vault/"; PCS_PUBLISHER_SERVICE_URL = $"{serviceURL}/publisher/"; PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL = $"{serviceURL}/edge/publisher/"; PCS_EVENTS_SERVICE_URL = $"{serviceURL}/events/"; // SignalR PCS_SIGNALR_CONNSTRING = signalRConnectionString; PCS_SIGNALR_MODE = signalRServiceMode; // Authentication PCS_AUTH_REQUIRED = $"{true}"; PCS_AUTH_TENANT = $"{tenantId}"; // ToDo: Check value of PCS_AUTH_INSTANCE. //PCS_AUTH_INSTANCE = "https://login.microsoftonline.com/"; PCS_AUTH_INSTANCE = azureEnvironment.AuthenticationEndpoint; PCS_AUTH_ISSUER = $"https://sts.windows.net/{tenantId}/"; PCS_AUTH_HTTPSREDIRECTPORT = $"{0}"; PCS_AUTH_AUDIENCE = serviceApplication.IdentifierUris.First(); PCS_AUTH_CLIENT_APPID = clientApplication.AppId; PCS_AUTH_CLIENT_SECRET = clientApplicationSecret; PCS_AUTH_SERVICE_APPID = serviceApplication.AppId; PCS_AUTH_SERVICE_SECRET = serviceApplicationSecret; // CORS Whitelist PCS_CORS_WHITELIST = "*"; // Service URL path bases PCS_TWIN_REGISTRY_SERVICE_PATH_BASE = "/registry"; PCS_TWIN_SERVICE_PATH_BASE = "/twin"; PCS_HISTORY_SERVICE_PATH_BASE = "/history"; PCS_GATEWAY_SERVICE_PATH_BASE = "/ua"; PCS_VAULT_SERVICE_PATH_BASE = "/vault"; PCS_PUBLISHER_SERVICE_PATH_BASE = "/publisher"; PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE = "/edge/publisher"; PCS_EVENTS_SERVICE_PATH_BASE = "/events"; PCS_FRONTEND_APP_SERVICE_PATH_BASE = "/frontend"; // AspNetCore ASPNETCORE_FORWARDEDHEADERS_ENABLED = $"{true}"; ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT = $"{1}"; // OpenAPI PCS_OPENAPI_SERVER_HOST = ""; Dict = new Dictionary <string, string> { // IoT Hub { $"{nameof(PCS_IOTHUB_CONNSTRING)}", PCS_IOTHUB_CONNSTRING }, { $"{nameof(PCS_IOTHUB_EVENTHUBENDPOINT)}", PCS_IOTHUB_EVENTHUBENDPOINT }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TUNNEL)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TUNNEL }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_ONBOARDING)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_ONBOARDING }, // Cosmos DB { $"{nameof(PCS_COSMOSDB_CONNSTRING)}", PCS_COSMOSDB_CONNSTRING }, // Storage Account { $"{nameof(PCS_STORAGE_CONNSTRING)}", PCS_STORAGE_CONNSTRING }, { $"{nameof(PCS_STORAGE_CONTAINER_DATAPROTECTION)}", PCS_STORAGE_CONTAINER_DATAPROTECTION }, // ADLS Gen2 Storage Account { $"{nameof(PCS_ADLSG2_ACCOUNT)}", PCS_ADLSG2_ACCOUNT }, { $"{nameof(PCS_ADLSG2_ACCOUNT_KEY)}", PCS_ADLSG2_ACCOUNT_KEY }, { $"{nameof(PCS_ADLSG2_ENDPOINTSUFFIX)}", PCS_ADLSG2_ENDPOINTSUFFIX }, { $"{nameof(PCS_ADLSG2_CONNSTRING)}", PCS_ADLSG2_CONNSTRING }, { $"{nameof(PCS_ADLSG2_CONTAINER_CDM)}", PCS_ADLSG2_CONTAINER_CDM }, { $"{nameof(PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER)}", PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER }, // Event Hub Namespace { $"{nameof(PCS_EVENTHUB_CONNSTRING)}", PCS_EVENTHUB_CONNSTRING }, { $"{nameof(PCS_EVENTHUB_NAME)}", PCS_EVENTHUB_NAME }, { $"{nameof(PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM)}", PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM }, { $"{nameof(PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX)}", PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX }, // Service Bus { $"{nameof(PCS_SERVICEBUS_CONNSTRING)}", PCS_SERVICEBUS_CONNSTRING }, // Key Vault { $"{nameof(PCS_KEYVAULT_URL)}", PCS_KEYVAULT_URL }, { $"{nameof(PCS_KEYVAULT_KEY_DATAPROTECTION)}", PCS_KEYVAULT_KEY_DATAPROTECTION }, { $"{nameof(PCS_KEYVAULT_APPID)}", PCS_KEYVAULT_APPID }, { $"{nameof(PCS_KEYVAULT_SECRET)}", PCS_KEYVAULT_SECRET }, // Application Insights { $"{nameof(PCS_APPINSIGHTS_INSTRUMENTATIONKEY)}", PCS_APPINSIGHTS_INSTRUMENTATIONKEY }, // Log Analytics Workspace { $"{nameof(PCS_WORKSPACE_ID)}", PCS_WORKSPACE_ID }, { $"{nameof(PCS_WORKSPACE_KEY)}", PCS_WORKSPACE_KEY }, // Service URLs { $"{nameof(PCS_SERVICE_URL)}", PCS_SERVICE_URL }, // Service URLs that will be consumed by microservices. { $"{nameof(PCS_TWIN_REGISTRY_URL)}", PCS_TWIN_REGISTRY_URL }, { $"{nameof(PCS_TWIN_SERVICE_URL)}", PCS_TWIN_SERVICE_URL }, { $"{nameof(PCS_HISTORY_SERVICE_URL)}", PCS_HISTORY_SERVICE_URL }, { $"{nameof(PCS_VAULT_SERVICE_URL)}", PCS_VAULT_SERVICE_URL }, { $"{nameof(PCS_PUBLISHER_SERVICE_URL)}", PCS_PUBLISHER_SERVICE_URL }, { $"{nameof(PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL)}", PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL }, { $"{nameof(PCS_EVENTS_SERVICE_URL)}", PCS_EVENTS_SERVICE_URL }, // SignalR { $"{nameof(PCS_SIGNALR_CONNSTRING)}", PCS_SIGNALR_CONNSTRING }, { $"{nameof(PCS_SIGNALR_MODE)}", PCS_SIGNALR_MODE }, // Authentication { $"{nameof(PCS_AUTH_REQUIRED)}", PCS_AUTH_REQUIRED }, { $"{nameof(PCS_AUTH_TENANT)}", PCS_AUTH_TENANT }, { $"{nameof(PCS_AUTH_INSTANCE)}", PCS_AUTH_INSTANCE }, { $"{nameof(PCS_AUTH_ISSUER)}", PCS_AUTH_ISSUER }, { $"{nameof(PCS_AUTH_HTTPSREDIRECTPORT)}", PCS_AUTH_HTTPSREDIRECTPORT }, { $"{nameof(PCS_AUTH_AUDIENCE)}", PCS_AUTH_AUDIENCE }, { $"{nameof(PCS_AUTH_CLIENT_APPID)}", PCS_AUTH_CLIENT_APPID }, { $"{nameof(PCS_AUTH_CLIENT_SECRET)}", PCS_AUTH_CLIENT_SECRET }, { $"{nameof(PCS_AUTH_SERVICE_APPID)}", PCS_AUTH_SERVICE_APPID }, { $"{nameof(PCS_AUTH_SERVICE_SECRET)}", PCS_AUTH_SERVICE_SECRET }, // CORS Whitelist { $"{nameof(PCS_CORS_WHITELIST)}", PCS_CORS_WHITELIST }, // Service URL path bases { $"{nameof(PCS_TWIN_REGISTRY_SERVICE_PATH_BASE)}", PCS_TWIN_REGISTRY_SERVICE_PATH_BASE }, { $"{nameof(PCS_TWIN_SERVICE_PATH_BASE)}", PCS_TWIN_SERVICE_PATH_BASE }, { $"{nameof(PCS_HISTORY_SERVICE_PATH_BASE)}", PCS_HISTORY_SERVICE_PATH_BASE }, { $"{nameof(PCS_GATEWAY_SERVICE_PATH_BASE)}", PCS_GATEWAY_SERVICE_PATH_BASE }, { $"{nameof(PCS_VAULT_SERVICE_PATH_BASE)}", PCS_VAULT_SERVICE_PATH_BASE }, { $"{nameof(PCS_PUBLISHER_SERVICE_PATH_BASE)}", PCS_PUBLISHER_SERVICE_PATH_BASE }, { $"{nameof(PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE)}", PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE }, { $"{nameof(PCS_EVENTS_SERVICE_PATH_BASE)}", PCS_EVENTS_SERVICE_PATH_BASE }, { $"{nameof(PCS_FRONTEND_APP_SERVICE_PATH_BASE)}", PCS_FRONTEND_APP_SERVICE_PATH_BASE }, // AspNetCore { $"{nameof(ASPNETCORE_FORWARDEDHEADERS_ENABLED)}", ASPNETCORE_FORWARDEDHEADERS_ENABLED }, { $"{nameof(ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT)}", ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT }, // OpenAPI { $"{nameof(PCS_OPENAPI_SERVER_HOST)}", PCS_OPENAPI_SERVER_HOST }, }; }
public IIoTEnvironment( AzureEnvironment azureEnvironment, Guid tenantId, IotHubDescription iotHub, string iotHubOwnerConnectionString, string iotHubOnboardingConsumerGroupName, int iotHubEventHubEndpointsPartitionsCount, string cosmosDBAccountConnectionString, StorageAccountInner storageAccount, StorageAccountKey storageAccountKey, EventhubInner eventHub, string eventHubConnectionString, string serviceBusConnectionString, string signalRConnectionString, VaultInner keyVault, Workspace operationalInsightsWorkspace, ApplicationInsightsComponent applicationInsightsComponent, SiteInner webSite, Application serviceApplication, Application clientApplication ) { _HUB_CS = iotHubOwnerConnectionString; PCS_IOTHUB_CONNSTRING = iotHubOwnerConnectionString; // duplicate PCS_STORAGEADAPTER_DOCUMENTDB_CONNSTRING = cosmosDBAccountConnectionString; PCS_TELEMETRY_DOCUMENTDB_CONNSTRING = cosmosDBAccountConnectionString; // duplicate PCS_TELEMETRYAGENT_DOCUMENTDB_CONNSTRING = cosmosDBAccountConnectionString; // duplicate PCS_IOTHUBREACT_ACCESS_CONNSTRING = iotHubOwnerConnectionString; // duplicate PCS_IOTHUBREACT_HUB_NAME = iotHub.Name; PCS_IOTHUBREACT_HUB_ENDPOINT = iotHub.Properties.EventHubEndpoints["events"].Endpoint; PCS_IOTHUBREACT_HUB_CONSUMERGROUP = iotHubOnboardingConsumerGroupName; PCS_IOTHUBREACT_HUB_PARTITIONS = $"{iotHubEventHubEndpointsPartitionsCount}"; PCS_IOTHUBREACT_AZUREBLOB_ACCOUNT = storageAccount.Name; PCS_IOTHUBREACT_AZUREBLOB_KEY = storageAccountKey.Value; PCS_IOTHUBREACT_AZUREBLOB_ENDPOINT_SUFFIX = azureEnvironment.StorageEndpointSuffix; PCS_ASA_DATA_AZUREBLOB_ACCOUNT = PCS_IOTHUBREACT_AZUREBLOB_ACCOUNT; // duplicate PCS_ASA_DATA_AZUREBLOB_KEY = PCS_IOTHUBREACT_AZUREBLOB_KEY; // duplicate PCS_ASA_DATA_AZUREBLOB_ENDPOINT_SUFFIX = PCS_IOTHUBREACT_AZUREBLOB_ENDPOINT_SUFFIX; // duplicate PCS_EVENTHUB_CONNSTRING = eventHubConnectionString; PCS_EVENTHUB_NAME = eventHub.Name; PCS_SERVICEBUS_CONNSTRING = serviceBusConnectionString; PCS_KEYVAULT_URL = keyVault.Properties.VaultUri; PCS_WORKSPACE_NAME = operationalInsightsWorkspace.Name; PCS_APPINSIGHTS_NAME = applicationInsightsComponent.Name; PCS_APPINSIGHTS_INSTRUMENTATIONKEY = applicationInsightsComponent.InstrumentationKey; PCS_SERVICE_URL = $"https://{webSite.HostNames[0]}"; PCS_SIGNALR_CONNSTRING = signalRConnectionString; PCS_AUTH_HTTPSREDIRECTPORT = "0"; PCS_AUTH_REQUIRED = "true"; PCS_AUTH_AUDIENCE = serviceApplication.IdentifierUris.First(); PCS_AUTH_ISSUER = $"https://sts.windows.net/{tenantId.ToString()}/"; PCS_WEBUI_AUTH_AAD_APPID = clientApplication.AppId; PCS_WEBUI_AUTH_AAD_AUTHORITY = azureEnvironment.AuthenticationEndpoint; PCS_WEBUI_AUTH_AAD_TENANT = tenantId.ToString(); PCS_CORS_WHITELIST = "*"; REACT_APP_PCS_AUTH_REQUIRED = PCS_AUTH_REQUIRED; // duplicate REACT_APP_PCS_AUTH_AUDIENCE = PCS_AUTH_AUDIENCE; // duplicate REACT_APP_PCS_AUTH_ISSUER = PCS_AUTH_ISSUER; // duplicate REACT_APP_PCS_WEBUI_AUTH_AAD_APPID = PCS_WEBUI_AUTH_AAD_APPID; // duplicate REACT_APP_PCS_WEBUI_AUTH_AAD_AUTHORITY = PCS_WEBUI_AUTH_AAD_AUTHORITY; // duplicate REACT_APP_PCS_WEBUI_AUTH_AAD_TENANT = PCS_WEBUI_AUTH_AAD_TENANT; // duplicate Dict = new Dictionary <string, string> { { "_HUB_CS", _HUB_CS }, { "PCS_IOTHUB_CONNSTRING", PCS_IOTHUB_CONNSTRING }, { "PCS_STORAGEADAPTER_DOCUMENTDB_CONNSTRING", PCS_STORAGEADAPTER_DOCUMENTDB_CONNSTRING }, { "PCS_TELEMETRY_DOCUMENTDB_CONNSTRING", PCS_TELEMETRY_DOCUMENTDB_CONNSTRING }, { "PCS_TELEMETRYAGENT_DOCUMENTDB_CONNSTRING", PCS_TELEMETRYAGENT_DOCUMENTDB_CONNSTRING }, { "PCS_IOTHUBREACT_ACCESS_CONNSTRING", PCS_IOTHUBREACT_ACCESS_CONNSTRING }, { "PCS_IOTHUBREACT_HUB_NAME", PCS_IOTHUBREACT_HUB_NAME }, { "PCS_IOTHUBREACT_HUB_ENDPOINT", PCS_IOTHUBREACT_HUB_ENDPOINT }, { "PCS_IOTHUBREACT_HUB_CONSUMERGROUP", PCS_IOTHUBREACT_HUB_CONSUMERGROUP }, { "PCS_IOTHUBREACT_HUB_PARTITIONS", PCS_IOTHUBREACT_HUB_PARTITIONS }, { "PCS_IOTHUBREACT_AZUREBLOB_ACCOUNT", PCS_IOTHUBREACT_AZUREBLOB_ACCOUNT }, { "PCS_IOTHUBREACT_AZUREBLOB_KEY", PCS_IOTHUBREACT_AZUREBLOB_KEY }, { "PCS_IOTHUBREACT_AZUREBLOB_ENDPOINT_SUFFIX", PCS_IOTHUBREACT_AZUREBLOB_ENDPOINT_SUFFIX }, { "PCS_ASA_DATA_AZUREBLOB_ACCOUNT", PCS_ASA_DATA_AZUREBLOB_ACCOUNT }, { "PCS_ASA_DATA_AZUREBLOB_KEY", PCS_ASA_DATA_AZUREBLOB_KEY }, { "PCS_ASA_DATA_AZUREBLOB_ENDPOINT_SUFFIX", PCS_ASA_DATA_AZUREBLOB_ENDPOINT_SUFFIX }, { "PCS_EVENTHUB_CONNSTRING", PCS_EVENTHUB_CONNSTRING }, { "PCS_EVENTHUB_NAME", PCS_EVENTHUB_NAME }, { "PCS_SERVICEBUS_CONNSTRING", PCS_SERVICEBUS_CONNSTRING }, { "PCS_KEYVAULT_URL", PCS_KEYVAULT_URL }, { "PCS_WORKSPACE_NAME", PCS_WORKSPACE_NAME }, { "PCS_APPINSIGHTS_NAME", PCS_APPINSIGHTS_NAME }, { "PCS_APPINSIGHTS_INSTRUMENTATIONKEY", PCS_APPINSIGHTS_INSTRUMENTATIONKEY }, { "PCS_SERVICE_URL", PCS_SERVICE_URL }, { "PCS_SIGNALR_CONNSTRING", PCS_SIGNALR_CONNSTRING }, { "PCS_AUTH_HTTPSREDIRECTPORT", PCS_AUTH_HTTPSREDIRECTPORT }, { "PCS_AUTH_REQUIRED", PCS_AUTH_REQUIRED }, { "PCS_AUTH_AUDIENCE", PCS_AUTH_AUDIENCE }, { "PCS_AUTH_ISSUER", PCS_AUTH_ISSUER }, { "PCS_WEBUI_AUTH_AAD_APPID", PCS_WEBUI_AUTH_AAD_APPID }, { "PCS_WEBUI_AUTH_AAD_AUTHORITY", PCS_WEBUI_AUTH_AAD_AUTHORITY }, { "PCS_WEBUI_AUTH_AAD_TENANT", PCS_WEBUI_AUTH_AAD_TENANT }, { "PCS_CORS_WHITELIST", PCS_CORS_WHITELIST }, { "REACT_APP_PCS_AUTH_REQUIRED", REACT_APP_PCS_AUTH_REQUIRED }, { "REACT_APP_PCS_AUTH_AUDIENCE", REACT_APP_PCS_AUTH_AUDIENCE }, { "REACT_APP_PCS_AUTH_ISSUER", REACT_APP_PCS_AUTH_ISSUER }, { "REACT_APP_PCS_WEBUI_AUTH_AAD_APPID", REACT_APP_PCS_WEBUI_AUTH_AAD_APPID }, { "REACT_APP_PCS_WEBUI_AUTH_AAD_AUTHORITY", REACT_APP_PCS_WEBUI_AUTH_AAD_AUTHORITY }, { "REACT_APP_PCS_WEBUI_AUTH_AAD_TENANT", REACT_APP_PCS_WEBUI_AUTH_AAD_TENANT } }; }
public IIoTEnvironment( AzureEnvironment azureEnvironment, Guid tenantId, // IoT Hub IotHubDescription iotHub, string iotHubOwnerConnectionString, string iotHubEventHubEventsEndpointName, EventHubConsumerGroupInfo iotHubEventHubEventsConsumerGroup, EventHubConsumerGroupInfo iotHubEventHubTelemetryConsumerGroup, // Cosmos DB string cosmosDBAccountConnectionString, // Storage Account string storageAccountConectionString, string storageAccountContainerDataprotection, // ADLS Gen2 Storage Account string adlsConectionString, string adlsContainerCdm, string adlsContainerCdmRootFolder, // Event Hub Namespace EventhubInner eventHub, string eventHubConnectionString, ConsumerGroupInner telemetryCdm, ConsumerGroupInner telemetryUx, // Service Bus string serviceBusConnectionString, // SignalR string signalRConnectionString, // Key Vault VaultInner keyVault, string dataprotectionKeyName, // Application Insights ApplicationInsightsComponent applicationInsightsComponent, string serviceURL, Application serviceApplication, string serviceApplicationSecret, Application clientApplication, string clientApplicationSecret ) { // IoT Hub PCS_IOTHUB_CONNSTRING = iotHubOwnerConnectionString; PCS_IOTHUB_EVENTHUBENDPOINT = iotHub.Properties.EventHubEndpoints[iotHubEventHubEventsEndpointName].Endpoint; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS = iotHubEventHubEventsConsumerGroup.Name; PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY = iotHubEventHubTelemetryConsumerGroup.Name; // Cosmos DB PCS_COSMOSDB_CONNSTRING = cosmosDBAccountConnectionString; // Storage Account PCS_STORAGE_CONNSTRING = storageAccountConectionString; PCS_STORAGE_CONTAINER_DATAPROTECTION = storageAccountContainerDataprotection; // ADLS Gen2 Storage Account PCS_ADLSG2_CONNSTRING = adlsConectionString; PCS_ADLSG2_CONTAINER_CDM = adlsContainerCdm; PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER = adlsContainerCdmRootFolder; // Event Hub Namespace PCS_EVENTHUB_CONNSTRING = eventHubConnectionString; PCS_EVENTHUB_NAME = eventHub.Name; PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM = telemetryCdm.Name; PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX = telemetryUx.Name; // Service Bus PCS_SERVICEBUS_CONNSTRING = serviceBusConnectionString; // Key Vault PCS_KEYVAULT_URL = keyVault.Properties.VaultUri; PCS_KEYVAULT_KEY_DATAPROTECTION = dataprotectionKeyName; PCS_KEYVAULT_APPID = serviceApplication.AppId; PCS_KEYVAULT_SECRET = serviceApplicationSecret; // Application Insights PCS_APPINSIGHTS_INSTRUMENTATIONKEY = applicationInsightsComponent.InstrumentationKey; // Service URLs PCS_SERVICE_URL = serviceURL; var iiotNamespace = "industrial-iot"; // AKS internal service URLs PCS_TWIN_REGISTRY_URL_INTERNAL = $"http://{"registry-service"}.{iiotNamespace}:{9042}"; PCS_TWIN_SERVICE_URL_INTERNAL = $"http://{"twin-service"}.{iiotNamespace}:{9041}"; PCS_HISTORY_SERVICE_URL_INTERNAL = $"http://{"history-service"}.{iiotNamespace}:{9043}"; PCS_VAULT_SERVICE_URL_INTERNAL = $"http://{"vault-service"}.{iiotNamespace}:{9044}"; PCS_PUBLISHER_SERVICE_URL_INTERNAL = $"http://{"publisher-service"}.{iiotNamespace}:{9045}"; PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL_INTERNAL = $"http://{"edge-jobs-service"}.{iiotNamespace}:{9051}"; PCS_EVENTS_SERVICE_URL_INTERNAL = $"http://{"events-service"}.{iiotNamespace}:{9050}"; // Externally accessible service URLs serviceURL = serviceURL.TrimEnd('/'); PCS_TWIN_REGISTRY_URL_EXTERNAL = $"{serviceURL}/registry/"; PCS_TWIN_SERVICE_URL_EXTERNAL = $"{serviceURL}/twin/"; PCS_HISTORY_SERVICE_URL_EXTERNAL = $"{serviceURL}/history/"; PCS_VAULT_SERVICE_URL_EXTERNAL = $"{serviceURL}/vault/"; PCS_PUBLISHER_SERVICE_URL_EXTERNAL = $"{serviceURL}/publisher/"; PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL_EXTERNAL = $"{serviceURL}/edge/publisher/"; PCS_EVENTS_SERVICE_URL_EXTERNAL = $"{serviceURL}/events/"; // Service URLs that will be consumed by microservices. PCS_TWIN_REGISTRY_URL = PCS_TWIN_REGISTRY_URL_INTERNAL; PCS_TWIN_SERVICE_URL = PCS_TWIN_SERVICE_URL_INTERNAL; PCS_HISTORY_SERVICE_URL = PCS_HISTORY_SERVICE_URL_INTERNAL; PCS_VAULT_SERVICE_URL = PCS_VAULT_SERVICE_URL_INTERNAL; PCS_PUBLISHER_SERVICE_URL = PCS_PUBLISHER_SERVICE_URL_INTERNAL; // NOTE: PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL should be externally accessible URL. PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL = PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL_EXTERNAL; PCS_EVENTS_SERVICE_URL = PCS_EVENTS_SERVICE_URL_INTERNAL; // SignalR PCS_SIGNALR_CONNSTRING = signalRConnectionString; // Authentication PCS_AUTH_REQUIRED = $"{true}"; PCS_AUTH_TENANT = $"{tenantId}"; // ToDo: Check value of PCS_AUTH_INSTANCE. //PCS_AUTH_INSTANCE = "https://login.microsoftonline.com/"; PCS_AUTH_INSTANCE = azureEnvironment.AuthenticationEndpoint; PCS_AUTH_ISSUER = $"https://sts.windows.net/{tenantId}/"; PCS_AUTH_HTTPSREDIRECTPORT = $"{0}"; PCS_AUTH_AUDIENCE = serviceApplication.IdentifierUris.First(); PCS_AUTH_CLIENT_APPID = clientApplication.AppId; PCS_AUTH_CLIENT_SECRET = clientApplicationSecret; PCS_AUTH_SERVICE_APPID = serviceApplication.AppId; PCS_AUTH_SERVICE_SECRET = serviceApplicationSecret; // CORS Whitelist PCS_CORS_WHITELIST = "*"; // Service URL path bases PCS_TWIN_REGISTRY_SERVICE_PATH_BASE = "/registry"; PCS_TWIN_SERVICE_PATH_BASE = "/twin"; PCS_HISTORY_SERVICE_PATH_BASE = "/history"; PCS_GATEWAY_SERVICE_PATH_BASE = "/ua"; PCS_VAULT_SERVICE_PATH_BASE = "/vault"; PCS_PUBLISHER_SERVICE_PATH_BASE = "/publisher"; PCS_EVENTS_SERVICE_PATH_BASE = "/events"; PCS_FRONTEND_APP_SERVICE_PATH_BASE = "/frontend"; PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE = "/edge/publisher"; // AspNetCore ASPNETCORE_FORWARDEDHEADERS_ENABLED = $"{true}"; ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT = $"{1}"; // OpenAPI PCS_OPENAPI_SERVER_HOST = ""; Dict = new Dictionary <string, string> { // IoT Hub { $"{nameof(PCS_IOTHUB_CONNSTRING)}", PCS_IOTHUB_CONNSTRING }, { $"{nameof(PCS_IOTHUB_EVENTHUBENDPOINT)}", PCS_IOTHUB_EVENTHUBENDPOINT }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_EVENTS }, { $"{nameof(PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY)}", PCS_IOTHUB_EVENTHUB_CONSUMER_GROUP_TELEMETRY }, // Cosmos DB { $"{nameof(PCS_COSMOSDB_CONNSTRING)}", PCS_COSMOSDB_CONNSTRING }, // Storage Account { $"{nameof(PCS_STORAGE_CONNSTRING)}", PCS_STORAGE_CONNSTRING }, { $"{nameof(PCS_STORAGE_CONTAINER_DATAPROTECTION)}", PCS_STORAGE_CONTAINER_DATAPROTECTION }, // ADLS Gen2 Storage Account { $"{nameof(PCS_ADLSG2_CONNSTRING)}", PCS_ADLSG2_CONNSTRING }, { $"{nameof(PCS_ADLSG2_CONTAINER_CDM)}", PCS_ADLSG2_CONTAINER_CDM }, { $"{nameof(PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER)}", PCS_ADLSG2_CONTAINER_CDM_ROOTFOLDER }, // Event Hub Namespace { $"{nameof(PCS_EVENTHUB_CONNSTRING)}", PCS_EVENTHUB_CONNSTRING }, { $"{nameof(PCS_EVENTHUB_NAME)}", PCS_EVENTHUB_NAME }, { $"{nameof(PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM)}", PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_CDM }, { $"{nameof(PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX)}", PCS_EVENTHUB_CONSUMERGROUP_TELEMETRY_UX }, // Service Bus { $"{nameof(PCS_SERVICEBUS_CONNSTRING)}", PCS_SERVICEBUS_CONNSTRING }, // Key Vault { $"{nameof(PCS_KEYVAULT_URL)}", PCS_KEYVAULT_URL }, { $"{nameof(PCS_KEYVAULT_KEY_DATAPROTECTION)}", PCS_KEYVAULT_KEY_DATAPROTECTION }, { $"{nameof(PCS_KEYVAULT_APPID)}", PCS_KEYVAULT_APPID }, { $"{nameof(PCS_KEYVAULT_SECRET)}", PCS_KEYVAULT_SECRET }, // Application Insights { $"{nameof(PCS_APPINSIGHTS_INSTRUMENTATIONKEY)}", PCS_APPINSIGHTS_INSTRUMENTATIONKEY }, // Service URLs { $"{nameof(PCS_SERVICE_URL)}", PCS_SERVICE_URL }, { $"{nameof(PCS_TWIN_REGISTRY_URL)}", PCS_TWIN_REGISTRY_URL }, { $"{nameof(PCS_TWIN_SERVICE_URL)}", PCS_TWIN_SERVICE_URL }, { $"{nameof(PCS_HISTORY_SERVICE_URL)}", PCS_HISTORY_SERVICE_URL }, { $"{nameof(PCS_VAULT_SERVICE_URL)}", PCS_VAULT_SERVICE_URL }, { $"{nameof(PCS_PUBLISHER_SERVICE_URL)}", PCS_PUBLISHER_SERVICE_URL }, { $"{nameof(PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL)}", PCS_PUBLISHER_ORCHESTRATOR_SERVICE_URL }, { $"{nameof(PCS_EVENTS_SERVICE_URL)}", PCS_EVENTS_SERVICE_URL }, // SignalR { $"{nameof(PCS_SIGNALR_CONNSTRING)}", PCS_SIGNALR_CONNSTRING }, // Authentication { $"{nameof(PCS_AUTH_REQUIRED)}", PCS_AUTH_REQUIRED }, { $"{nameof(PCS_AUTH_TENANT)}", PCS_AUTH_TENANT }, { $"{nameof(PCS_AUTH_INSTANCE)}", PCS_AUTH_INSTANCE }, { $"{nameof(PCS_AUTH_ISSUER)}", PCS_AUTH_ISSUER }, { $"{nameof(PCS_AUTH_HTTPSREDIRECTPORT)}", PCS_AUTH_HTTPSREDIRECTPORT }, { $"{nameof(PCS_AUTH_AUDIENCE)}", PCS_AUTH_AUDIENCE }, { $"{nameof(PCS_AUTH_CLIENT_APPID)}", PCS_AUTH_CLIENT_APPID }, { $"{nameof(PCS_AUTH_CLIENT_SECRET)}", PCS_AUTH_CLIENT_SECRET }, { $"{nameof(PCS_AUTH_SERVICE_APPID)}", PCS_AUTH_SERVICE_APPID }, { $"{nameof(PCS_AUTH_SERVICE_SECRET)}", PCS_AUTH_SERVICE_SECRET }, // CORS Whitelist { $"{nameof(PCS_CORS_WHITELIST)}", PCS_CORS_WHITELIST }, // Service URL path bases { $"{nameof(PCS_TWIN_REGISTRY_SERVICE_PATH_BASE)}", PCS_TWIN_REGISTRY_SERVICE_PATH_BASE }, { $"{nameof(PCS_TWIN_SERVICE_PATH_BASE)}", PCS_TWIN_SERVICE_PATH_BASE }, { $"{nameof(PCS_HISTORY_SERVICE_PATH_BASE)}", PCS_HISTORY_SERVICE_PATH_BASE }, { $"{nameof(PCS_GATEWAY_SERVICE_PATH_BASE)}", PCS_GATEWAY_SERVICE_PATH_BASE }, { $"{nameof(PCS_VAULT_SERVICE_PATH_BASE)}", PCS_VAULT_SERVICE_PATH_BASE }, { $"{nameof(PCS_PUBLISHER_SERVICE_PATH_BASE)}", PCS_PUBLISHER_SERVICE_PATH_BASE }, { $"{nameof(PCS_EVENTS_SERVICE_PATH_BASE)}", PCS_EVENTS_SERVICE_PATH_BASE }, { $"{nameof(PCS_FRONTEND_APP_SERVICE_PATH_BASE)}", PCS_FRONTEND_APP_SERVICE_PATH_BASE }, { $"{nameof(PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE)}", PCS_PUBLISHER_ORCHESTRATOR_SERVICE_PATH_BASE }, // AspNetCore { $"{nameof(ASPNETCORE_FORWARDEDHEADERS_ENABLED)}", ASPNETCORE_FORWARDEDHEADERS_ENABLED }, { $"{nameof(ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT)}", ASPNETCORE_FORWARDEDHEADERS_FORWARDLIMIT }, // OpenAPI { $"{nameof(PCS_OPENAPI_SERVER_HOST)}", PCS_OPENAPI_SERVER_HOST }, }; }