[9] RFR: 8138990: Implementation of HTTP Digest authentication may be more flexible
Michael McMahon
michael.x.mcmahon at oracle.com
Thu Jan 21 11:41:55 UTC 2016
Artem,
The change looks fine.
Thanks,
Michael
On 04/01/16 18:39, Artem Smotrakov wrote:
> Hi Michael,
>
> On 01/04/2016 02:28 AM, Michael McMahon wrote:
>> On 30/12/15 03:22, Artem Smotrakov wrote:
>>> Hi Michael,
>>>
>>> Thanks for review, it looks like BNF notation uses only a comma as a
>>> separator
>>>
>>> http://www.w3.org/Notation.html
>>>
>>> ...
>>> <l>#<m>element
>>>
>>> indicating at least l and at most m elements, each separated by one
>>> or more commas (",").
>>> ...
>>>
>>
>> Hi Artem,
>>
>> The BNF definitions used in RFC 2617 come from section 2.1 of RFC 2616
>> which allows linear white space between tokens.
>>
>> #rule
>> A construct "#" is defined, similar to "*", for defining lists of
>> elements. The full form is "<n>#<m>element" indicating at least
>> <n> and at most <m> elements, each separated by one or more commas
>> (",") and OPTIONAL linear white space (LWS).
> If I read it correctly, it means that a comma is used as a separator,
> but there also may be a linear whitespace after a comma. So for
> example "auth,auth-int" and "auth, auth-int" are equal, and should
> result to a list of two elements. Current version of webrev seems to
> follow it (first, it splits a string by a comma, and then ignores
> white spaces):
>
> http://cr.openjdk.java.net/~asmotrak/http_auth_digest/webrev.01/
>
> Am I missing something?
>
> Artem
>
>>
>> So, I think we should be conservative and check for white-space.
>>
>> - Michael.
>> Michael
>>> And here is "qop" definition from https://tools.ietf.org/html/rfc2617
>>>
>>> ...
>>> qop-options = "qop" "=" <"> 1#qop-value <">
>>> qop-value = "auth" | "auth-int" | token
>>> ...
>>>
>>> Please take a look at updated webrev:
>>>
>>> http://cr.openjdk.java.net/~asmotrak/http_auth_digest/webrev.01/
>>>
>>> Artem
>>>
>>> On 12/22/2015 05:59 AM, Michael McMahon wrote:
>>>> Hi Artem,
>>>>
>>>>
>>>> On 04/12/15 11:41, Artem Smotrakov wrote:
>>>>> Hello,
>>>>>
>>>>> Please review this small fix for DigestAuthentication class.
>>>>>
>>>>> 1. Added a check in DigestAuthentication.setNonce(String) that
>>>>> nonce is not null. NPE may happen if a buggy HTTP server returns
>>>>> "WWW-Authenticate" header which doesn't contain a "nonce" field.
>>>>> According to RFCs 2069 [1] and 2617 [2], this is not expected
>>>>> behaviour, but it would be better if an HTTP client threw a
>>>>> checked IOException instead of NPE.
>>>>>
>>>>
>>>> That's fine.
>>>>
>>>>> 2. Updated DigestAuthentication.setQop(String) method to accept
>>>>> both a whitespace and a comma as a delimiter. RFC 2617 [2] says
>>>>> that "qop" may contain more than one token, but it doesn't specify
>>>>> a delimiter for "qop" field in "WWW-Authenticate" header. There is
>>>>> an example of "WWW-Authenticate" header in RFC 2617 [2] where a
>>>>> comma is used as a delimiter of value in "qop" field.
>>>>>
>>>>
>>>> It looks like the BNF specification mandates a comma and optional
>>>> linear white space.
>>>> So, the old code was buggy, but we didn't see the problem because
>>>> there is typically
>>>> only at most ever one value used for the qop field. But, to be
>>>> strictly correct, we would
>>>> have to check for TABs also. So, I think the correct behavior is to
>>>> delimit using comma
>>>> and remove any white space
>>>>
>>>> - Michael.
>>>>
>>>>> 3. Added a test for Digest authentication.
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8138990
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~asmotrak/http_auth_digest/webrev.00/
>>>>>
>>>>> [1] https://tools.ietf.org/html/rfc2069
>>>>> [2] https://tools.ietf.org/html/rfc2617
>>>>>
>>>>> Artem
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/net-dev/attachments/20160121/2f29de8c/attachment-0001.html>
More information about the net-dev
mailing list