Пример #1
0
        /// <inheritdoc />
        public virtual void ConfigureServices(IServiceCollection services)
        {
            if (Settings == null)
            {
                var provider = services.BuildServiceProvider();
                Settings = provider.GetService <DataXSettings>();

                // Let's look for the default settings
                if (Settings == null)
                {
                    Settings = provider.GetService <IConfiguration>()?.GetSection(DataXSettingsConstants.ServiceEnvironment).Get <DataXSettings>();

                    if (Settings != null)
                    {
                        services.TryAddSingleton(Settings);
                    }
                }
            }
            else
            {
                services.TryAddSingleton(Settings);
            }

            services
            .AddDataXAuthorization(DataXDefaultGatewayPolicy.ConfigurePolicy)
            .AddMvc(options => options.EnableEndpointRouting = false).AddNewtonsoftJson();
        }
Пример #2
0
        public static void ConfigureServices(IServiceCollection services, DataXSettings settings)
        {
            services
            .AddSingleton <ITelemetryInitializer, OperationParentIdTelemetryInitializer>()
            .AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions()
            {
                EnableAdaptiveSampling = false,
                EnableDebugLogger      = false,
                InstrumentationKey     = GetInstrumentationKey(settings)
            })
            .AddSingleton <ITelemetryInitializer, OperationParentIdTelemetryInitializer>()
            .AddLogging(logging =>
            {
                try
                {
                    // In order to log ILogger logs
                    logging.AddApplicationInsights();
                    // Optional: Apply filters to configure LogLevel Information or above is sent to
                    // ApplicationInsights for all categories.
                    logging.AddFilter <ApplicationInsightsLoggerProvider>("", LogLevel.Information);

                    // Additional filtering For category starting in "Microsoft",
                    // only Warning or above will be sent to Application Insights.
                    logging.AddFilter <ApplicationInsightsLoggerProvider>("Microsoft", LogLevel.Warning);
                }
                catch (Exception e)
                {
                    ServiceEventSource.Current.Message($"ApplicationInsights Error: {e.Message}");
                }
            });
        }
Пример #3
0
        private static string GetInstrumentationKey(DataXSettings settings)
        {
            var secretName = settings?.AppInsightsIntrumentationKey;
            var vaultName  = settings.ServiceKeyVaultName;

            return(string.IsNullOrWhiteSpace(secretName) || string.IsNullOrWhiteSpace(vaultName)
                ? Guid.Empty.ToString()
                : KeyVault.KeyVault.GetSecretFromKeyvault(settings.ServiceKeyVaultName, settings.AppInsightsIntrumentationKey));
        }
 public DataXPolicyBuilder(
     AuthorizationOptions options,
     DataXSettings settings,
     Action <AuthorizationPolicyBuilder> configurePolicy)
 {
     _options         = options;
     _settings        = settings;
     _configurePolicy = configurePolicy;
 }
        /// <summary>
        /// Adds DataX default authentication to the given service collection.
        /// </summary>
        /// <param name="services">The service collection to add to</param>
        /// <param name="configurePolicy">An action to configure supplement policy configuration</param>
        /// <returns>The modified service collection</returns>
        public static IServiceCollection AddDataXAuthorization(this IServiceCollection services, Action <AuthorizationPolicyBuilder> configurePolicy)
        {
            var settings = services.BuildServiceProvider().GetService <DataXSettings>();

            // EnableOneBox scenario as it requires the least configuration and we can't assume cloud connection settings
            if (settings == null)
            {
                settings = new DataXSettings()
                {
                    EnableOneBox        = true,
                    LocalRoot           = "",
                    MetricsHttpEndpoint = "http://localhost:2020/",
                    SparkHome           = "",
                };
            }

            return(services.AddAuthorization(options =>
            {
                new DataXPolicyBuilder(options, settings, configurePolicy)
                .AddPolicy <DataXWriterRequirement>(DataXAuthConstants.WriterPolicyName)
                .AddPolicy <DataXReaderRequirement>(DataXAuthConstants.ReaderPolicyName);
            }));
        }
 /// <inheritdoc />
 protected override bool IsAuthorized(AuthorizationHandlerContext context, DataXSettings settings)
 {
     return(base.IsAuthorized(context, settings) || context.User.IsInRole(RolesCheck.ReaderRoleName));
 }
 public DataXReaderRequirement(DataXSettings settings)
     : base(settings)
 {
 }
Пример #8
0
 public FlowLiveDataServiceStartup(DataXSettings settings)
     : base(settings)
 {
 }
 /// <inheritdoc />
 protected override bool IsAuthorized(AuthorizationHandlerContext context, DataXSettings settings)
 {
     // If OneBox, no auth. If in SF, no auth (handled in Gateway). True in both scenarios, so returning true.
     return(true);
 }
Пример #10
0
 /// <summary>
 /// Given the auth context and settings, determines if a request is authorized.
 /// </summary>
 /// <param name="context">Provided AuthorizationHandlerContext</param>
 /// <param name="settings">Provided DataXSettings</param>
 /// <returns>True if determined to be authorized, else false.</returns>
 protected abstract bool IsAuthorized(AuthorizationHandlerContext context, DataXSettings settings);
Пример #11
0
 public DataXAuthRequirement(DataXSettings settings)
 {
     Settings = settings;
 }
 public DataXWriterRequirement(DataXSettings settings)
     : base(settings)
 {
 }
Пример #13
0
 public FlowInteractiveQueryServiceStartup(DataXSettings settings)
     : base(settings)
 {
 }
Пример #14
0
 public FlowSchemaInferenceServiceStartup(DataXSettings settings)
     : base(settings)
 {
 }
 public DataXOneBoxRequirement(DataXSettings settings)
     : base(settings)
 {
 }
 public FlowManagementServiceStartup(DataXSettings settings)
     : base(settings)
 {
 }
 protected override bool IsAuthorized(AuthorizationHandlerContext context, DataXSettings settings)
 {
     return(settings.EnableOneBox);
 }
Пример #18
0
 public DataXServiceStartup(DataXSettings settings)
 {
     Settings = settings;
 }