Skip to content

Commit 510d550

Browse files
accept empty realm for digest auth (dotnet#56369) (dotnet#56455)
* accept empty realm for digest auth (dotnet#56369) * accept empty realm for digest auth (dotnet#56369) * accept empty realm for digest auth (dotnet#56369) * accept empty realm for digest auth (dotnet#56369) Co-authored-by: Luca Bompani <[email protected]> (cherry picked from commit b0cea40)
1 parent 7211aa0 commit 510d550

File tree

3 files changed

+7
-5
lines changed

3 files changed

+7
-5
lines changed

src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Authentication.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ public static IEnumerable<object[]> Authentication_SocketsHttpHandler_TestData()
9999
{
100100
yield return new object[] { "Digest realm=\"testrealm\",nonce=\"6afd170437eb5144258b308f7c491d96\",opaque=\"\",stale=FALSE,algorithm=MD5,qop=\"auth\"", true };
101101
yield return new object[] { "Digest realm=\"testrealm\", domain=\"\", nonce=\"NA42+vpOFQd1GwCyVRZuhhy+jDn4BMRl\", algorithm=MD5, qop=\"auth\", stale=false", true };
102+
yield return new object[] { "Digest realm=\"\", nonce=\"NA42+vpOFQd1GwCyVRZuhhy+jDn4BMRl\", algorithm=MD5, qop=\"auth\", stale=false", true };
102103
}
103104
}
104105

src/libraries/Common/tests/System/Net/Http/LoopbackServer.AuthenticationHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ internal static bool IsDigestAuthTokenValid(string clientResponse, string reques
150150
}
151151

152152
// Realm is mandatory.
153-
if (string.IsNullOrEmpty(realm))
153+
if (realm == null)
154154
return false;
155155
}
156156
else if (trimmedValue.StartsWith(nameof(cnonce)))

src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/AuthenticationHelper.Digest.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,7 @@ internal partial class AuthenticationHelper
104104
}
105105

106106
// Add realm
107-
if (realm != string.Empty)
108-
sb.AppendKeyValue(Realm, realm);
107+
sb.AppendKeyValue(Realm, realm);
109108

110109
// Add nonce
111110
sb.AppendKeyValue(Nonce, nonce);
@@ -407,9 +406,11 @@ private unsafe void Parse(string challenge)
407406
break;
408407

409408
// Ensure value is valid.
410-
// Opaque and Domain can have empty string
409+
// Opaque, Domain and Realm can have empty string
411410
if (value == string.Empty &&
412-
(!key.Equals(Opaque, StringComparison.OrdinalIgnoreCase) && !key.Equals(Domain, StringComparison.OrdinalIgnoreCase)))
411+
!key.Equals(Opaque, StringComparison.OrdinalIgnoreCase) &&
412+
!key.Equals(Domain, StringComparison.OrdinalIgnoreCase) &&
413+
!key.Equals(Realm, StringComparison.OrdinalIgnoreCase))
413414
break;
414415

415416
// Add the key-value pair to Parameters.

0 commit comments

Comments
 (0)