Thanks for explaining, I now believe I understand the use case.

But I would point out that this is really an unsolved problem in general and if 
we are to tackle it we have to deal with real concerns such as – what happens 
if in the time since the site list was provided and when the token was used the 
list was changed? If an attacker now controls a previously listed site then the 
attacker can just swallow the bearer token and do bad things. So now we have to 
think about expiration information on the site list or a revocation mechanism 
or some kind of negotiation.

One wonders if it wouldn’t be simpler for clients that are in doubt to just 
make another token request to the original service’s token issuer with a scope 
for the desired site. That works with the existing protocol and mitigates the 
previous attack.

                                Just a thought,

                                                Yaron


From: Manger, James H [mailto:james.h.man...@team.telstra.com]
Sent: Monday, May 10, 2010 5:31 PM
To: Yaron Goland; OAuth WG (oauth@ietf.org)
Subject: RE: sites with wildcard

Yaron,

> I don’t understand the scenario that requires this feature. When does someone 
> ask for a token without knowing where it is going?

Example:
A client app gets a token to make an API call to a protected resource that 
returns an Atom feed.
The feed contains lots of entries, with links to photos, style sheets, and 
scripts.
The client app gets the photos.

Should it send the token when getting the photos?

On service A the Atom feed and the photos are all served from the same HTTPS 
host, with the same protection, so the token must be sent.

On service B the photos are hosted on a separate outsourced content 
distribution network. The photos are protected by using long unguessable URIs 
(the URIs are effectively “capabilities” to read the photos). The token does 
not need to be sent.

On service C the photos are any images from anywhere on the Internet that the 
user has chosen to link to. The Atom collection is protected, but not the 
photos. The token absolutely must not be sent when getting the photos.


A client app needs to know whether the service it is accessing is like A, B, or 
C. It needs to know for redirects, for links in HTTP headers, for links to 
images, for any other sort of link that is can derive from the response.

Some services might be completely walled gardens so the client can assume they 
are like A.
Some services might explicitly state in their documentation: which links and 
redirects are always guaranteed to be other API calls (send the token); which 
will always be to other security contexts (don’t send the token); and which 
might be either (don’t send the token, see if you get a 401/403, guess, send 
the token).

In general, the web is about following links. Clients need to know when 
following a link crosses a security boundary. Cookies provide this; Basic 
provides this; Digest provides this; OAuth needs this too.


--
James Manger
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to