diff --git a/Host/Web.config b/Host/Web.config index c6cf2bdc0..baaa42c24 100644 --- a/Host/Web.config +++ b/Host/Web.config @@ -437,9 +437,9 @@ - - - + + + diff --git a/Server/Components/ServerUtils/ApiFacade/HttpClientFacade.cs b/Server/Components/ServerUtils/ApiFacade/HttpClientFacade.cs index c81b5cb0b..5e6c3474a 100644 --- a/Server/Components/ServerUtils/ApiFacade/HttpClientFacade.cs +++ b/Server/Components/ServerUtils/ApiFacade/HttpClientFacade.cs @@ -26,6 +26,7 @@ namespace BeWo.ServerUtils.ApiFacade private ILog _logger; public bool DirectConnect { get; private set; } + public bool AllowRedirect { get; private set; } public string Base_Url { get; private set; } public HttpMethod Method { get; set; } = HttpMethod.Get; @@ -35,7 +36,7 @@ namespace BeWo.ServerUtils.ApiFacade public Encoding Encoding { get; set; } = Encoding.UTF8; public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(30); - public HttpClientFacade(string base_url, string api_key, bool directConntect = true) + public HttpClientFacade(string base_url, string api_key, bool directConntect = true, bool allow_redirect = false) { if (string.IsNullOrEmpty(base_url)) throw new ArgumentNullException("HttpClient: base_url is missing"); @@ -47,6 +48,7 @@ namespace BeWo.ServerUtils.ApiFacade if (!string.IsNullOrWhiteSpace(api_key)) SetToken(api_key); DirectConnect = directConntect; + AllowRedirect = allow_redirect; _logger = LoggerUtils.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); } @@ -126,7 +128,7 @@ namespace BeWo.ServerUtils.ApiFacade return parse(() => (T)result, content, extractor); } - private static bool ServerCertificateCustomValidation(HttpRequestMessage requestMessage, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslErrors) + protected static bool ServerCertificateCustomValidation(HttpRequestMessage requestMessage, X509Certificate2 certificate, X509Chain chain, SslPolicyErrors sslErrors) { // It is possible to inspect the certificate provided by the server. Console.WriteLine($"Requested URI: {requestMessage.RequestUri}"); @@ -146,6 +148,7 @@ namespace BeWo.ServerUtils.ApiFacade { ServerCertificateCustomValidationCallback = ServerCertificateCustomValidation, SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls, + AllowAutoRedirect = AllowRedirect }; using (var client = new HttpClient(handler) { Timeout = Timeout }) diff --git a/Server/Components/ServerUtils/ApiFacade/JsonHttpClientFacade.cs b/Server/Components/ServerUtils/ApiFacade/JsonHttpClientFacade.cs index 3e963b1d4..33e64dd98 100644 --- a/Server/Components/ServerUtils/ApiFacade/JsonHttpClientFacade.cs +++ b/Server/Components/ServerUtils/ApiFacade/JsonHttpClientFacade.cs @@ -1,4 +1,5 @@ using System.Net.Http; +using System.Security.Authentication; using System.Text.Json; using System.Threading.Tasks; @@ -16,7 +17,14 @@ namespace BeWo.ServerUtils.ApiFacade private protected override async Task getResponseAsync(string method) { - using (var client = new HttpClient { Timeout = Timeout }) + var handler = new HttpClientHandler + { + ServerCertificateCustomValidationCallback = ServerCertificateCustomValidation, + SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11 | SslProtocols.Tls, + AllowAutoRedirect = AllowRedirect + }; + + using (var client = new HttpClient(handler) { Timeout = Timeout }) { var requestUri = BS.Shared.Core.Utilities.WebUtils.CombineUrl(Base_Url, method);