- From: John Panzer <jpanzer@acm.org>
- Date: Wed, 13 Feb 2008 13:55:41 -0800
- To: Ian Hickson <ian@hixie.ch>
- CC: "WAF WG (public)" <public-appformats@w3.org>
- Message-ID: <47B3675D.7040708@acm.org>
Ian Hickson wrote:
> We need a terminology section that defines these terms so we can use them
> in these conversations.
>
> party A: original server
> party B: third-party server, service provider
> party U: user, client, user agent, browser
>
> U visits A, which returns a page that then attempts to communicate with B.
>
>
> On Wed, 13 Feb 2008, John Panzer wrote:
>
>> What mechanism do you propose clients and servers implement use to
>> authenticate users for CSR requests?
>>
>
> HTTP Authentication and/or cookies, like they do now. If the user isn't
> logged in, the third-party server would return an error to the client, and
> the page from the original server would then redirect the user to the
> third-party server (the service provider) to get them to log in.
>
Except that's not what they do now. If you look at the Flickr auth API
for example:
http://www.flickr.com/services/api/auth.spec.html
you'll see that it does use redirects and cookies to establish a user
session at their site. But for the actual API calls, it relies on
signed JSONP cross-domain requests, not cookies, to mitigate request
forgery. Anyone can do a <script src=...> to do a CSR, but without the
appropriate proof that the end user has given permission to that
specific party A via a conversation with party B, the request would just
bounce off. Note that party B is not identified by a URL, but rather
by an API key.
Forcing CSR requests to rely only on cookies would prevent the use of
additional security mechanisms (such as signed requests).
Well, actually it won't, it will just force those security mechanisms to
continue to be stuffed into the URL parameters and/or custom headers.
This has impacts on libraries, proxies, and cacheability.
>
>
>> Because servers have to implement _something_. Realistic mechanisms
>> have to be resistant to distributed brute force attacks even without
>> AC4CSR (thank you, Storm Worm). On a side note, I hope that servers
>> opting in to CSR would never consider using username/password auth on
>> each request. Since it is possible to implement username/password auth
>> in ways opaque to browsers ("&u=foo&pass=bar"), perhaps this is worth a
>> note in the security section.
>>
>
> The original server shouldn't ever have access to the _user's_
> credentials, certainly.
>
Yes, it should. If the user has had a conversation with party B and
elected to share credentials with party A, which is what happens with
Flickr auth today. (Note that 'credentials' in this case are going to
be an opaque and likely limited access token, _NOT_ a password of any kind.)
John
Received on Wednesday, 13 February 2008 21:55:57 UTC