Example #1
0
        public override void ConfigureServicesCore(IServiceCollection services)
        {
            // Connection Cryptography Compliance: All connections must be utilizing TLS 1.2
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "Cloud Born API", Version = "v1"
                });
            });

            services.AddMvc(options =>
            {
                options.Filters.Add(new ErrorHandlingFilter());
                options.Filters.Add(new OperationLoggingFilter(ServiceComponent.CloudBornWebService));
                options.AllowValidatingTopLevelNodes = true;
            });

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
                          TokenValidation.CreateAuthenticationOptionsForMultiTenant(options, this.configuration.TokenValidationSettings));

            services.AddAuthorization(options =>
            {
                options.AddPolicy(AuthorizationPolicyConstants.OnlyTestApp, policy => policy.RequireClaim(
                                      "appid",
                                      this.configuration.AuthorizedResources.TestTrustedAppId));
            });

            // Add Gzip compression to our responses
            services.Configure <GzipCompressionProviderOptions>(options =>
            {
                options.Level = CompressionLevel.Optimal;
            });

            services.AddResponseCompression(options =>
            {
                options.Providers.Add <GzipCompressionProvider>();
            });

            services.AddCors(options =>
            {
                options.AddPolicy(
                    CorsPolicyName,
                    policy =>
                {
                    // Allow origins to match a configured wildcarded domains
                    policy
                    .SetIsOriginAllowedToAllowWildcardSubdomains()
                    .AllowAnyMethod()
                    .WithHeaders("authorization", "accept", "content-type", "origin");
                });
            });
        }