public void GetCorsPolicyAsync_NoMatchingPaths_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = CorsPolicy.AllowAll;

            var subject = new CorsPolicyProvider(policy, new string[] { "/bar", "/baz", "/quux" });

            var cp = subject.GetCorsPolicyAsync(Request(origin, "/bad")).Result;

            Assert.IsNull(cp);
        }
        public void GetCorsPolicyAsync_CallbackAllowOriginButNoOriginRequested_DoesNotAllowOrigin()
        {
            var policy = new CorsPolicy();

            policy.PolicyCallback = o => Task.FromResult(true);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request()).Result;

            Assert.IsNull(cp);
        }
Beispiel #3
0
        public void GetCorsPolicyAsync_OriginIsInAllowedOrigins_AllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();

            policy.AllowedOrigins.Add(origin);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(origin)).Result;

            AssertAllowed(origin, cp);
        }
Beispiel #4
0
        public void GetCorsPolicyAsync_MatchingPath_AllowsOrigin()
        {
            var origin = "http://foo.com";
            var path   = "/bar";
            var policy = CorsPolicy.AllowAll;

            var subject = new CorsPolicyProvider(policy, new string[] { path });

            var cp = subject.GetCorsPolicyAsync(Request(origin, path)).Result;

            AssertAllowed(origin, cp);
        }
Beispiel #5
0
        public void GetCorsPolicyAsync_CallbackDoesNotAllowOrigin_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();

            policy.PolicyCallback = o => Task.FromResult(false);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(origin)).Result;

            Assert.IsNull(cp);
        }
Beispiel #6
0
        public void GetCorsPolicyAsync_NoOriginRequested_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new CorsPolicy();

            policy.AllowedOrigins.Add(origin);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request()).Result;

            Assert.IsNull(cp);
        }
        public void GetCorsPolicyAsync_NoMatchingPath_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var path   = "/bar";
            var policy = Core.Configuration.CorsPolicy.AllowAll;

            var subject = new CorsPolicyProvider(policy, new string[] { path });

            var cp = subject.GetCorsPolicyAsync(Request(origin, "/baz")).Result;

            cp.Should().BeNull();
        }
        public void GetCorsPolicyAsync_CallbackAllowOrigin_AllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new Core.Configuration.CorsPolicy();

            policy.PolicyCallback = o => Task.FromResult(true);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request(origin)).Result;

            AssertAllowed(origin, cp);
        }
        public void GetCorsPolicyAsync_NoOriginRequested_DoesNotAllowOrigin()
        {
            var origin = "http://foo.com";
            var policy = new Core.Configuration.CorsPolicy();

            policy.AllowedOrigins.Add(origin);
            var subject = new CorsPolicyProvider(policy, new string[] { "/" });

            var cp = subject.GetCorsPolicyAsync(Request()).Result;

            cp.Should().BeNull();
        }
        public void Init()
        {
            _options = new IdentityServerOptions();
            _options.Cors.CorsPaths.Clear();
            foreach (var path in _allowedPaths)
            {
                _options.Cors.CorsPaths.Add(new PathString(path));
            }

            _subject = new CorsPolicyProvider(
                TestLogger.Create <CorsPolicyProvider>(),
                new Decorator <ICorsPolicyProvider>(_mockInner),
                _options,
                _mockPolicy);
        }
Beispiel #11
0
        public static ICorsPolicyProvider AsOwinPolicyProvider(this CorsConfiguration corsConfiguration)
        {
            var attribute = new CorsPolicyProvider
            {
                PolicyResolver = context => Task.FromResult(
                    CreatePolicy(
                        corsConfiguration.Origin, string.Join(",", corsConfiguration.Methods ?? new List <string>()),
                        string.Join(",", corsConfiguration.Headers ?? new List <string>()),
                        string.Join(",", corsConfiguration.ExposedHeaders ?? new List <string>())
                        )
                    )
            };

            return(attribute);
        }
        public static void Register(HttpConfiguration config)
        {
            var corsPolicyProvider = new CorsPolicyProvider();

            config.EnableCors(corsPolicyProvider);

            config.SuppressDefaultHostAuthentication();
            config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );
        }
    internal void Init()
    {
        _options = new IdentityServerOptions();
        _options.Cors.CorsPaths.Clear();
        foreach (var path in _allowedPaths)
        {
            _options.Cors.CorsPaths.Add(new PathString(path));
        }

        var svcs = new ServiceCollection();

        svcs.AddSingleton <ICorsPolicyService>(_mockPolicy);
        var provider = svcs.BuildServiceProvider();


        _subject = new CorsPolicyProvider(
            TestLogger.Create <CorsPolicyProvider>(),
            new Decorator <ICorsPolicyProvider>(_mockInner),
            _options, provider);
    }
        internal void Init()
        {
            _options = new IdentityServerOptions();
            _options.Cors.CorsPaths.Clear();
            foreach (var path in _allowedPaths)
            {
                _options.Cors.CorsPaths.Add(new PathString(path));
            }

            var ctx  = new DefaultHttpContext();
            var svcs = new ServiceCollection();

            svcs.AddSingleton <ICorsPolicyService>(_mockPolicy);
            ctx.RequestServices = svcs.BuildServiceProvider();
            var ctxAccessor = new HttpContextAccessor();

            ctxAccessor.HttpContext = ctx;

            _subject = new CorsPolicyProvider(
                TestLogger.Create <CorsPolicyProvider>(),
                new Decorator <ICorsPolicyProvider>(_mockInner),
                _options,
                ctxAccessor);
        }
Beispiel #15
0
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888
            var resolver = new DefaultInlineConstraintResolver();

            resolver.ConstraintMap.Add("pizza-name", typeof(PizzaNameConstraint));

            var config = new HttpConfiguration();

            config.MapHttpAttributeRoutes(resolver);

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            config.Services.Replace(typeof(IExceptionLogger), new ElmahExceptionLogger());
            var provider = new SimpleModelBinderProvider(typeof(Filter), new FilterBinder());

            config.Services.Insert(typeof(ModelBinderProvider), 0, provider);

            var kernel = new StandardKernel();
            var path   = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            var logger = new LoggerConfiguration()
                         .WriteTo.Debug()
                         .WriteTo.Console()
                         .WriteTo.File(Path.Combine(path, "log.txt"))
                         .Enrich.WithHttpRequestType()
                         .Enrich.WithWebApiControllerName()
                         .Enrich.WithWebApiActionName()
#if QA || DEBUG
                         .MinimumLevel.Verbose()
#elif RELEASE
                         .MinimumLevel.Warning()
#endif
                         .CreateLogger();

            config.EnsureInitialized();

            kernel.Bind <ILogger>().ToConstant(logger);
            kernel.Load(new LogicDIModule());

            FluentValidationModelValidatorProvider.Configure(config, opt =>
            {
                opt.ValidatorFactory = new CustomValidatorFactory(kernel);
            });

            var provide = new CorsPolicyProvider();

            provide.PolicyResolver = ctx => Task.FromResult(new System.Web.Cors.CorsPolicy {
                AllowAnyHeader = true, AllowAnyMethod = true, AllowAnyOrigin = true
            });

            app.UseCors(new CorsOptions {
                PolicyProvider = provide
            });
            app.MapSignalR(new HubConfiguration {
                EnableDetailedErrors = true
            });

            app.UseStaticFiles();
            app.UseSwagger(typeof(Startup).Assembly).UseSwaggerUi3(settings => settings.ServerUrl = "http://demovm:50698");

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
            });

            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
            {
                ClientId           = "273410476984-el7qkveap4ss84963sbl5gr4qpkb6445.apps.googleusercontent.com",
                ClientSecret       = "MJM3XIpsQHPhAEHi-nL9dBvs",
                AuthenticationType = "MyGoogle"
            });

            AddPizzaSecurity(app, kernel);



            app.UseNinjectMiddleware(() => kernel).UseNinjectWebApi(config);
        }
Beispiel #16
0
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888


            var config = new HttpConfiguration();

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            config.Services.Replace(typeof(IExceptionLogger), new ElmahExceptionLogger());

            //если ошибка loop newtonsoft -помогает узнать какой ответ пришел и какую переменную смотреть
            //config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

            var kernel = new StandardKernel();
            var path   = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

            var logger = new LoggerConfiguration()
                         .WriteTo.Debug()
                         .WriteTo.Console()
                         .WriteTo.File(Path.Combine(path, "log.txt"))
                         .Enrich.WithHttpRequestType()
                         .Enrich.WithWebApiControllerName()
                         .Enrich.WithWebApiActionName() // закончили настройку
                         .MinimumLevel.Verbose()
                         .CreateLogger();               // создать логер

            kernel.Bind <ILogger>().ToConstant(logger);
            kernel.Load(new LogicDIModule());

            FluentValidationModelValidatorProvider.Configure(config, opt =>
            {
                opt.ValidatorFactory = new CustomValidatorFactory(kernel);
            });



            var provide = new CorsPolicyProvider();

            provide.PolicyResolver = ctx => Task.FromResult(new System.Web.Cors.CorsPolicy {
                AllowAnyHeader = true, AllowAnyMethod = true, AllowAnyOrigin = true
            });
            app.UseCors(new Microsoft.Owin.Cors.CorsOptions {
                PolicyProvider = provide
            });


            app.UseStaticFiles();
            app.UseSwagger(typeof(Startup).Assembly).UseSwaggerUi3(settings => settings.ServerUrl = "http://localhost:50698");



            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
            });

            app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

            app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions
            {
                ClientId           = "740546789549-8v4dr8v2jibtj963r7po5icmkr6up4ja.apps.googleusercontent.com",
                ClientSecret       = "Ysrz4Odz15usgJVKPzX5BRTR",
                AuthenticationType = "MyGoogle"
            });

            app.Map("/login/google", b => b.Use <GoogleAuthMiddleware>());


            LoadIdentityServer(app, kernel);


            //  AddHangmanSecurity(app, kernel);
            //app.MapSignalR(//path:"/signalr"  , по умолчанию заданный путь
            //    configuration:  new HubConfiguration {
            //    EnableDetailedErrors = true,
            //    EnableJSONP = true
            //});


            app.UseNinjectMiddleware(() => kernel).UseNinjectWebApi(config);
        }