Actually, in this case, I'm imagining a base page that is heavily cached (and non-personalized), perhaps delivered by CDN, non-SSL. The rendered page then wants to make an authorized cross-domain call to the Service Provider, personalized to the currently logged-in user.

I don't think one-time bearer tokens are appropriate here, because I would need to send the user through a refresh or reacquisition flow for every call, which kind of defeats the point.

I am ok with this generating a non-HTTP AJAX origin request to obtain a tokenized or signed URL; this can likely be served without significant I/O if I have the appropriate tokens and secrets cached in memory. However, the resulting URL must be redeemable without access to the Authorization header, as I'm going to need to include it in a <script> tag (equivalently, make the JSONP call with a script insert against the origin that redirects to the authorized resource -- again, no access to the Authorization header).

For scale reasons, I don't want to proxy the call through my origin; that holds the origin request open while I am waiting for the Service Provider to return.

Cookies don't work here, because I as the origin can't set cookies for the SP's domain.

As I think about it here, I don't think bearer tokens are appropriate, as they require SSL for this sequence to work.

While I can appreciate that the spec is much simpler without the query parameter signatures, I think I'm back to needing to be convinced that my use case can be addressed without them and with similar operational and scaling characteristics to what is available in OAuth 1.0a.

"As simple as possible, but no simpler."

Jon
........
Jon Moore


On Apr 11, 2010, at 3:06 PM, "Torsten Lodderstedt" <tors...@lodderstedt.net > wrote:

I don't know if we are really done. Does the current draft already consider one-time tokens? How does a client acquire one-time tokens?

Moreover, I would prefer the signature solution because of the increase in load caused by the acquisition of multiple one-time tokens.

Apart from that, another possible solution occured to me. Would it be possible to use a cookie containg a token instead of constructing URLs carrying different tokens?

The origin server could acquire an ordinary bearer token and store it within a cookie. If the JavaScript code sends HTTP requests and the target domain matches the browser should automatically add the cookie to every call thus sending the token with every request. The origin server would need to refresh the token periodically in order to prevent abuse of the token.

Would this work?

regards,
Torsten.

Am 10.04.2010 15:13, schrieb Moore, Jonathan:

Ok, thanks - I was missing the possibility that bearer tokens could be single use. I agree this covers my use case adequately, so I am now definitely +1 for simplifying the spec in this way.

Thanks for bearing (pun intended) with me.

Jon

........
Jon Moore


On Apr 10, 2010, at 3:30 AM, "Torsten Lodderstedt" <tors...@lodderstedt.net > wrote:

From my point of view, your use case can be implemented in two ways

1) tokenized & signed URLs provided by your origin server
2) URLs with one-time usage bearer tokens as parameter acquired by your origin server

I see the following pros/cons:

Load: (2) requires the origin server to acquire one token per link on your page from the auth server, which may cause a lot of load on the authz server :-(. (1) only needs to obtain a single token since the signature is calculated by the origin server locally. This might be much better from a load perspective.

Security: As a further downside (2) either requires HTTPS communication for the whole page or you acquire the URL with one- time usage bearer token over HTTP. Acquisition from authz server can still be performed over HTTPS. If this acceptable depends on your security considerations.

Comments?

regards,
Torsten.

Am 10.04.2010 03:34, schrieb Moore, Jonathan:

However, this doesn't address my earlier use case of a signed, cross-domain JSONP call, especially if it's sitting on a non- HTTPS page; I need to make a non-HTTP XHR request to obtain a (signed or tokenized) URL to include in my <script> include, so requiring a bearer token and SSL basically forces me to have the whole page delivered over HTTPS, which may be overkill for my application.ÂÂ

While I can understand that token and secret acquisition might need SSL, always requiring it on authorized requests too seems too much.

Can someone explain/re-explain why query parameter signatures need to be eliminated? The Authorization header is great when you can manipulate it, but you can't always. Why is it problematic for the signatures to be able to appear in either place?

Jon

........
Jon Moore


On Apr 9, 2010, at 1:39 PM, "Eran Hammer-Lahav" <e...@hueniverse.com > wrote:

In practice this is the same as logging in which I expect to require SSL anyway. Signed or not, attackers should not be able to login to your email account simply by using a MITM attack when you click on your IM client. So SSL is required already.

EHL


On 4/9/10 7:30 AM, "George Fletcher" <gffle...@aol.com> wrote:

Yes, this is possible, though to be secure it should really happen over SSL which is less of a requirement for a signed request.

I guess the main question is whether we really need to remove the signature related parameters from URL and only allow them in the Authorization header. For signed requests, these use cases pretty much require that the signature parameters be allowed in the URL.

Obviously, if we change our model to not use signed URLs then this issue goes away:)

Thanks,
George

On 4/9/10 12:58 AM, Brian Eaton wrote:

On Thu, Apr 8, 2010 at 7:08 AM, George Fletcher <gffle...@aol.com> <mailto:gffle...@aol.com>  wrote:
 ÂÂ
ÂÂ

I realize that these sorts of use cases are trivial if establishment of the SSO session switches from a signed mechanism to the OAuth WRAP bearer token model. The one nice feature of the signed URL is that it is one time use
where the bearer token can be replayed multiple times.
   ÂÂ
ÂÂ


Yep, Google does this kind of thing too.

Is there something that stops you from declaring that a particular
token is single use?

1) Client makes call to Authorization server, passing in either the refresh token or an access token (depending on the security model you
want.)
2) AS returns a token.
3) Client uses the token to pop open a web browser.

Cheers,
Brian

 ÂÂ


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

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




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

Reply via email to