I like the idea of simplifying the core spec, but the devil is in the details.

In practice it seems onerous to ask the AS and the PR to know both the key used 
to sign the token as well as the key used to sign the request (regardless of if 
the request signing key is the same as the client_secret).

I'm also not sure the bearer token / access token language works even with the 
existing section 5.3. As Dirk points out, choosing to "sign" the request is 
independent of the AS issued token. Does anyone think it is necessary to keep 
the bearer / access token language as is?

FWIW, I'm in favor of moving the request signing into a companion spec.

From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On Behalf Of Dirk 
Balfanz
Sent: Friday, May 21, 2010 1:29 PM
To: Richer, Justin P.
Cc: OAuth WG
Subject: Re: [OAUTH-WG] proposal for factoring out request signing in OAuth 2

That would be fine with me, but I think people really like to have signatures 
as a part of core OAuth. I don't feel strongly about it either way.

One nit-pick, though: the other spec (which, in my proposal, is simply a new 
section in the OAuth spec), wouldn't be about "signed tokens". The way I see 
it, there should be only one kind of token - you can't use it to sign things, 
you simply include it in your requests. Whether those requests come in the 
clear, over SSL, or are otherwise signed, is a different question. The token 
shouldn't have anything to do with request signing: In the case of SSL, for 
example, the requests are signed (using a shared secret negotiated during the 
SSL handshake), but the token has nothing to do with that signature. In the 
case where we don't use SSL, yet still want to sign the requests, the same 
should be true: the signature on the request should have nothing to do with the 
token - the token and the signature serve two different purposes.

Fortunately, we have a secret we can use for the signature: the OAuth client 
secret (and hopefully, in a future rev of the spec, the client private key) - 
so it makes sense to make this request signing be at least a companion spec to 
OAuth, if not a section of the spec itself.

Dirk.
On Fri, May 21, 2010 at 11:27 AM, Richer, Justin P. 
<jric...@mitre.org<mailto:jric...@mitre.org>> wrote:
I have a slightly more radical proposal. What if we factor out the signed token 
use case into a parallel spec? The OAuth 2.0 Signed Token spec, given the same 
attention by the group and all that like Eran was talking about yesterday. What 
this would take is taking out all reference to signing and making core OAuth 
just about bare tokens, then have a separate spec that details what to call 
your shared secret parameters, how to get them, and how to sign with them. This 
makes the core spec a lot simpler (as detailed below) but makes the overall use 
case of using signed tokens more complicated to follow, as it'd be split in two.

 -- justin
________________________________________
From: oauth-boun...@ietf.org<mailto:oauth-boun...@ietf.org> 
[oauth-boun...@ietf.org<mailto:oauth-boun...@ietf.org>] On Behalf Of Dirk 
Balfanz [balf...@google.com<mailto:balf...@google.com>]
Sent: Thursday, May 20, 2010 7:39 PM
To: OAuth WG
Subject: [OAUTH-WG] proposal for factoring out request signing in OAuth 2
Hi guys,

at today's interim meeting, we were discussing Brian Eaton's proposal for OAuth 
signatures. He was proposing a mechanism that would (1) do away with base 
string canonicalization, (2) allow for symmetric and public keys, and (3) allow 
for extensibility.

He got homework from the group to prove the feasibility of his proposal by 
showing a couple of implementations.

In this post, I would like to introduce another improvement of the OAuth 2 
signing mechanism, one which is orthogonal to Brian's proposal (i.e., it would 
work both with the signing mechanism in the current spec, as well as with 
Brian's signature mechanism). The goal of my proposal is twofold:

- it simplifies the spec. It will become more readable and therefore easier to 
implement
- it separates out the mechanisms for delegated authorization and for integrity 
protection into two independent pieces, which can be put together by Servers 
and/or Clients like LEGO blocks.

Summary:

- use the client secret instead of the token secret for signing PR access 
requests.

Long version of the proposal:

- remove all references to access tokens that are not bearer tokens from the 
spec.
- stop calling the access tokens "bearer tokens". Call them just "access 
tokens".
- remove all references to token secrets from the spec
- remove all parts of the spec that are of the kind "if bearer_token then X, 
else Y", and replace them with X.
- delete section 5.3
- add a section called "Request Authentication" that goes something like this:

"Servers may require that requests be authenticated by the Client, so that 
presentation of the access token alone is not sufficient to access a Protected 
Resource.  This has several use cases, including, but not limited to, the 
following:

- Non-repudiation: high-security deployments may require that requests be 
authenticated (signed) in a non-repudiateable way[1]
- Access to protected resources is not protected by SSL, so that access tokens 
may leak.
- End-to-end-integrity: even if SSL _is_ used, network infrastructure may strip 
SSL protection before the request reaches the protected resource. The protected 
resource, however, may require end-to-end integrity.

If the Server requires that the Client authenticate PR access requests, then 
the Client uses the following mechanism to sign their HTTP requests: [...]"

Then, we basically drop the old Section 5.3 here (except we use the client 
secret instead of the access token secret). Eventually, instead of Section 5.3, 
we may have Brian's new signature scheme section here, which would add the 
option of public-key crypto[1], etc.

What do you guys think?

Dirk.

[1] Technically speaking, the goal of non-repudiation can only be achieved once 
we have public-key crypto.

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

Reply via email to