As I understand it, what you've described is precisely the intent of the
refresh token. The online registration process you refer to is a
corresponding one-time authorization code flow. The authorization code
effectively becomes a one-time-use, short-lived credential for the client
instance which it should use immediately (since it has been exposed to the
resource owner via the user-agent in getting to the client) to directly
request an access token (typically short-lived and may not be needed
immediately) and refresh token (typically long-lived). The refresh token is
stored securely locally. It is essentially an instance secret bound to the
client id and representing the original resource owner grant. Provided:
1. The resource owner and user-agent safely deliver the authorization code
to the client instance in first place
2. The client uses it immediately in secure transport-level communications
to the authorization server and then securely stores the long-lived refresh
token
3. The client always uses the refresh token in secure transport-level
communications to the authorization server to get an access token (and
optionally rollover the refresh token)
.. then securely authenticating the client doesn't seem to be a big deal.

I trust "the list" will correct me if that's a wrong interpretation of a
classic native app scenario.

It still leads to my question from some posts ago about why then is it
advantageous to require client authentication at all for the authorization
code flow in classic web app three-legged scenarios, and I am yet to fully
digest Torsten's response to that (
http://tools.ietf.org/html/draft-lodderstedt-oauth-security-01). About the
only documented advantage I've seen to date has to do with the
recovery/next steps from a compromised refresh token, but the usefulness of
that idea has been debated as well.





From:   Dave Nelson <dnel...@elbrys.com>
To:     Brian Eaton <bea...@google.com>
Cc:     "oauth@ietf.org" <oauth@ietf.org>
Date:   17-06-11 09:45 PM
Subject:        Re: [OAUTH-WG] Client authentication requirement
Sent by:        oauth-boun...@ietf.org



> If you aren't willing to accept the risk of native apps that can't keep
> secrets, don't support such apps.

We continue to say "can't keep secrets".  I think what we mean is
"can't keep secrets that are embedded in the code".  One could imagine
an install-time, leap-of-faith binding to a remotely received secret,
via some on-line registration process, that the native app asks the
operating system to store for it securely.  The user can make an
assertion of trust in the validity of the app that he/she has
downloaded and is subsequently installing.  Of course, that initial
faith might be misplaced, but that's true of almost all
user-installable software, even that receive on physical media.  If
browsers are trusted to store secrets securely, then that same
capability is available to native apps.

Regards,

Dave

David B. Nelson
Sr. Software Architect
Elbrys Networks, Inc.
www.elbrys.com
+1.603.570.2636
_______________________________________________
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