Re: [OAUTH-WG] DPoP - Downgrades, Transitional Rollout & Mixed Token Type Deployments

2020-06-11 Thread Brian Campbell
The current draft (draft-ietf-oauth-dpop-01) does say that when a valid
DPoP proof is presented and refresh token is issued to a public client, the
refresh token must be bound to the DPoP key. So that part is already
covered in the document. And, for whatever it's worth, that pretty closely
mirrors how it works with MTLS, public clients, and RTs. If there are
specific suggestions as to how to make it more clear, they'd of course be
welcome.

The text in draft does need to be updated to better account/allow for, as
Justin said, the "AS could still decide to issue a Bearer token, using the
token_type field, for whatever policy reason." I'd sort of thought it
already did and it was the intent but, on reading again, there's definitely
some text that needs to be fixed. That should help better facilitate mixed
or rollout deployments by letting the AS decide to bind ATs or not based on
resource or scope requested or other policy.

Also to help facilitate mixed or rollout deployments, I'm not sure about
"An client should never send a DPoP [bound access] token as a Bearer
header."  Such a constraint could be put on the client but it seems
unhelpful. A bad acting client could easily ignore it and I'm not sure what
it accomplishes if/when followed. Following from
https://github.com/danielfett/draft-dpop/issues/58 the draft needs to be
updated to say explicitly that an RS supporting both Bearer and DPoP
schemes simultaneously needs to update its Bearer token evaluation
functionality so as to reject tokens that are dpop bound. But the draft
can't really impose anything on existing RSs supporting only Bearer (and
unaware of DPoP). And such RSs will most likely accept a DPoP bound AT when
send via the Bearer scheme (JWT says to ignore unrecognized claims,
introspection says other parameters might be present, and 6750 is basically
silent on the content of the AT, which is where the binding is carried).
This admittedly doesn't seem quite right. But there's nothing this draft
can realistically do about it. And I think it can help with mixed or
rollout deployments. Especially those where sufficient information about
what RS(s) the requested token is for are not available in the token
request for whatever reason. Currently the draft is silent about it and
maybe that's as it should be. But I'm suggesting in a few messages on this
thread that the definition of the DPoP token_type would prescribe sending
the access token with the DPoP authorization scheme in conjunction with the
DPoP header but also say that, if that was met with a 401 WWW-Authenticate:
Bearer challenge by a particular RS (or the client had prior such knowledge
about the RS), that the access token could be sent using the Bearer
authorization scheme.

It is correct that, as currently written in the draft, a public client with
a DPoP bound refresh token will have to use the same key for the lifetime
of the grant. That seemed like a good tradeoff vs. defining a mechanism for
key rotation for the public client refresh token case where two proofs (one
to verify the binding for the RT being sent and one to newly bind the RT
to) would be presented on refresh grant type request. I tend to think where
it is now hits the right balance in functionality and complexity. But if
there are strong beliefs otherwise, let's discuss the need and cost/benefit
and all that.



On Thu, Jun 11, 2020 at 1:26 AM Neil Madden 
wrote:

> +1
>
> > On 11 Jun 2020, at 07:36, Torsten Lodderstedt  40lodderstedt@dmarc.ietf.org> wrote:
> >
> > I generally agree with the proposal, but I would suggest to limit it to
> public clients.
> >
> > In case of confidential clients, the refresh token is (via the
> client_id) already bound to the client’s secret(s) and those can be
> rotated. Additionally binding the refresh token to a DPoP key would limit
> it’s applicability w/o a benefit.
> >
> >> On 11. Jun 2020, at 01:35, Francis Pouatcha  wrote:
> >>
> >>
> >> On Wed, Jun 10, 2020 at 4:32 PM Justin Richer  wrote:
> >> 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?
> >>
> >> Fully agree. I will add a refresh_token shall always be PoP bound.
> Independent of the type of PoP.
> >>
> >> 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 a

[OAUTH-WG] Fwd: Nomcom 2020-2021 Second Call For Volunteers

2020-06-11 Thread Rifaat Shekh-Yusef
Please, consider volunteering for this role.

Regards,
 Rifaat


-- Forwarded message -
From: NomCom Chair 2020 
Date: Wed, Jun 10, 2020 at 2:55 PM
Subject: Nomcom 2020-2021 Second Call For Volunteers
To: IETF Announcement List 
Cc: 


This is the second sending of the call for volunteers for the 2020-2021
NomCom.

I wanted to mention a few updates from the previous email (sent 2 weeks
ago):
 - I've fixed the URL at the bottom of the email to point to
https://datatracker.ietf.org/nomcom/2020/ instead of /2019/. This was a
test to see if anyone was paying attention. Apparently, some people were. ;)
 - The IETF 108 registration form includes a checkbox that will let you
volunteer. You can use this instead of emailing me, when you register for
IETF 108.
 - I currently have 39 volunteers. Last year had 149. I need more
volunteers!
-
The IETF NomCom appoints people to fill the open slots on the LLC, IETF
Trust, the IAB, and the IESG.

Ten voting members for the NomCom are selected in a verifiably random way
from a pool of volunteers. The more volunteers, the better chance we have
of choosing a random yet representative cross section of the IETF
population.

The details of the operation of the NomCom can be found in BCP 10 (RFC
8713). RFC 3797 details the selection algorithm.

Special for this year (and only this year), we also have RFC 8788 (one-off
update to RFC 8713 / BCP 10) to tell us who is eligible to volunteer:

  Members of the IETF community must have attended at least three of
  the last five in-person IETF meetings in order to volunteer.

  The five meetings are the five most recent in-person meetings that
  ended prior to the date on which the solicitation for NomCom
  volunteers was submitted for distribution to the IETF community.
  Because no IETF 107 in-person meeting was held, for the 2020-2021
  Nominating Committee those five meetings are IETFs
102 [Montreal, Canada; July 2018],
103 [Bangkok, Thailand; November 2018],
104 [Prague, Czech Republic; March 2019],
105 [Montreal, Canada; July 2019], and
106 [Singapore; November 2019].

Keep in mind that eligibility is based on in-person attendance at the five
listed meetings. You can check your eligibility at:
https://www.ietf.org/registration/nomcom.py.

If you qualify, please volunteer. Before you decide to volunteer, please
remember that anyone appointed to this NomCom will not be considered as a
candidate for any of the positions that the 2020 - 2021 NomCom is
responsible for filling.

People commonly volunteer by ticking the box on IETF registration forms.
The IETF 106 form did not ask whether people were willing to volunteer.
IETF 107 did ask, but all those registrations were canceled. I have asked
the Secretariat if it is possible to get the list if volunteers from
canceled IETF 107 registrations. If that list is available, I will contact
all who are verified as eligible. But given the uncertainty of this
process, I would encourage people to volunteer directly (see the bottom of
this email for instructions). Thank you for volunteering!

The list of people and posts whose terms end with the March 2021 IETF
meeting, and thus the positions for which this NomCom is responsible, are

IETF Trust:
Joel Halpern

LLC:
Maja Andjelkovic

IAB:
Jari Arkko
Jeff Tantsura
Mark Nottingham
Stephen Farrell
Wes Hardaker
Zhenbin Li

IESG:
Alissa Cooper, IETF Chair/GEN AD
Alvaro Retana, RTG AD
Barry Leiba, ART AD
Deborah Brungard, RTG AD
Éric Vyncke, INT AD
Magnus Westerlund, TSV AD
Roman Danyliw, SEC AD
Warren Kumari, OPS AD

All appointments are for 2 years. The Routing area has 3 ADs and the
General area has 1; all other areas have 2 ADs. Thus, all areas (that have
more than one AD) have at least one continuing AD.

The primary activity for this NomCom will begin in July 2020 and should be
completed in January 2021.  The NomCom will have regularly scheduled
conference calls to ensure progress. There will be activities to collect
requirements from the community, review candidate questionnaires, review
feedback from community members about candidates, and talk to candidates.

While being a NomCom member does require some time commitment it is also a
very rewarding experience.

As a member of the NomCom it is very important that you be willing and able
to attend either videoconference or in-person meetings (which may not
happen) during 14-20 November (IETF 109 - Bangkok) to conduct interviews.
Videoconference attendance will be supported whether or not there are
in-person meetings. Orientation and setting of the NomCom schedule will be
done by videoconference during the week 20-24 July (exact time and date to
be determined after NomCom membership is finalized on July 12), the week
prior to IETF 108.  Being at IETF 110 (Prague) is not essen

Re: [OAUTH-WG] DPoP - Downgrades, Transitional Rollout & Mixed Token Type Deployments

2020-06-11 Thread Torsten Lodderstedt


> On 11. Jun 2020, at 19:24, Francis Pouatcha  
> wrote:
> 
> 
> 
> On Thu, Jun 11, 2020 at 3:26 AM Neil Madden  wrote:
> +1
> 
> > On 11 Jun 2020, at 07:36, Torsten Lodderstedt 
> >  wrote:
> > 
> > I generally agree with the proposal, but I would suggest to limit it to 
> > public clients. 
>  
> > 
> > In case of confidential clients, the refresh token is (via the client_id) 
> > already bound to the client’s secret(s) and those can be rotated. 
> > Additionally binding the refresh token to a DPoP key would limit it’s 
> > applicability w/o a benefit. 
> I meant PoP and not DPoP. The client secret is also a variant of PoP. This 
> does not change the value of this sentence: "refresh_token shall always be 
> bound to a PoP".

This means you agree DPoP shall be used for refresh tokens issued to public 
clients only? As you said, client authentication is a kind of PoP as well, so 
confidential clients don’t need DPoP protection for refresh tokens. 

> 
> -- 
> Francis Pouatcha
> Co-Founder and Technical Lead at adorys
> https://adorsys-platform.de/solutions/



smime.p7s
Description: S/MIME cryptographic signature
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] DPoP - Downgrades, Transitional Rollout & Mixed Token Type Deployments

2020-06-11 Thread Francis Pouatcha
On Thu, Jun 11, 2020 at 3:26 AM Neil Madden 
wrote:

> +1
>
> > On 11 Jun 2020, at 07:36, Torsten Lodderstedt  40lodderstedt@dmarc.ietf.org> wrote:
> >
> > I generally agree with the proposal, but I would suggest to limit it to
> public clients.
>


> >
> > In case of confidential clients, the refresh token is (via the
> client_id) already bound to the client’s secret(s) and those can be
> rotated. Additionally binding the refresh token to a DPoP key would limit
> it’s applicability w/o a benefit.
>
I meant *PoP* and not *DPoP*. The client secret is also a variant of PoP.
This does not change the value of this sentence: "*refresh_token shall
always be bound to a PoP*".

-- 
Francis Pouatcha
Co-Founder and Technical Lead at adorys
https://adorsys-platform.de/solutions/
___
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth


Re: [OAUTH-WG] DPoP - Downgrades, Transitional Rollout & Mixed Token Type Deployments

2020-06-11 Thread Neil Madden
+1

> On 11 Jun 2020, at 07:36, Torsten Lodderstedt 
>  wrote:
> 
> I generally agree with the proposal, but I would suggest to limit it to 
> public clients. 
> 
> In case of confidential clients, the refresh token is (via the client_id) 
> already bound to the client’s secret(s) and those can be rotated. 
> Additionally binding the refresh token to a DPoP key would limit it’s 
> applicability w/o a benefit. 
> 
>> On 11. Jun 2020, at 01:35, Francis Pouatcha  wrote:
>> 
>> 
>> On Wed, Jun 10, 2020 at 4:32 PM Justin Richer  wrote:
>> 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?
>> 
>> Fully agree. I will add a refresh_token shall always be PoP bound. 
>> Independent of the type of PoP.
>> 
>> 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?
>> Key rotation shall be handled separately from the refresh_token process. If 
>> a refresh_token is bound to a key, the client shall keep that key till the 
>> refresh_token is consumed. A key rotation process shall be designed such as 
>> to allow the key holder to keep obsolete keys for the completion of pending 
>> processes.
>> 
>> — Justin
>> 
 On Jun 7, 2020, at 3:22 AM, Torsten Lodderstedt 
  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.
>> 
>> 
>> -- 
>> Francis Pouatcha
>> Co-Founder and Technical Lead at adorys
>> 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