Re: #481, was: WGLC: p7 MUSTs

On 06/09/2013 10:57 AM, Julian Reschke wrote:
> On 2013-05-01 07:09, Alex Rousskov wrote:
>> And here is a list of requirements that are missing an explicit actor on
>> which the requirement is placed. Even though it is often possible to
>> guess the actor, most of these should be easy to rephrase to place the
>> requirement on the intended actor explicitly (e.g., "A proxy MUST"
>> instead of "a header field MUST":
>>
>>> each parameter name MUST only occur once per challenge
> 
> That's a requirement on the validity of a challenge. 

Yes. We need to make clear which actors that requirement applies to.


> As such it does not depend on the actor.

It does. When I originally complained that lots of RFC 2616 MUSTs may be
interpreted as if they apply to proxies when they should not and
suggested a general rule to excuse proxies from policing traffic, I was
told that a better approach is to check each and every MUST to make sure
it is clear whether it applies to blind forwarding situations or not.
The current HTTPbis specs use that overall approach via the introduction
of "sends" vs "generates" difference (thank you!).

However, to enable such checks, each MUST has to have an actor with
"sends", "generates", or another appropriate keyword. Otherwise, it is
not clear whether the proxy is responsible for policing things like
challenges with duplicate parameter names. The overhead of checking and
adjusting each requirement comes with the approach. You cannot have it
both ways.


>>> This response MUST include a WWW-Authenticate header
>>
>>> The 407 (Proxy Authentication Required) response message [...] MUST
>>> include a Proxy-Authenticate header field
>>
>>> information necessary to authenticate a request MUST be provided in
>>> the request
>>
>>> It MUST be included as part of a 407 (Proxy Authentication Required)
>>> response.
>>
>>> It MUST be included in 401 (Unauthorized) response messages
> 
> Similar things can be said about these.

Yes, the flaw is similar.


> What you seem to ask for is information about what a proxy should do
> when it receives a message that already violates a MUST level
> requirement.

No, I am not asking for that. I am asking to make it possible to
determine whether a proxy forwarding a malformed message is in violation
of the specs. As discussed above, each requirement has to be clear on
that by using appropriate actors and verbs.

If you say "server MUST NOT send X", the proxy becomes responsible for
not forwarding X. If you say "server MUST NOT generate X", the proxy
forwarding behavior is not restricted by that specific requirement. When
you say "request MUST NOT have X", the specs become ambiguous: some will
claim that a proxy forwarding X is in violation and some will claim that
the requirement is not applicable to proxies.


Hope this clarifies,

Alex.

Received on Sunday, 9 June 2013 18:50:36 UTC