WWW-Authenticate header API : get/setURI

Jeroen van Bemmel <[email protected]> Wed, 29 Aug 2007 19:53:43 +0200
Newsgroups gmane.comp.voip.nist-sip
Message-ID <[email protected]>
All,

Ran into a minor issue today that I thought I might share here, at least 
to document it

The WWWAuthenticateHeader and its derived class ProxyAuthenticateHeader 
have methods 'URI getURI' and 'setURI(URI)' for the "uri" parameter, 
which typically gets set to the request URI.

However, today I encountered a client that used a value like "string" 
for this parameter, not a valid URI. I checked with RFC3261, which 
defers to RFC2616 (HTTP 1.1) which in turn points to RFC2396 (general 
URI syntax)

RFC2616 section 5.1.2 defines Request-URI as:
Request-URI    = "*" | absoluteURI | abs_path | authority

RFC2396 defines authority as:
authority     = server | reg_name
reg_name      = 1*( unreserved | escaped | "$" | "," |
                           ";" | ":" | "@" | "&" | "=" | "+" )

so, strictly speaking, "string" is indeed a valid value for the "uri" 
parameter.

getURI() throws a ParseException when the value does not contain a valid 
scheme part (i.e. "scheme:something").

In order to fix this, in a future version of the API, getURI/setURI 
should be defined as using a String for parameter. Perhaps we should 
create new methods e.g. "getURIString" and "setURIString", and deprecate 
the existing ones.

Regards,
Jeroen