What if we simply declare that refresh tokens are always bound to the DPoP key 
used to request them? Is there value in NOT binding the refresh token?

As for access tokens, the way I read it, all of this is true:

- The AS could still decide to issue a Bearer token, using the token_type 
field, for whatever policy reason.
- A client getting back a Bearer token from a DPoP request would do Bearer 
headers. 
- A client getting a DPoP token from a DPoP request would do DPoP headers.
- An client should never send a DPoP token as a Bearer header.
- An RS should ALWAYS look for a DPoP binding signature from a DPoP scheme 
token. Missing that is an error.

So if we just declare that a refresh token must always be DPoP bound when DPoP 
is used to request it and a refresh token is issued, then we’re in the clear 
here, as best as I can tell, and it allows the AS some flexibility.

Some problems with this:

1) Pretty much every single OAuth client in the world ignores the “token_type” 
field. But clients being updated to support DPoP wouldn’t ignore it, so that’s 
probably ok.
2) If we wanted to make refresh token binding switchable we’d need a 
“refresh_token_type” field or similar, and the client would need to know how to 
understand it and deal with its absence (since most servers won’t send it).
3) This presumes the client will not rotate its key before using the refresh 
token. If it does it’ll have to do a whole new grant.
4) None of this prevents an RS from ignoring the DPoP signature, but I think 
that’s a separate problem.
5) It’s arguable that we’d want a client to be able to bind a NEW DPoP key 
during a refresh, using the old key as proof for the refresh token and the new 
key going forward. Is this a case we want to enable?

 — Justin

> On Jun 7, 2020, at 3:22 AM, Torsten Lodderstedt 
> <torsten=40lodderstedt....@dmarc.ietf.org> wrote:
> 
> That’s correct for confidential clients.
> 
> For a public client, the refresh token is just bound to the client id. DPoP 
> allows binding to an ephemeral key pair for this kind of clients.
> 
>> Am 07.06.2020 um 00:57 schrieb Francis Pouatcha 
>> <fpo=40adorsys...@dmarc.ietf.org>:
>> 
>> 
>> 
>> > Am 05.06.2020 um 22:17 schrieb George Fletcher 
>> > <gffletch=40aol....@dmarc..ietf.org <http://ietf.org/>>:
>> > 
>> > Secondly, I do think we need a way to allow for the refresh_token to be 
>> > bound while leaving the access_tokens as bearer tokens. This adds useful 
>> > security without impacting existing RS deployments.
>> 
>> +1 that’s a very useful 
>> feature_______________________________________________
>> AFAIK a refresh_token is always bound. What am I missing here?
>> -- 
>> Francis Pouatcha
>> Co-Founder and Technical Lead at adorys
>> https://adorsys-platform.de/solutions/ 
>> <https://adorsys-platform.de/solutions/>_______________________________________________
> 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