Exemple #1
0
        public static void Main(string[] args)
        {
            Console.Title = "Dexterity Access Management API";
            var builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");

            Configuration = builder.Build();
            try
            {
                var settings = new KestrelConfiguration();
                Configuration.GetSection("KestrelOptions").Bind(settings);
                Console.WriteLine(settings.Cors.AllowedHeaders);
                Console.WriteLine(settings.Cors.AllowedMethods);
                Console.WriteLine(settings.Cors.AllowedOrigins);
                var host = new WebHostBuilder()
                           .UseKestrel(options =>
                {
                    if (settings.SslSettings != null)
                    {
                        options.Listen(IPAddress.Any, settings.Port, listenOptions =>
                        {
                            listenOptions.UseHttps(settings.SslSettings.CertificatePath, settings.SslSettings.CertificatePassword);
                        });
                    }
                    else
                    {
                        options.Listen(IPAddress.Any, settings.Port);
                    }
                })
                           .UseContentRoot(Directory.GetCurrentDirectory())
                           .UseIISIntegration()
                           .UseStartup <Startup>()
                           .Build();

                host.Run();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
        }
Exemple #2
0
        public Startup(IHostingEnvironment env)
        {
            // 读取配置
            var builder = new ConfigurationBuilder()
                          .SetBasePath(env.ContentRootPath)
                          .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                          .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                          .AddEnvironmentVariables();

            _configuration = builder.Build();

            // 生产模式, 且配置文件中有Kestrel节时监听https
            if (env.IsProduction())
            {
                var kestrelConfiguration = new KestrelConfiguration();
                _configuration.GetSection("Kestrel").Bind(kestrelConfiguration);
                if (!string.IsNullOrEmpty(kestrelConfiguration.ServerCertificatePath))
                {
                    _kestrelConfiguration = kestrelConfiguration;
                }
            }
        }
 private static void SetupKestrel(KestrelServerOptions options)
 {
     KestrelConfiguration.Configure(options, webHostBuilderContext.HostingEnvironment, webHostBuilderContext.Configuration, 52532);
 }
Exemple #4
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <FontaineContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SQLConnection")));
            services.Configure <JwtIssuerOptions>(options => Configuration.GetSection("JwtIssuerOptions").Bind(options));
            services.Configure <KestrelConfiguration>(options => Configuration.GetSection("KestrelOptions").Bind(options));
            services.Configure <PrintingConfig>(options => Configuration.GetSection("Printing").Bind(options));

            var sp = services.BuildServiceProvider();

            KestrelConfiguration kestrelConfig        = sp.GetService <IOptions <KestrelConfiguration> >().Value;
            JwtIssuerOptions     jwtAppSettingOptions = sp.GetService <IOptions <JwtIssuerOptions> >().Value;

            ThermalLabel.LicenseKey   = "TC6KYFLVC9VUP72M43LMGHGW592EP2W3Q8FF2BRMM3X9JFZHHYXQ";
            ThermalLabel.LicenseOwner = "Dash Computer Products-Ultimate Edition-OEM Developer License";

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options => {
                //options.TokenValidationParameters = new TokenValidationParameters
                //{
                //    ValidateIssuerSigningKey = true,
                //    IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII
                //        .GetBytes("Secure")),
                //    ValidateIssuer = false,
                //    ValidateAudience = false
                //};
                options.RequireHttpsMetadata     |= kestrelConfig.SslSettings != null;
                options.SaveToken                 = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer = true,
                    ValidIssuer    = jwtAppSettingOptions.Issuer,

                    ValidateAudience = true,
                    ValidAudience    = jwtAppSettingOptions.Audience,

                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey         = SigningKey,

                    RequireExpirationTime = true,
                    ValidateLifetime      = true,

                    ClockSkew = TimeSpan.Zero
                };
            });
            services.AddOptions();

            services.Configure <JwtIssuerOptions>(options =>
            {
                options.Issuer             = jwtAppSettingOptions.Issuer;
                options.Audience           = jwtAppSettingOptions.Audience;
                options.SigningCredentials = new SigningCredentials(SigningKey, SecurityAlgorithms.HmacSha256);
            });

            services.AddCors(options =>
            {
                if (kestrelConfig.Cors != null)
                {
                    options.AddPolicy("Allow", builder =>
                    {
                        builder
                        .AllowCredentials()
                        .WithHeaders(kestrelConfig.Cors.AllowedHeaders.Split(","))
                        .WithMethods(kestrelConfig.Cors.AllowedMethods.Split(","))
                        .WithOrigins(kestrelConfig.Cors.AllowedOrigins.Split(","))
                        .WithExposedHeaders("Location", "location");
                    });
                }
                else
                {
                    options.AddPolicy("Allow", builder =>
                    {
                        builder.AllowAnyOrigin()
                        .AllowAnyMethod()
                        .AllowAnyHeader()
                        .AllowCredentials()
                        .WithExposedHeaders("Location");
                    });
                }
            });

            services.AddAutoMapper();
            services.AddScoped <IAuthRepository, AuthRepository>();
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }
Exemple #5
0
 private void AddCorsHeaders(HttpContext context, KestrelConfiguration config)
 {
     context.Response.Headers.Add("Access-Control-Allow-Origin", config.Cors.AllowedOrigins);
     context.Response.Headers.Add("Access-Control-Allow-Headers", config.Cors.AllowedHeaders);
     context.Response.Headers.Add("Access-Control-Allow-Methods", config.Cors.AllowedMethods);
 }