- what are the new parameters to makeRequest, and how are they
interpreted by the server?
- how should the gadget rendering server decide whether a particular
user is allowed to use an OAuth access token issued to another user?
Let me see if I understand: both the viewer's and the owner's access
tokens would be available to the gadget.
That's not backwards compatible with what we have today, where only
the owner's access token is ever used. If someone has written a
gadget that (for security reasons) depends on the viewers token not
being usable, that gadget would become insecure by virtue of this
change.
In general I'm suspicious of changes that are not backwards compatible.
Cheers,
Brian
I want to make sure I am following this as well. I do see an issue if a separate token is used for owner or viewer w/out the context of the app id, in which a viewer could forge a makeRequest using another user’s owner token or their own viewer token to an app they don’t typically have. This shouldn’t be an issue if the app id is part of the data in the encrypted token and both ids are verified.
Am I missing something here?
- OAuth access tokens are owned by the combination of
container/application/user, with the service provider having the power
to revoke the token at any time as well.
- access tokens may only be approved on pages where the owner and the
viewer are the same
- applications only get to use access tokens that were issued to them,
not to other applications
- applications may use the access token of either the owner or the viewer
(Only the last one is a change from the status quo, in Shindig at
least. Shindig currently only allows the access token of the owner to
be used.)
Cheers,
Brian
Scoping rules of some type make sense, but the complexity worries me.
How are we going to explain to people that we are putting access
controls in a gadget server that apply to access tokens to some third
party site?
I'd like to see some really good use cases before we went this route.
Definitely not possible with the current specification. We could
write an OAuth extension, but why would service providers support it?
If I understand correctly, the argument is that if Alice can view
Bob's page, then Bob can always view Alice's page. So whatever data
we're trying to keep away from Bob by letting the gadget not have
access to Alice's token when she views his page - Bob can easily
access that data by simply going to Alice's page. So there is no
reason to withhold the viewer's token from a gadget, hence any gadget
that has access to the owner's token might as well be given access to
the viewer's token. Did I get that right?
Note that the reverse isn't true: a gadget that for some reason _only_
should be given access to the viewer's token shouldn't also
automatically have access to the owner's token.
I would like to point out that using the viewer's access token
(instead of the owner's access token) is only a special case of
allowing gadgets to use _arbitrary_ users' tokens (say, one of the
owner's friends). I'd like to see us solving this problem in the
general case (i.e. let the gadget ask for anyone's token and have an
access control story that goes with that), which would allow secure
gadget-side mash-ups.
Dirk.
On Thu, May 22, 2008 at 9:44 AM, Brian Eaton <bea...@google.com> wrote:
>
Hrm. Not sure. You're assuming that because a gadget is on an
owner's page, the owner has control of the gadget. That's not true
today.
> Note that the reverse isn't true: a gadget that for some reason _only_
> should be given access to the viewer's token shouldn't also
> automatically have access to the owner's token.
This I agree with completely. Oddly enough, our initial spec said the
owner's token is always available, because there were interesting apps
you could build based on that rule. I'm not inclined to back away
from the "owner's token is always available" rule until somebody
discovers an interesting use case for it.
> I would like to point out that using the viewer's access token
> (instead of the owner's access token) is only a special case of
> allowing gadgets to use _arbitrary_ users' tokens (say, one of the
> owner's friends). I'd like to see us solving this problem in the
> general case (i.e. let the gadget ask for anyone's token and have an
> access control story that goes with that), which would allow secure
> gadget-side mash-ups.
I'm worried about the complexity of that access control scheme vs the
functionality it gives.
Doesn't that depend on the container? But even without that assumption
- for the two principals involved (Alice and Bob), the data they can
see is exactly the same if (a) the gadget only has access to the pager
owner's tokens or (b) the gadget has access to both the page owner and
page viewer's tokens. Namely, they can see both Bob's and Alice's data
(because the friend relation is symmetric): In case (a), Alice has to
visit her own page to see her data, and Bob's to see his (and vice
versa), whereas in (b), Alice can see both users' data by going just
to Bob's page (and vice versa).
>> I would like to point out that using the viewer's access token
>> (instead of the owner's access token) is only a special case of
>> allowing gadgets to use _arbitrary_ users' tokens (say, one of the
>> owner's friends). I'd like to see us solving this problem in the
>> general case (i.e. let the gadget ask for anyone's token and have an
>> access control story that goes with that), which would allow secure
>> gadget-side mash-ups.
>
> I'm worried about the complexity of that access control scheme vs the
> functionality it gives.
Gadget-side mashups! What more in "functionality" do you want? :-)
Dirk.