From addaa36d8f81ee098b5b2dec8efc3e91e531d60a Mon Sep 17 00:00:00 2001 From: Ayende Rahien Date: Fri, 22 Mar 2013 11:05:50 +0200 Subject: [PATCH] If using the default oauth token, we will use the request's host & port, rather than rely on the user to specify them for us. --- .../Config/InMemoryRavenConfiguration.cs | 5 +++++ .../Security/OAuth/OAuthRequestAuthorizer.cs | 14 +++++++++++++- Raven.Tryouts/Program.cs | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Raven.Database/Config/InMemoryRavenConfiguration.cs b/Raven.Database/Config/InMemoryRavenConfiguration.cs index baad53f1d495..b20411083f32 100644 --- a/Raven.Database/Config/InMemoryRavenConfiguration.cs +++ b/Raven.Database/Config/InMemoryRavenConfiguration.cs @@ -254,6 +254,11 @@ private void SetVirtualDirectory() } + public bool UseDefaultOAuthTokenServer + { + get { return Settings["Raven/OAuthTokenServer"] == null; } + } + private void SetupOAuth() { OAuthTokenServer = Settings["Raven/OAuthTokenServer"] ?? diff --git a/Raven.Database/Server/Security/OAuth/OAuthRequestAuthorizer.cs b/Raven.Database/Server/Security/OAuth/OAuthRequestAuthorizer.cs index 15bdf12beaf4..515815653e1c 100644 --- a/Raven.Database/Server/Security/OAuth/OAuthRequestAuthorizer.cs +++ b/Raven.Database/Server/Security/OAuth/OAuthRequestAuthorizer.cs @@ -109,7 +109,19 @@ void WriteAuthorizationChallenge(IHttpContext ctx, int statusCode, string error, { if (string.IsNullOrEmpty(Settings.OAuthTokenServer) == false) { - ctx.Response.AddHeader("OAuth-Source", Settings.OAuthTokenServer); + if (Settings.UseDefaultOAuthTokenServer == false) + { + ctx.Response.AddHeader("OAuth-Source", Settings.OAuthTokenServer); + } + else + { + ctx.Response.AddHeader("OAuth-Source", new UriBuilder(Settings.OAuthTokenServer) + { + Host = ctx.Request.Url.Host, + Port = ctx.Request.Url.Port + }.Uri.ToString()); + + } } ctx.Response.StatusCode = statusCode; ctx.Response.AddHeader("WWW-Authenticate", string.Format("Bearer realm=\"Raven\", error=\"{0}\",error_description=\"{1}\"", error, errorDescription)); diff --git a/Raven.Tryouts/Program.cs b/Raven.Tryouts/Program.cs index 8c61d38b4dfa..245b677c55a7 100644 --- a/Raven.Tryouts/Program.cs +++ b/Raven.Tryouts/Program.cs @@ -15,6 +15,8 @@ class Program { static void Main(string[] args) { + var uri = new Uri("ftp://localhost/"); + Console.WriteLine(uri.Port); } } } \ No newline at end of file