示例#1
0
        public static IApplicationBuilder UseOwinAppBuilder(this IApplicationBuilder app, Action<IAppBuilder> configuration)
        {
            if (app == null)
            {
                throw new ArgumentNullException(nameof(app));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            return app.UseOwin(setup => setup(next => {
                var builder = new AppBuilder();
                var lifetime = (IApplicationLifetime)app.ApplicationServices.GetService(typeof(IApplicationLifetime));
                
                var properties = new AppProperties(builder.Properties);
                properties.AppName = Guid.NewGuid().ToString();
                properties.OnAppDisposing = lifetime.ApplicationStopping;
                properties.DefaultApp = next;

                configuration(builder);

                return builder.Build<Func<IDictionary<string, object>, Task>>();
            }));
        }
        public static IAppBuilder Create(IdentityServerBearerTokenAuthenticationOptions options)
        {
            IAppBuilder app = new AppBuilder();
            app.SetLoggerFactory(new DiagnosticsLoggerFactory());

            app.UseIdentityServerBearerTokenAuthentication(options);
            
            app.Use((context, next) =>
            {
                var user = context.Authentication.User;

                if (user == null ||
                    user.Identity == null ||
                    !user.Identity.IsAuthenticated)
                {
                    context.Response.StatusCode = 401;
                }
                else
                {
                    context.Response.StatusCode = 200;
                }

                return Task.FromResult(0);
            });


            return app;
        }
示例#3
0
        public static AppBuilder Create()
        {
            AppBuilder app = new AppBuilder();

            var factory = new IdentityServerServiceFactory()
                            .UseInMemoryClients(Clients.Get())
                            .UseInMemoryScopes(Scopes.Get())
                            .UseInMemoryUsers(Users.Get());

            factory.CustomGrantValidators.Add(new Registration<ICustomGrantValidator, CustomGrantValidator>());
            factory.CustomGrantValidators.Add(new Registration<ICustomGrantValidator, CustomGrantValidator2>());

            app.UseIdentityServer(new IdentityServerOptions
            {
                EventsOptions = new EventsOptions
                {
                    RaiseErrorEvents = true,
                    RaiseFailureEvents = true,
                    RaiseInformationEvents = true,
                    RaiseSuccessEvents = true
                },

                IssuerUri = "https://idsrv3",
                SigningCertificate = TestCert.Load(),

                Factory = factory
            });

            return app;
        }
        public void NonNullCorsRequestContext_CallsPolicyProvider()
        {
            IAppBuilder builder = new AppBuilder();
            bool wasCalled = false;
            builder.UseCors(new CorsOptions
            {
                PolicyProvider = new CorsPolicyProvider
                {
                    PolicyResolver = ctx =>
                    {
                        wasCalled = true;
                        return Task.FromResult<CorsPolicy>(null);
                    }
                }
            });

            builder.Run(context =>
            {
                context.Response.StatusCode = 200;
                return Task.FromResult(0);
            });

            var app = (AppFunc)builder.Build(typeof(AppFunc));

            IOwinRequest request = CreateRequest("http://localhost/sample");
            request.Headers.Set(CorsConstants.Origin, "http://test");
            app(request.Environment).Wait();

            var response = new OwinResponse(request.Environment);
            Assert.Equal(true, wasCalled);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="IdentityServerBearerTokenValidationMiddleware" /> class.
        /// </summary>
        /// <param name="next">The next middleware.</param>
        /// <param name="options">The options.</param>
        /// <param name="loggerFactory">The logger factory.</param>
        public IdentityServerBearerTokenValidationMiddleware(AppFunc next, IdentityServerOAuthBearerAuthenticationOptions options, ILoggerFactory loggerFactory)
        {
            _next = next;
            _options = options;
            _logger = loggerFactory.Create(this.GetType().FullName);

            if (options.LocalValidationOptions != null)
            {
                var localBuilder = new AppBuilder();
                options.OnValidationAppBuilderCreated?.Invoke(localBuilder);
                localBuilder.UseOAuthBearerAuthentication(options.LocalValidationOptions);
                localBuilder.Run(ctx => next(ctx.Environment));
                _localValidationFunc = localBuilder.Build();
            }

            if (options.EndpointValidationOptions != null)
            {
                var endpointBuilder = new AppBuilder();
                options.OnValidationAppBuilderCreated?.Invoke(endpointBuilder);
                endpointBuilder.Properties["host.AppName"] = "foobar";

                endpointBuilder.UseOAuthBearerAuthentication(options.EndpointValidationOptions);
                endpointBuilder.Run(ctx => next(ctx.Environment));
                _endpointValidationFunc = endpointBuilder.Build();
            }
        }
示例#6
0
        public void Configure(IApplicationBuilder app)
        {
            app.UseStaticFiles();
            app.UseStatusCodePages();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller}/{action}/{id?}",
                    defaults: new {controller = "Home", action = "Index"});
            });

            app.UseOwin(addToPipeline =>
            {
                addToPipeline(next =>
                {
                    var builder = new AppBuilder();
                    var hubConfig = new HubConfiguration { EnableDetailedErrors = true };

                    builder.MapSignalR(hubConfig);

                    var appFunc = builder.Build(typeof(Func<IDictionary<string, object>, Task>)) as Func<IDictionary<string, object>, Task>;

                    return appFunc;
                });
            });
        }
示例#7
0
文件: Adapter.cs 项目: hwqdt/Demos
 /// <summary>
 /// 默认构造函数
 /// </summary>
 public Adapter()
 {
     var builder = new AppBuilder();
     var startup = new Startup();
     startup.Configuration(builder);
     _owinApp = builder.Build();
 }
示例#8
0
        static void Main(string[] args) {
            var appBuilder = new AppBuilder();
            Nowin.OwinServerFactory.Initialize(appBuilder.Properties);

            appBuilder.Use<ConsoleLogMiddleware>();

            appBuilder.Use<SimpleStaticFileMiddleWare>(System.IO.Path.Combine(Environment.CurrentDirectory, @"../../www"));

            var startup = new WebApi.Startup();
            startup.Configuration(appBuilder);

            var builder = new Nowin.ServerBuilder();
            const string ip = "127.0.0.1";
            const int port = 8888;
            builder.SetAddress(System.Net.IPAddress.Parse(ip)).SetPort(port)
                .SetOwinApp(appBuilder.Build())
                .SetOwinCapabilities((IDictionary<string, object>)appBuilder.Properties[Nowin.OwinKeys.ServerCapabilitiesKey]);

            using (var server = builder.Build()) {

                var serverRef = new WeakReference<Nowin.INowinServer>(server);

                Task.Run(() => {
                    Nowin.INowinServer nowinServer;
                    if (serverRef.TryGetTarget(out nowinServer)) {
                        nowinServer.Start();
                    }
                });

                var baseAddress = "http://" + ip + ":" + port + "/";
                Console.WriteLine("Nowin server listening {0}, press ENTER to exit.", baseAddress);

                Console.ReadLine();
            }
        }
示例#9
0
        public void Activate() {
            IAppBuilder appBuilder = new AppBuilder();
            appBuilder.Properties["host.AppName"] = _shellSettings.Name;

            var orderedMiddlewares = _owinMiddlewareProviders
                .SelectMany(p => p.GetOwinMiddlewares())
                .OrderBy(obj => obj.Priority, new FlatPositionComparer());

            foreach (var middleware in orderedMiddlewares) {
                middleware.Configure(appBuilder);
            }

            // register the Orchard middleware after all others
            appBuilder.UseOrchard();

            Func<IDictionary<string, object>, Task> pipeline = appBuilder.Build();

            var allRoutes = new List<RouteDescriptor>();
            allRoutes.AddRange(_routeProviders.SelectMany(provider => provider.GetRoutes()));
            allRoutes.AddRange(_httpRouteProviders.SelectMany(provider => provider.GetRoutes()));

            _routePublisher.Publish(allRoutes, pipeline);
            _modelBinderPublisher.Publish(_modelBinderProviders.SelectMany(provider => provider.GetModelBinders()));

            using (var scope = _workContextAccessor.CreateWorkContextScope()) {
                using (var events = scope.Resolve<Owned<IOrchardShellEvents>>()) {
                    events.Value.Activated();
                }
            }

            _sweepGenerator.Activate();
        }
示例#10
0
文件: Program.cs 项目: et1975/Nowin
 static void Main(string[] args)
 {
     var owinbuilder = new AppBuilder();
     OwinServerFactory.Initialize(owinbuilder.Properties);
     new SampleOwinApp.Startup().Configuration(owinbuilder);
     var builder = ServerBuilder.New()
         .SetPort(8888)
         .SetOwinApp(owinbuilder.Build())
         .SetOwinCapabilities((IDictionary<string, object>)owinbuilder.Properties[OwinKeys.ServerCapabilitiesKey])
         .SetExecutionContextFlow(ExecutionContextFlow.SuppressAlways);
     //builder
     //    .SetCertificate(new X509Certificate2("../../../sslcert/test.pfx", "nowin"))
     //    .RequireClientCertificate();
     var builder2 = ServerBuilder.New().SetPort(9999).SetOwinApp(owinbuilder.Build()).SetOwinCapabilities((IDictionary<string, object>)owinbuilder.Properties[OwinKeys.ServerCapabilitiesKey]);
     using (var server = builder.Build())
     using (var server2 = builder2.Build())
     {
         // Workaround for bug in Windows Server 2012 when ReadLine is called directly after AcceptAsync
         // By starting it in another thread and probably even later than calling readline it works
         Task.Run(() => server.Start());
         Task.Run(() => server2.Start());
         //using (new Timer(o =>
         //    {
         //        var s = (INowinServer)o;
         //        Console.WriteLine("Connections {0}/{1}", s.ConnectionCount, s.CurrentMaxConnectionCount);
         //    }, server, 2000, 2000))
         {
             Console.WriteLine("Listening on ports 8888 and 9999. Enter to exit.");
             Console.ReadLine();
         }
     }
 }
        public void When_Compression_Is_Added_To_The_AppBuilder_The_AppBuilder_Is_Returned()
        {
            var builder = new AppBuilder();

            var returnedBuilder = builder.UseCompression();

            Assert.That(returnedBuilder, Is.EqualTo(builder));
        }
        public void DisposeScopeOnAppDisposingDoesNothingWhenNoTokenPresent()
        {
            var app = new AppBuilder();
            var scope = new TestableLifetimeScope();

            // XUnit doesn't have Assert.DoesNotThrow
            app.DisposeScopeOnAppDisposing(scope);
        }
        public void When_Compression_Is_Added_To_The_AppBuilder_With_Exclusions_The_AppBuilder_Is_Returned()
        {
            var builder = new AppBuilder();

            var returnedBuilder = builder.UseCompression(new [] { @"application/json" });

            Assert.That(returnedBuilder, Is.EqualTo(builder));
        }
示例#14
0
 public void Start(Action<IAppBuilder> app, IPEndPoint endpoint)
 {
     AppBuilder appBuilder = new AppBuilder();
     app(appBuilder);
     var builder = ServerBuilder.New().SetEndPoint(endpoint).SetOwinApp(appBuilder.Build());
     //builder.SetCertificate(new X509Certificate2("certificate.pfx", "password"));
     webApp = builder.Start();
 }
 public object Configuration(IDictionary<string, object> properties)
 {
     var builder = new AppBuilder();
     builder.Run(context =>
             {
                 return context.Response.WriteAsync("SUCCESS");
             });
     return builder.Build<AppFunc>();
 }
 public void LoadWithAssemblyName_DiscoverDefaultFactoryName()
 {
     var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create()));
     IServerFactoryAdapter serverFactory = loader.Load("Microsoft.Owin.Hosting.Tests");
     Assert.NotNull(serverFactory);
     IAppBuilder builder = new AppBuilder();
     serverFactory.Create(builder);
     Assert.Equal("Microsoft.Owin.Hosting.Tests.OwinServerFactory", builder.Properties["create.server"]);
 }
 public void LoadWithDefaults_LoadAssemblyAndDiscoverFactory(string data)
 {
     var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create()));
     IServerFactoryAdapter serverFactory = loader.Load(data);
     Assert.NotNull(serverFactory);
     IAppBuilder builder = new AppBuilder();
     serverFactory.Initialize(builder);
     Assert.IsType<OwinHttpListener>(builder.Properties[typeof(OwinHttpListener).FullName]);
 }
 public void LoadWithAssemblyAndFullTypeName_Success(string data, string expected)
 {
     var loader = new ServerFactoryLoader(new ServerFactoryActivator(ServicesFactory.Create()));
     IServerFactoryAdapter serverFactory = loader.Load(data);
     Assert.NotNull(serverFactory);
     IAppBuilder builder = new AppBuilder();
     serverFactory.Create(builder);
     Assert.Equal(expected, builder.Properties["create.server"]);
 }
 public object Configuration()
 {
     var builder = new AppBuilder();
     builder.Run(context =>
             {
                 return context.Response.WriteAsync("SUCCESS");
             });
     return builder.Build<AppFunc>();
 }
        public void UseAutofacWebApiAddsDelegatingHandler()
        {
            var app = new AppBuilder();
            var configuration = new HttpConfiguration();

            app.UseAutofacWebApi(configuration);

            Assert.That(configuration.MessageHandlers.OfType<DependencyScopeHandler>().Count(), Is.EqualTo(1));
        }
        public void UseAutofacWebApiWillOnlyAddDelegatingHandlerOnce()
        {
            var app = new AppBuilder();
            var configuration = new HttpConfiguration();

            app.UseAutofacWebApi(configuration);
            app.UseAutofacWebApi(configuration);

            Assert.Equal(1, configuration.MessageHandlers.OfType<DependencyScopeHandler>().Count());
        }
        public void PredicateTrue_BranchTaken()
        {
            IOwinContext context = new OwinContext();
            IAppBuilder builder = new AppBuilder();
            builder.MapWhen(TruePredicate, UseSuccess);
            var app = builder.Build<OwinMiddleware>();
            app.Invoke(context).Wait();

            Assert.Equal(200, context.Response.StatusCode);
        }
 public void NullArguments_ArgumentNullException()
 {
     var builder = new AppBuilder();
     var noMiddleware = new AppBuilder().Build<AppFunc>();
     var noOptions = new MapOptions();
     Assert.Throws<ArgumentNullException>(() => builder.Map(null, ActionNotImplemented));
     Assert.Throws<ArgumentNullException>(() => builder.Map("/foo", (Action<IAppBuilder>)null));
     Assert.Throws<ArgumentNullException>(() => new MapMiddleware(null, noOptions));
     Assert.Throws<ArgumentNullException>(() => new MapMiddleware(noMiddleware, null));
 }
示例#24
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var appBuilder = new AppBuilder();
            appBuilder.UseNancy();
            var appFunc = appBuilder.Build<AppFunc>();

            var settings = new CefSettings();
            settings.RegisterOwinSchemeHandlerFactory("owin", appFunc);
            Cef.Initialize(settings);
        }
示例#25
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="TheaterMiddleware" /> class.
        /// </summary>
        /// <param name="theaterSettings">The histrio settings used to configure the middelware</param>
        internal TheaterMiddleware(TheaterSettings theaterSettings)
        {
            var controllerActivator = new TheaterControllerActivator(theaterSettings.Theater);

            MidFunc = next =>
            {
                var app = new AppBuilder();
                app.UseWebApi(GetWebApiConfiguration(controllerActivator));
                app.Run(ctx => next(ctx.Environment));
                return app.Build();
            };
        }
        public void PathMatchFunc_BranchTaken(string matchPath, string basePath, string requestPath)
        {
            IOwinContext context = CreateRequest(basePath, requestPath);
            IAppBuilder builder = new AppBuilder();
            builder.Map(matchPath, UseSuccess);
            var app = builder.Build<OwinMiddleware>();
            app.Invoke(context);

            Assert.Equal(200, context.Response.StatusCode);
            Assert.Equal(basePath, context.Request.PathBase.Value);
            Assert.Equal(requestPath, context.Request.Path.Value);
        }
        public async Task When_host_Nancy_via_IAppBuilder_should_read_X509Certificate2()
        {
            // Given
            var app = new AppBuilder();
            var bootstrapper = new ConfigurableBootstrapper(config => config.Module<TestModule>());

            var cert = @"-----BEGIN CERTIFICATE-----
                            MIICNTCCAZ4CCQC21XwOAYG32zANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJH
                            QjETMBEGA1UECBMKU29tZS1TdGF0ZTEOMAwGA1UEChMFTmFuY3kxDjAMBgNVBAsT
                            BU5hbmN5MRswGQYDVQQDExJodHRwOi8vbmFuY3lmeC5vcmcwHhcNMTYwMjIyMTE1
                            NzQ3WhcNMTcwMjIxMTE1NzQ3WjBfMQswCQYDVQQGEwJHQjETMBEGA1UECBMKU29t
                            ZS1TdGF0ZTEOMAwGA1UEChMFTmFuY3kxDjAMBgNVBAsTBU5hbmN5MRswGQYDVQQD
                            ExJodHRwOi8vbmFuY3lmeC5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
                            AMT4vOtIH9Fzad+8KCGjMPkkVpCtn+L5H97bnI3x+y3x5lY0WRsK8FyxVshY/7fv
                            TDeeVKUWanmbMkQjgFRYffA3ep3/AIguswYdANiNVHrx0L7DXNDcgsjRwaa6JVgQ
                            9iavlli0a80AF67FN1wfidlHCX53u3/fAjiSTwf7D+NBAgMBAAEwDQYJKoZIhvcN
                            AQEFBQADgYEAh12A4NntHHdVMGaw+2umXkWqCOyAPuNhyBGUHK5vGON+VG0HPFaf
                            8P8eMtdF4deBHkrfoWxRuGGn2tJzNpZLiEf23BAivEf36IqwfkVP7/zDwI+bjVXC
                            k64Un2uN8ALR/wLwfJzHfOLPtsca7ySWhlv8oZo2nk0vR34asQiGJDQ=
                            -----END CERTIFICATE-----
                            ";

            var embeddedCert = Encoding.UTF8.GetBytes(cert);

            app.Use(new Func<AppFunc, AppFunc>(next => (async env =>
            {
                env.Add("ssl.ClientCertificate", new X509Certificate(embeddedCert));
                await next.Invoke(env);
            })));

            app.UseNancy(opts =>
            {
                opts.Bootstrapper = bootstrapper;
                opts.EnableClientCertificates = true;
            });

            var appFunc = app.Build();

            var handler = new OwinHttpMessageHandler(appFunc);

            using (var httpClient = new HttpClient(handler)
            {
                BaseAddress = new Uri("http://localhost")
            })
            {
                // When
                var response = await httpClient.GetAsync(new Uri("http://localhost/ssl"));

                // Then
                Assert.Equal(System.Net.HttpStatusCode.OK, response.StatusCode);
            }
        }
        public void Invoke_DoesNotAddHeaders_WhenOriginIsMissing()
        {
            IAppBuilder builder = new AppBuilder();
            builder.UseCors(CorsOptions.AllowAll);

            var app = (AppFunc)builder.Build(typeof(AppFunc));

            IOwinRequest request = CreateRequest("http://localhost/sample");
            app(request.Environment).Wait();

            var response = new OwinResponse(request.Environment);
            Assert.Empty(response.Headers);
        }
        public async Task ScriptFileCanBeExecutedByName()
        {
            var factory = new RoslynAppLoaderFactory();
            Func<string, IList<string>, Action<IAppBuilder>> loader = factory.Create((_, __) => null);
            Action<IAppBuilder> startup = loader.Invoke("Simple.csx", null);
            var builder = new AppBuilder();
            startup.Invoke(builder);
            var app = builder.Build<OwinMiddleware>();

            IOwinContext context = new OwinContext();
            await app.Invoke(context);
            context.Response.StatusCode.ShouldBe(24601);
        }
        private static HttpClient CreateHttpClient(Func<TimeSpan> getMinDelay)
        {
            var app = new AppBuilder();
            app.MinResponseDelay(getMinDelay)
                .Use((context, _) =>
                {
                    context.Response.StatusCode = 200;
                    context.Response.ReasonPhrase = "OK";

                    return Task.FromResult(0);
                });
            return new HttpClient(new OwinHttpMessageHandler(app.Build()));
        }