Ok, I'm creating a new posting for this feedback. :)

Here's where I probably just need some enlightenment, so please help me
out.

Re 8. Refresh Tokens

   "For public clients, the risk of a leaked refresh token is much
   greater than leaked access tokens, since an attacker can potentially
   continue using the stolen refresh token to obtain new access without
   being detectable by the authorization server.  "

(first, note the typo "stoken".)

Is it always "higher risk"?  I could even argue that leakage of a refresh
token is lower risk. As a bearer document, a leaked access token allows
access to resources until it expires.  A leaked refresh token, to be
useful,  requires an exchange with the AS, and the AS would have the
opportunity to check whether the refresh token is still valid (has not been
revoked).  (of course revocation might NOT have happened, but then again,
it might have.)

Furthermore, since the access token is transmitted to other servers, the
risk of exposure is greater, due to possible vulnerabilities in those
called systems (e.g., logs).  Isn't this the reason that we have refresh
tokens? Don't refresh tokens exist because access tokens should have short
TTL, because they are widely distributed?

"Additionally, browser-based applications provide many attack vectors by
which a refresh token can be leaked."

The risks of leaking a refresh token from the browser are identical to the
risks of leaking an access token, right?  This sentence could be changed to
"... by which *a token* can be leaked."

A refresh token is "higher risk" because its TTL is usually greater than
the access token's TTL.  But if our advice here leads to people using
longer-lived access tokens (because of the problems with getting a new
access token without involving the user), then the advice will be counter
productive.   The longer life gives more time for the usefulness of a
browser-side theft, and more time for the usefulness of a server-side
theft.

Which scenario is safer?

A) using an access token with a 10 minute TTL, accompanied by a refresh
token with a 1 hour TTL
B) using an access token with a 1 hour TTL, and no refresh token.

I'd say that A is safer. (Unless, when the refresh token is used, a new
refresh token is issued, the NEW refresh token gets another 1 hour.  If
this is the case, one could maintain refresh tokens infinitely. Is this
point addressed somewhere?)
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to