public void Configure(HttpListener listener, IRavenHttpConfiguration config)
		{
			if (string.Equals(config.AuthenticationMode, "Windows",StringComparison.InvariantCultureIgnoreCase) == false) 
				return;

			switch (config.AnonymousUserAccessMode)
			{
				case AnonymousUserAccessMode.None:
					listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
					break;
				case AnonymousUserAccessMode.All:
					listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication |
					   AuthenticationSchemes.Anonymous;
					listener.AuthenticationSchemeSelectorDelegate = request =>
					{
						if (request.RawUrl.StartsWith("/admin", StringComparison.InvariantCultureIgnoreCase))
							return AuthenticationSchemes.IntegratedWindowsAuthentication;

						return AuthenticationSchemes.Anonymous;
					};
					break;
				case AnonymousUserAccessMode.Get:
					listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication |
						AuthenticationSchemes.Anonymous;
					listener.AuthenticationSchemeSelectorDelegate = request =>
					{
						return AbstractRequestAuthorizer.IsGetRequest(request.HttpMethod, request.Url.AbsolutePath) ?
							AuthenticationSchemes.Anonymous | AuthenticationSchemes.IntegratedWindowsAuthentication :
							AuthenticationSchemes.IntegratedWindowsAuthentication;
					};
					break;
				default:
					throw new ArgumentException("Cannot understand access mode: " + config.AnonymousUserAccessMode);
			}
		}
Example #2
0
        protected HttpServer(IRavenHttpConfiguration configuration, IResourceStore resourceStore)
        {
            DefaultResourceStore = resourceStore;
            DefaultConfiguration = configuration;

            configuration.Container.SatisfyImportsOnce(this);

            foreach (var responder in RequestResponders)
            {
                responder.Value.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
            }

            switch (configuration.AuthenticationMode.ToLowerInvariant())
            {
            case "windows":
                requestAuthorizer = new WindowsRequestAuthorizer();
                break;

            case "oauth":
                requestAuthorizer = new OAuthRequestAuthorizer();
                break;

            default:
                throw new InvalidOperationException(
                          string.Format("Unknown AuthenticationMode {0}. Options are Windows and OAuth", configuration.AuthenticationMode));
            }

            requestAuthorizer.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
        }
Example #3
0
		private void HandleRequest(GetRequest[] requests, GetResponse[] results, int i, IHttpContext context, IRavenHttpConfiguration ravenHttpConfiguration, MultiGetHttpContext[] contexts)
		{
			var request = requests[i];
			if (request == null)
				return;
			server.HandleActualRequest(contexts[i]);
			results[i] = contexts[i].Complete();
		}
Example #4
0
			public MultiGetHttpContext(IRavenHttpConfiguration configuration, IHttpContext realContext, GetRequest req)
			{
				this.configuration = configuration;
				this.realContext = realContext;
				getResponse = new GetResponse();
				Request = new MultiGetHttpRequest(req, realContext.Request);
				Response = new MultiGetHttpResponse(getResponse, realContext.Response);
			}
Example #5
0
 public MultiGetHttpContext(IRavenHttpConfiguration configuration, IHttpContext realContext, GetRequest req, string tenantId)
 {
     this.configuration = configuration;
     this.realContext   = realContext;
     this.tenantId      = tenantId;
     getResponse        = new GetResponse();
     Request            = new MultiGetHttpRequest(req, realContext.Request);
     Response           = new MultiGetHttpResponse(getResponse, realContext.Response);
 }
Example #6
0
        public HttpListenerContextAdpater(HttpListenerContext ctx, IRavenHttpConfiguration configuration)
        {
            this.ctx           = ctx;
            this.configuration = configuration;
            Request            = new HttpListenerRequestAdapter(ctx.Request);
            ResponseInternal   = new HttpListenerResponseAdapter(ctx.Response);

            SetMaxAge();
        }
Example #7
0
		private void HandleRequest(GetRequest[] requests, GetResponse[] results, int i, IHttpContext context, IRavenHttpConfiguration ravenHttpConfiguration)
		{
			var request = requests[i];
			if (request == null)
				return;
			var ctx = new MultiGetHttpContext(ravenHttpConfiguration, context, request, TenantId);
			server.HandleActualRequest(ctx);
			results[i] = ctx.Complete();
		}
Example #8
0
        public HttpContextAdapter(HttpContext context, IRavenHttpConfiguration configuration)
        {
            this.context       = context;
            this.configuration = configuration;
            request            = new HttpRequestAdapter(context.Request);
            response           = new HttpResponseAdapter(context.Response);

            SetMaxAge();
        }
		public HttpListenerContextAdpater(HttpListenerContext ctx, IRavenHttpConfiguration configuration)
		{
			this.ctx = ctx;
			this.configuration = configuration;
			Request = new HttpListenerRequestAdapter(ctx.Request);
			ResponseInternal = new HttpListenerResponseAdapter(ctx.Response);

			SetMaxAge();
		}
Example #10
0
		public HttpContextAdapter(HttpContext context, IRavenHttpConfiguration configuration)
		{
			this.context = context;
			this.configuration = configuration;
			request = new HttpRequestAdapter(context.Request);
			response = new HttpResponseAdapter(context.Response);

			SetMaxAge();
		}
Example #11
0
		protected HttpServer(IRavenHttpConfiguration configuration, IResourceStore resourceStore)
        {
            DefaultResourceStore = resourceStore;
            DefaultConfiguration = configuration;

            configuration.Container.SatisfyImportsOnce(this);

            foreach (var requestResponder in RequestResponders)
            {
                requestResponder.Value.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value);
            }
        }
		public void Configure(HttpListener listener, IRavenHttpConfiguration config)
		{
			if (string.Equals(config.AuthenticationMode, "OAuth", StringComparison.InvariantCultureIgnoreCase) == false) 
				return;

			listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous | AuthenticationSchemes.Basic;

			listener.AuthenticationSchemeSelectorDelegate = request => {
				return request.RawUrl.StartsWith("/OAuth/AccessToken", StringComparison.InvariantCultureIgnoreCase) ?
					AuthenticationSchemes.Basic | AuthenticationSchemes.Anonymous : AuthenticationSchemes.Anonymous;
			};
		}
Example #13
0
        public void Configure(HttpListener listener, IRavenHttpConfiguration config)
        {
            if (string.Equals(config.AuthenticationMode, "OAuth", StringComparison.InvariantCultureIgnoreCase) == false)
            {
                return;
            }

            listener.AuthenticationSchemes = AuthenticationSchemes.Anonymous | AuthenticationSchemes.Basic;

            listener.AuthenticationSchemeSelectorDelegate = request => {
                return(request.RawUrl.StartsWith("/OAuth/AccessToken", StringComparison.InvariantCultureIgnoreCase) ?
                       AuthenticationSchemes.Basic | AuthenticationSchemes.Anonymous : AuthenticationSchemes.Anonymous);
            };
        }
Example #14
0
        public void Configure(HttpListener listener, IRavenHttpConfiguration config)
        {
            if (string.Equals(config.AuthenticationMode, "Windows", StringComparison.InvariantCultureIgnoreCase) == false)
            {
                return;
            }

            switch (config.AnonymousUserAccessMode)
            {
            case AnonymousUserAccessMode.None:
                listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
                break;

            case AnonymousUserAccessMode.All:
                listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication |
                                                 AuthenticationSchemes.Anonymous;
                listener.AuthenticationSchemeSelectorDelegate = request =>
                {
                    if (request.RawUrl.StartsWith("/admin", StringComparison.InvariantCultureIgnoreCase))
                    {
                        return(AuthenticationSchemes.IntegratedWindowsAuthentication);
                    }

                    return(AuthenticationSchemes.Anonymous);
                };
                break;

            case AnonymousUserAccessMode.Get:
                listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication |
                                                 AuthenticationSchemes.Anonymous;
                listener.AuthenticationSchemeSelectorDelegate = request =>
                {
                    return(AbstractRequestAuthorizer.IsGetRequest(request.HttpMethod, request.Url.AbsolutePath) ?
                           AuthenticationSchemes.Anonymous | AuthenticationSchemes.IntegratedWindowsAuthentication :
                           AuthenticationSchemes.IntegratedWindowsAuthentication);
                };
                break;

            default:
                throw new ArgumentException("Cannot understand access mode: " + config.AnonymousUserAccessMode);
            }
        }
Example #15
0
 private void Executerequests(
     IHttpContext context,
     IRavenHttpConfiguration ravenHttpConfiguration,
     GetResponse[] results,
     GetRequest[] requests)
 {
     if ("yes".Equals(context.Request.QueryString["parallel"], StringComparison.InvariantCultureIgnoreCase))
     {
         Parallel.For(0, requests.Length, position =>
                      HandleRequest(requests, results, position, context, ravenHttpConfiguration)
                      );
     }
     else
     {
         for (var i = 0; i < requests.Length; i++)
         {
             HandleRequest(requests, results, i, context, ravenHttpConfiguration);
         }
     }
 }
Example #16
0
		private void Executerequests(
			IHttpContext context, 
			IRavenHttpConfiguration ravenHttpConfiguration, 
			GetResponse[] results,
			GetRequest[] requests)
		{
			if ("yes".Equals(context.Request.QueryString["parallel"], StringComparison.InvariantCultureIgnoreCase))
			{
				Parallel.For(0, requests.Length, position =>
					HandleRequest(requests, results, position, context, ravenHttpConfiguration)
					);
			}
			else
			{
				for (var i = 0; i < requests.Length; i++)
				{
					HandleRequest(requests, results, i, context, ravenHttpConfiguration);
				}
			}
		}
Example #17
0
		private void Executerequests(
			IHttpContext context, 
			IRavenHttpConfiguration ravenHttpConfiguration, 
			GetResponse[] results,
			GetRequest[] requests)
		{
			// Need to create this here to preserve any current TLS data that we have to copy
			var contexts = requests.Select(request => new MultiGetHttpContext(ravenHttpConfiguration, context, request, TenantId))
				.ToArray();
			if ("yes".Equals(context.Request.QueryString["parallel"], StringComparison.InvariantCultureIgnoreCase))
			{
				Parallel.For(0, requests.Length, position =>
					HandleRequest(requests, results, position, context, ravenHttpConfiguration, contexts)
					);
			}
			else
			{
				for (var i = 0; i < requests.Length; i++)
				{
					HandleRequest(requests, results, i, context, ravenHttpConfiguration, contexts);
				}
			}
		}
Example #18
0
		public RavenDbHttpServer(IRavenHttpConfiguration configuration, IResourceStore database)
			: base(configuration, database)
		{
			RemoveTenantDatabase.Occured.Subscribe(TenantDatabaseRemoved);
		}
Example #19
0
		protected HttpServer(IRavenHttpConfiguration configuration, IResourceStore resourceStore)
		{
			DefaultResourceStore = resourceStore;
			DefaultConfiguration = configuration;

			configuration.Container.SatisfyImportsOnce(this);

			foreach (var responder in RequestResponders)
			{
				responder.Value.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
			}

			switch (configuration.AuthenticationMode.ToLowerInvariant())
			{
				case "windows":
					requestAuthorizer = new WindowsRequestAuthorizer();
					break;
				case "oauth":
					requestAuthorizer = new OAuthRequestAuthorizer();
					break;
				default:
					throw new InvalidOperationException(
						string.Format("Unknown AuthenticationMode {0}. Options are Windows and OAuth", configuration.AuthenticationMode));
			}

			requestAuthorizer.Initialize(() => currentDatabase.Value, () => currentConfiguration.Value, () => currentTenantId.Value, this);
		}
Example #20
0
			public MultiGetHttpContext(IRavenHttpConfiguration configuration, IHttpContext realContext, GetRequest req, string tenantId)
			{
				this.configuration = configuration;
				this.realContext = realContext;
				this.tenantId = tenantId;
				getResponse = new GetResponse();
				if (req == null)
					return;
				Request = new MultiGetHttpRequest(req, realContext.Request);
				Response = new MultiGetHttpResponse(getResponse, realContext.Response);
			}
Example #21
0
        private void HandleRequest(GetRequest[] requests, GetResponse[] results, int i, IHttpContext context, IRavenHttpConfiguration ravenHttpConfiguration)
        {
            var request = requests[i];

            if (request == null)
            {
                return;
            }
            var ctx = new MultiGetHttpContext(ravenHttpConfiguration, context, request, TenantId);

            server.HandleActualRequest(ctx);
            results[i] = ctx.Complete();
        }
Example #22
0
		public RavenDbHttpServer(IRavenHttpConfiguration configuration, IResourceStore database)
			: base(configuration, database)
		{
		}
Example #23
0
 public RavenDbHttpServer(IRavenHttpConfiguration configuration, IResourceStore database)
     : base(configuration, database)
 {
     RemoveTenantDatabase.Occured.Subscribe(TenantDatabaseRemoved);
 }