John - two separate issues here -

(i) for the symmetric key case, whether we need a key distribution method for the client and AS/RS, and if so, what form should it take?

(ii) asymmetric case is quite different, I agree with your point - the client could be pre-provisioned with a managed key pair (many enterprise cases)
or generate them ephemerally. We dont need a key distribution method here.

Unfortunately, its hard to get away from the symmetric key case, maybe this will change once we have widespread support for ecc.


- prateek
Remember that proof of possession is intended to prove that the client that was 
issued the token is the one presenting it.
We tend to mix that up with replay and other protection issues.

To do this you don't need to authenticate the client.
The client can prove it controls a key by signing something for the 
Authorization server,  the AS then includes the public key in the JWS access 
token.   The client then produces a hash over some number of elements and signs 
that with its private key in a JWS.

With asymmetric there is no need for the AS to produce the key.    Having the 
client produce the key pair is quite traditional proof of possession.

The RS only needs to verify the access token in the way a RS would normally all 
the key distribution can be public as it is public keys.

I have always found the symmetric proof of possession mechanisms to be 
painfully complex to do properly with DH etc.

Encrypting the symmetric key to the RS would work but relays on an implicit 
assumption about what RS the client may present the token to otherwise all the 
RS have to share private keys(probably a bad thing)

John B.

On 2013-02-14, at 4:20 PM, Prateek Mishra <prateek.mis...@oracle.com> wrote:

Justin - my comment was scoped to *key distribution* - not to the general use 
of public clients.

I was wondering how one can distribute keys or have key agreement between an AS 
and a client, if there is no existing trust relationship between them. Maybe 
there is some
clever crypto way of achieving this, but I personally dont understand how this 
might happen.

- prateek

2) Regarding (symmetric) key distribution, dont we need some kind of existing 
trust relationship between the client and AS to make this possible? I guess it
would be enough to require use of a "confidential" client, that would make it 
possible for the two parties to agree on a session key at the point where an access token
is  issued by the AS.
That's a very good question. I have not formed an option about this issue yet 
particularly given the recent capability to dynamically register clients.
I don't think that signing tokens should require confidential clients. This was one of the implementation 
issues with OAuth 1, as it required a "consumer_secret" at all times. This led to Google telling 
people to use "anonymous" as the "consumer_secret" for what were effectively public 
clients. Even with dynamic registration, there's still a place for public clients, in my opinion.

_______________________________________________
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