Web Api .NET4.7: защита XSRF - PullRequest
       10

Web Api .NET4.7: защита XSRF

0 голосов
/ 07 ноября 2018

Я пытаюсь внедрить систему защиты от подделки, но не могу понять.

Большинство примеров, которые я вижу в сети, относятся к MVC или .NET Core.

Мой проект представляет собой простой WebApi с таргетингом 4.7 и используется приложением Angular 5. Я использую Owin для конфигурации запуска:

using System.Configuration;
using BEL.Services.API.Infrastructure.Bootstrap;
using BEL.Services.API.Infrastructure.Bootstrap.Config;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(Startup), "Configuration")]
namespace BEL.Services.API.Infrastructure.Bootstrap
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            AutofacConfig.ConfigureAutofac(app);
            WebApiConfig.ConfigureWebApi(app);
            MapperConfig.ConfigureAutoMapper(app);
            MigrationConfig.ConfigureMigrations(app);
        }
    }
}

Я почти уверен, что волшебство должно произойти в методе ConfigureWebApi:

namespace BEL.Services.API.Infrastructure.Bootstrap.Config
{
    using System.Configuration;
    using System.Web.Http;
    using System.Web.Http.Cors;
    using System.Web.Http.ExceptionHandling;
    using BEL.Services.API.Infrastructure.ErrorHandling;
    using BEL.Services.API.Infrastructure.Serialization;
    using Microsoft.Owin.Extensions;
    using Owin;
    using Swashbuckle.Application;

    internal static class WebApiConfig
    {
        internal static void ConfigureWebApi(IAppBuilder app)
        {
            var config = new HttpConfiguration();

            //// Enable Attribute based routing
            config.MapHttpAttributeRoutes();

            config.Services.Add(typeof(IExceptionLogger), new UnhandledExceptionLogger());

            // Configure JSON.NET
            config.Formatters.XmlFormatter.UseXmlSerializer = true;
            config.Formatters.JsonFormatter.SerializerSettings = JsonHelper.DefaultJsonSerializerSettings;

            var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true };
            config.EnableCors(cors);

            config.MessageHandlers.Add(new CorsPostHandler());

            app.UseAutofacWebApi(config);

            app.Map("", inner =>
            {
                // Configure Web API
                inner.UseWebApi(config);

                // Needed to fix some IIS issues
                inner.UseStageMarker(PipelineStage.MapHandler);
            });
        }
    }
}

Любой пример или помощь будут полезны

...