Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit a623ebc

Browse files
committed
make opaque parameter optional
1 parent f8c403f commit a623ebc

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/System.Net.Http/src/System/Net/Http/Managed/AuthenticationHelper.Digest.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,7 @@ public static async Task<string> GetDigestTokenForCredential(NetworkCredential c
9595
return null;
9696
}
9797

98-
string opaque;
99-
if (!digestResponse.Parameters.TryGetValue(Opaque, out opaque))
100-
{
101-
return null;
102-
}
98+
string opaque = digestResponse.Parameters.ContainsKey(Opaque) ? digestResponse.Parameters[Opaque] : null;
10399

104100
string realm = digestResponse.Parameters.ContainsKey(Realm) ? digestResponse.Parameters[Realm] : string.Empty;
105101

@@ -189,7 +185,10 @@ public static async Task<string> GetDigestTokenForCredential(NetworkCredential c
189185
sb.AppendKeyValue(Algorithm, algorithm, includeQuotes: false);
190186

191187
// Add opaque
192-
sb.AppendKeyValue(Opaque, opaque);
188+
if (opaque != null)
189+
{
190+
sb.AppendKeyValue(Opaque, opaque);
191+
}
193192

194193
// Add qop
195194
sb.AppendKeyValue(Qop, qop, includeQuotes: false);

src/System.Net.Http/tests/UnitTests/DigestAuthenticationTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,16 @@ public static IEnumerable<object[]> DigestResponse_Challenge_TestData()
4040
yield return new object[] { "=value1,key2=,", s_emptyStringList, s_emptyStringList };
4141
yield return new object[] { "key1\tm= value1", s_emptyStringList, s_emptyStringList };
4242
}
43+
44+
[Theory]
45+
[InlineData("realm=\"NetCore\", nonce=\"qMRqWgAAAAAQMjIABgAAAFwEiEwAAAAA\", qop=\"auth\", stale=false")]
46+
public async void DigestResponse_AuthToken_Succeeds(string response)
47+
{
48+
NetworkCredential credential = new NetworkCredential("foo","bar");
49+
AuthenticationHelper.DigestResponse digestResponse = new AuthenticationHelper.DigestResponse(response);
50+
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://microsoft.com/");
51+
52+
Assert.True(await AuthenticationHelper.TrySetDigestAuthToken(request, credential, digestResponse, HttpKnownHeaderNames.ProxyAuthorization).ConfigureAwait(false));
53+
}
4354
}
4455
}

0 commit comments

Comments
 (0)