[cosmo-dev] Basic Auth is sooo 1996

Travis Vachon travis at osafoundation.org
Wed Nov 28 12:51:02 PST 2007


Whahoo!

I've figured out that this last problem is easily solved by making  
sure the server's default character encoding is utf-8 (ie, adding - 
Dfile.encoding=UTF-8 to OSAFSRV_OPTS in osafsrvctl).

I'd like to update osafsrvctl to make sure this happens, is there any  
reason anyone can think of not to always run with utf-8 as our default  
char encoding?

As a bonus, I'm pretty sure this will let us close out the OSX bug  
with unicode in note titles/bodies we futured a while ago.

-Travis

On Nov 27, 2007, at 6:29 PM, Travis Vachon wrote:

> Hi everyone
>
> I've been wrestling with bug 11100 (unicode characters in username  
> cause login to fail) for a day or so and wanted to let folks know  
> how the work is going and solicit some thoughts on next best steps.
>
> I've been able to iron out all of the issues we had regarding exotic  
> characters (that is, unicode characters that are not url-safe) in  
> urls and url-encoded post content, allowing users with exotic  
> characters in their usernames to log in. Unfortunately, the user  
> experience goes downhill from there.
>
> To fully understand why I need to wax technical on HTTP Basic auth  
> for a second, please bear with me (note that some of this is a  
> repeat of an email I sent earlier in the week, but the denouement  
> will be different):
>
> RFC 2617 specifies the value of the Authorization header for Basic  
> authentication as:
>      credentials = "Basic" basic-credentials
>      basic-credentials = base64-user-pass
>      base64-user-pass  = <base64 encoding of user-pass>
>      user-pass   = userid ":" password
>      userid      = *<TEXT excluding ":">
>      password    = *TEXT
>
> where TEXT is defined in RFC 2616 as follows:
>
>   The TEXT rule is only used for descriptive field contents and values
>   that are not intended to be interpreted by the message parser. Words
>   of *TEXT MAY contain characters from character sets other than ISO-
>   8859-1 [22] only when encoded according to the rules of RFC 2047
>   [14].
>
>       TEXT           = <any OCTET except CTLs,
>                        but including LWS>
>
> Since in this case userid contains a non-ISO-8859-1 character,  
> according to the spec we should use RFC 2047 to encode the userid  
> and password before creating the user-pass token, which will look  
> something like:
> userid: =?utf-8?Q?=E2=80=A0ravis?=
>
>
> Unfortunately, the RFC 2047 encoding portion of this algorithm is  
> not supported in any client I tested (Firefox, Safari, python  
> httplib2) or Acegi's BasicProcessingFilter.
>
> From this thread:
>
> http://lists.osafoundation.org/pipermail/ietf-http-auth/2006-September/000374.html
> (in particular http://lists.osafoundation.org/pipermail/ietf-http-auth/2006-October/000393.html)
>
> it appears that a) other folks have noticed this and b) we aren't  
> likely to see a standardized solution before the next version of  
> HTTP. For Mozilla's experiences with this same problem, see here:
>
> http://lists.osafoundation.org/pipermail/ietf-http-auth/2006-October/000393.html
>
>
> There is one silver lining in this story: I peeked at the Acegi  
> BasicProcessingFilter code and it appears that simply using raw  
> utf-16 encoded userid and password strings should work. There's no  
> real spec-provided reason to do this, but in this case "it works"  
> seems as a good a reason as any. This will require a some tweaks in  
> the current client side base64 encoding code but shouldn't be too  
> tricky.
>
>
> Going forward I'd recommend the following:
>
> 1) Make the tweak to our client side base64 encoding algorithm to  
> get this working in our application
> 2) I think this provides yet another reason we should look into  
> alternate authentication mechanisms a la WSSE (http://www.xml.com/pub/a/2003/12/17/dive.html 
> ) or Google's authentication scheme. The first step I'd like to take  
> in this vein is to read some of the archives of the ietf-http-auth  
> mailing list to come up to speed on http authentication proposals  
> and report back here.
>
> If there is general support for the idea I'd be happy to ditch (1)  
> and go straight to (2), making a new authentication scheme a prereq  
> for unicode username support. Otherwise I think this ordering (short  
> term hack + starting work on real solution) makes sense.
>
>
>
> Any thoughts?
>
> -Travis
>
> _______________________________________________
> cosmo-dev mailing list
> cosmo-dev at lists.osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/cosmo-dev



More information about the cosmo-dev mailing list