Ejemplo n.º 1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <AppSettings>(Configuration.GetSection("AppSettings"));
            services.AddScoped <IAppSettings>(s => { return(s.GetService <IOptions <AppSettings> >().Value); });
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            ScopesConfiguration.Configuration(services);

            services.AddMvc();
        }
Ejemplo n.º 2
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <AppSettings>(Configuration.GetSection("AppSettings"));
            services.AddScoped <IAppSettings>(s => s.GetService <IOptions <AppSettings> >().Value);
            services.AddTransient <IEmailService, EmailService>();

            services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            ScopesConfiguration.Configuration(services);

            var signingConfigurations = new SigningConfigurations();

            services.AddSingleton <ISigningConfigurations>(signingConfigurations);

            var tokenConfigurations = new TokenConfigurations();

            new ConfigureFromConfigurationOptions <TokenConfigurations>(
                Configuration.GetSection("TokenConfigurations")).Configure(tokenConfigurations);
            services.AddSingleton <ITokenConfigurations>(tokenConfigurations);

            services.AddAuthentication(authOptions =>
            {
                authOptions.DefaultScheme             = JwtBearerDefaults.AuthenticationScheme;
                authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                authOptions.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(bearerOptions =>
            {
                var paramsValidation = bearerOptions.TokenValidationParameters;

                paramsValidation.IssuerSigningKey = signingConfigurations.Key;
                paramsValidation.ValidAudience    = tokenConfigurations.Audience;
                paramsValidation.ValidIssuer      = tokenConfigurations.Issuer;
                paramsValidation.ClockSkew        = TimeSpan.Zero;

                paramsValidation.ValidateIssuer           = true;
                paramsValidation.ValidateAudience         = true;
                paramsValidation.ValidateLifetime         = true;
                paramsValidation.ValidateIssuerSigningKey = true;

                bearerOptions.SaveToken = true;
            });

            services.AddAuthorization(auth =>
            {
                auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder()
                               .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme)
                               .RequireAuthenticatedUser().Build());
            });

            services.AddCors(c => c.AddPolicy("AllowSpecificOrigin",
                                              builder =>
            {
                builder.WithOrigins("*")
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowAnyOrigin()
                .AllowCredentials();
            }));

            services.AddMvc();

            services.AddRouting();
        }