From 5d63ef01b6af6aaf9f30bccc244d220bb9d3db63 Mon Sep 17 00:00:00 2001 From: ta264 Date: Sun, 14 Nov 2021 21:06:02 +0000 Subject: [PATCH] Fixed: Calibre authentication with Basic auth --- src/NzbDrone.Common.Test/Http/HttpClientFixture.cs | 13 ++++++++++++- .../Http/Dispatchers/ManagedHttpDispatcher.cs | 7 +++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs index 2702e8d1d..c9ec92ec4 100644 --- a/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs +++ b/src/NzbDrone.Common.Test/Http/HttpClientFixture.cs @@ -823,7 +823,7 @@ public void should_reject_malformed_domain_cookie(string malformedCookie) } [Test] - public void should_correctly_use_basic_auth() + public void should_correctly_use_basic_auth_with_basic_network_credential() { var request = new HttpRequest($"https://{_httpBinHost}/basic-auth/username/password"); request.Credentials = new BasicNetworkCredential("username", "password"); @@ -833,6 +833,17 @@ public void should_correctly_use_basic_auth() response.StatusCode.Should().Be(HttpStatusCode.OK); } + [Test] + public void should_correctly_use_basic_auth_with_network_credential() + { + var request = new HttpRequest($"https://{_httpBinHost}/basic-auth/username/password"); + request.Credentials = new NetworkCredential("username", "password"); + + var response = Subject.Execute(request); + + response.StatusCode.Should().Be(HttpStatusCode.OK); + } + [Test] public void should_correctly_use_digest_auth() { diff --git a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs index bcac5b42b..08b464b79 100644 --- a/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs +++ b/src/NzbDrone.Common/Http/Dispatchers/ManagedHttpDispatcher.cs @@ -68,8 +68,11 @@ public HttpResponse GetResponse(HttpRequest request, CookieContainer cookies) else if (request.Credentials is NetworkCredential nc) { var creds = GetCredentialCache(); - creds.Remove((Uri)request.Url, "Digest"); - creds.Add((Uri)request.Url, "Digest", nc); + foreach (var authtype in new[] { "Basic", "Digest" }) + { + creds.Remove((Uri)request.Url, authtype); + creds.Add((Uri)request.Url, authtype, nc); + } } }