Thanks Brian and Justin!

I will work on the shepherd writeup.

Regards,
 Rifaat


On Wed, Aug 10, 2022 at 4:22 PM Brian Campbell <bcampb...@pingidentity.com>
wrote:

> Thanks Justin!
>
> I've just published a -11 draft
> <https://datatracker.ietf.org/doc/draft-ietf-oauth-dpop/11/> with these
> changes (also listed below copied from the doc history section). Rifaat, I
> believe all the shepherd review comments have now been addressed.
>
>
>    -11
>
>    *  Updates addressing outstanding shepherd review comments per side
>       meeting discussions at IETF 114
>    *  Added more explanation of the PAR considerations
>    *  Added parenthetical remark "(such as ES256)" to Signature
>       Algorithms subsection
>    *  Added more explanation for ath
>    *  Added a reference to RFC8725 in mention of explicit JWT typing
>
> On Fri, Aug 5, 2022 at 2:50 PM Justin Richer <jric...@mit.edu> wrote:
>
>> Also, I wanted to take a moment to respond specifically to something in
>> the shepherd’s review:
>>
>> >  • The DPoP Proof contains a hash of the Access Token, and the Access
>> Token contains a hash of the public key in the DPoP Proof. Why do you need
>> both? Would one of these be sufficient?
>>
>> The access token is not guaranteed to “contain” a hash of the public key
>> — that’s only if you’re using JWTs and if you’re using the confirmation
>> method specified in here. You are completely free to use non-JWT tokens
>> with introspection or use some other means to look up the right keys
>> associated with the token.
>>
>> The other aspect, which I hope is covered by the text in the PR, is that
>> it’s about binding it in both directions. Binding the key to the token
>> means that you can’t use the token without presenting the key. That’s the
>> fundamental problem of proof-of-possession that DPoP is solving. Binding
>> the token to the proof means that you can’t use the proof without the
>> token. This is a part of making sure you’re binding the proof to the
>> request as-presented. It also means that you can’t take a
>> token-less-but-signed call to the RS and add a token value that you can’t
>> generate a signature for and have it work.
>>
>>  — Justin
>>
>>
>> On Aug 5, 2022, at 1:00 PM, Justin Richer <jric...@mit.edu> wrote:
>>
>> I think Brian’s just in Danial about this one, but we’ll let it slide.
>>
>> And I have in fact gone through and added text about ATH:
>>
>> https://github.com/danielfett/draft-dpop/pull/168
>>
>> I opted to add this in the introduction of the section about using access
>> tokens instead of a separate security consideration because it’s really
>> fundamental to the token use here.
>>
>>  — Justin
>>
>>
>> On Jul 27, 2022, at 7:11 PM, Brian Campbell <
>> bcampbell=40pingidentity....@dmarc.ietf.org> wrote:
>>
>> I need to make one more apology - this time for the incorrect spelling of
>> Dr. Fett's name (should be Daniel not Danial). My apologies.
>>
>> On Wed, Jul 27, 2022 at 6:43 PM Brian Campbell <
>> bcampb...@pingidentity.com> wrote:
>>
>>> Thanks Rifaat and others for the vibrant* discussions about the DPoP
>>> draft in the side meeting yesterday.
>>>
>>> I thought it'd be appropriate to share/reiterate the three action items
>>> we'd agreed on during the meeting (as I remember anyway):
>>>
>>>    1. Justin to review the text about why we have the AT hash and
>>>    either create a PR adding additional motivations or say that what we have
>>>    is already sufficient
>>>    2. Danial to add some text to further explain decisions with respect
>>>    to PAR
>>>    3. Brian (aka me) to add a parenthetical remark to the Signature
>>>    Algorithms subsection listing 'ES256'
>>>
>>> PR's for the latter two are here
>>> <https://github.com/danielfett/draft-dpop/pull/165> and here
>>> <https://github.com/danielfett/draft-dpop/pull/166> respectively.  And
>>> yes, this message is, at least in part, a passive-aggressive reminder to
>>> Justin about #1.
>>>
>>> The slides that I used to try and help guide the discussions are
>>> attached. They are admittedly rather suboptimal but I'm including them for
>>> the sake of transparency (and because they have a couple of photos).
>>>
>>>
>>> * my apologies for being overly vibrant at times
>>>
>>>
>>>
>>>
>>> On Wed, Jul 6, 2022 at 4:32 PM Brian Campbell <
>>> bcampb...@pingidentity.com> wrote:
>>>
>>>> Thanks Rifaat!
>>>> I will make those changes in the document source and come to Philly
>>>> prepared to discuss the other items. One of the side meetings seems like a
>>>> good forum for that, good idea.
>>>>
>>>> On Tue, Jul 5, 2022 at 11:14 AM Rifaat Shekh-Yusef <
>>>> rifaat.s.i...@gmail.com> wrote:
>>>>
>>>>> Thanks Brian!
>>>>> See my replies inline below.
>>>>>
>>>>>
>>>>> On Thu, Jun 30, 2022 at 6:52 PM Brian Campbell <
>>>>> bcampb...@pingidentity.com> wrote:
>>>>>
>>>>>> Thanks for shepherding Rifaat. And apologies for the slow reply. My
>>>>>> attempts at answering questions and responding to comments are inline
>>>>>> below.
>>>>>>
>>>>>>
>>>>>> On Fri, Jun 3, 2022 at 11:55 AM Rifaat Shekh-Yusef <
>>>>>> rifaat.s.i...@gmail.com> wrote:
>>>>>>
>>>>>>> The following is my review as a document shepherd:
>>>>>>>
>>>>>>> Section 4.3
>>>>>>> Last sentence
>>>>>>> Since the document uses “SHOULD”, this implies that there are some
>>>>>>> valid cases where this is not needed.
>>>>>>> Should a text be added to explain when this is not needed?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> What about giving a bit more context about why they should? Changing
>>>>>> that sentence to say, "To reduce the likelihood of false negatives, 
>>>>>> servers
>>>>>> SHOULD employ Syntax-Based Normalization (Section 6.2.2
>>>>>> <https://rfc-editor.org/rfc/rfc3986> of [RFC3986]) and Scheme-Based
>>>>>> Normalization (Section 6.2.2 <https://rfc-editor.org/rfc/rfc3986> of
>>>>>> [RFC3986]) before comparing the htu claim." And also maybe changing
>>>>>> it to a little "should".
>>>>>>
>>>>>> Yes, that works.
>>>>> I suggest keeping it as "SHOULD" to encourage implementers to use
>>>>> this, unless they have a really good reason not to.
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 6.1
>>>>>>>
>>>>>>>    1. First sentence - what is the reason for using “SHOULD”,
>>>>>>>    instead of “MUST” in this case?
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> Good question. I think it was a bit of carryover from OAuth in
>>>>>> general not strictly defining access token format or content. And wanting
>>>>>> to not encroach on that. But that's kinda covered/allowed for in general 
>>>>>> by
>>>>>> Section 6 already. And Section 6.2 is effectively the same as 6.1 but for
>>>>>> introspection and it doesn't use "SHOULD". I think the “SHOULD” in
>>>>>> the first sentence of 6.1 should be removed thereby making it an
>>>>>> implicit must - like "when using JWT, this is how it is". That would 
>>>>>> align
>>>>>> with the way it's described for introspection. Also leaves some room for
>>>>>> hash algorithm agility via a new confirmation method member (described in
>>>>>> https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-09.html#name-access-token-and-public-key)
>>>>>> without going against a "MUST"
>>>>>>
>>>>>>
>>>>> I am fine with removing the "SHOULD" to make it an implicit must.
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>    1. The DPoP Proof contains a hash of the Access Token, and the
>>>>>>>    Access Token contains a hash of the public key in the DPoP Proof.
>>>>>>>
>>>>>>> Why do you need both? Would one of these be sufficient?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> The latter (AT containing a hash of the public key in the DPoP Proof)
>>>>>> is needed and largely sufficient for the main goals of binding the AT to 
>>>>>> a
>>>>>> key held by the client. The former (DPoP Proof containing a hash of
>>>>>> the AT) was added later via very rough WG consensus - it can prevent some
>>>>>> esoteric swapping of tokens that I never really understood to be honest 
>>>>>> and
>>>>>> also limits the impact of using maliciously precomputed and exfiltrated
>>>>>> proofs (
>>>>>> https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-09.html#section-2-6
>>>>>> talks about it a bit). Use of the nonce mechanism, which was added
>>>>>> to the draft even later, also (and better) protects against precomputed
>>>>>> and exfiltrated proofs. The value of the AT hash in the proof seems
>>>>>> somewhat questionable. To me anyway. But removing it at this point is
>>>>>> potentially problematic due to inertia, existing
>>>>>> implementations/deployments, rough WG consensus, and more.
>>>>>>
>>>>>>
>>>>> I think that at least a text is needed to justify this, and explain
>>>>> the " it can prevent some esoteric swapping of tokens" issue.
>>>>> Maybe we can discuss this during one of the side meetings in Philly.
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>>> Section 7.1
>>>>>>>
>>>>>>>    1. “if the request does not include valid credentials or does
>>>>>>>    not contain an access token sufficient for access, the server can
>>>>>>>    respond with a challenge to the client to provide DPoP authentication
>>>>>>>    information.”
>>>>>>>
>>>>>>>
>>>>>>> Should the “can” be replaced with a “SHOULD”?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> FWIW, there was some discussion around that sentence that included
>>>>>> some pushback on dropping the "can".
>>>>>> https://github.com/danielfett/draft-dpop/issues/119 and
>>>>>> https://github.com/danielfett/draft-dpop/pull/122 have the
>>>>>> conversation. I'm rather hesitant to try and change it after all that.
>>>>>>
>>>>>>
>>>>>>
>>>>> Ok
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>>    1. Also, I think it would be clearer if you can explicitly state
>>>>>>>    what the authorization server should do when it does not challenge 
>>>>>>> the
>>>>>>>    client, which I am assuming will be something along the lines of: 
>>>>>>> “the
>>>>>>>    authorization server issues an error response per Section 5.2 of 
>>>>>>> RFC6749“
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> The section in question is about protected resource access so
>>>>>> anything about the authorization server wouldn't be appropriate there. 
>>>>>> The
>>>>>> protected resource / RS always has the option to simply fail the request
>>>>>> and can do that however it sees fit. I'm not sure how to state that in 
>>>>>> the
>>>>>> document text. Or if anything should be stated, honestly.
>>>>>>
>>>>>> Ok
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 7.2
>>>>>>>
>>>>>>>    1. “Specifically, such a protected resource MUST reject a
>>>>>>>    DPoP-bound access token received as a bearer token per [RFC6750
>>>>>>>    
>>>>>>> <https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-08.html#RFC6750>
>>>>>>>    ].”
>>>>>>>
>>>>>>>
>>>>>>> I think that I understand what you are trying to say with this
>>>>>>> sentence, but the way the sentence reads is confusing to me.
>>>>>>> I am assuming what you are trying to say is something along the
>>>>>>> lines of “a dpop protected resource must reject a request that provides 
>>>>>>> a
>>>>>>> bearer token”. Is that correct? If so, can you please rephrase the 
>>>>>>> sentence
>>>>>>> to make it clearer?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> That's not quite correct. That paragraph
>>>>>> <https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-09.html#section-7.2-1>
>>>>>> (copied below) is attempting say that a protected resource that will
>>>>>> accept either "Authorization: Bearer <bearer token>" or "Authorization:
>>>>>> DPoP <dpop-bound token>" is required to reject a request that uses the
>>>>>> Bearer scheme with a DPoP-bound access token. This is to prevent
>>>>>> downgraded usage of a bound access token without demonstrating possession
>>>>>> of the key to which it is bound.
>>>>>>
>>>>>> "Protected resources simultaneously supporting both the DPoP and
>>>>>> Bearer schemes need to update how evaluation of bearer tokens is
>>>>>> performed to prevent downgraded usage of a DPoP-bound access token.
>>>>>> Specifically, such a protected resource MUST reject a DPoP-bound access
>>>>>> token received as a bearer token per [RFC6750
>>>>>> <https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-09.html#RFC6750>
>>>>>> ]."
>>>>>>
>>>>>> Got it.
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>    1. “A protected resource that supports only [RFC6750
>>>>>>>    
>>>>>>> <https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-08.html#RFC6750>]
>>>>>>>    and is unaware of DPoP would most presumably accept a DPoP-bound 
>>>>>>> access
>>>>>>>    token as a bearer token”
>>>>>>>
>>>>>>>
>>>>>>> Wouldn't such a resource server check the value of the
>>>>>>> WWW-Authenticate header to make sure it contains the Bearer scheme, 
>>>>>>> which
>>>>>>> means that the request is most likely to be declined?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> What that is trying to say is that a protected resource that only
>>>>>> does or knows about the RFC6750 Bearer scheme ("Authorization: Bearer
>>>>>> <token>") will almost certainly accept a bound access token sent via the
>>>>>> Bearer scheme.
>>>>>>
>>>>>> Ok
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 10.1
>>>>>>> Why define two different mechanisms to achieve the same thing?
>>>>>>> This seems to add complexity without an obvious benefit.
>>>>>>>
>>>>>>
>>>>>>
>>>>>> This is a bit of a tricky area. The benefit with PAR is the direct
>>>>>> request from client to AS, which allows for an actual DPoP proof to be 
>>>>>> used
>>>>>> for the eventual binding of the authorization code to the key. Also the
>>>>>> client doesn't have to do the JWK hash in that case. Whereas the normal
>>>>>> authorization request is indirect via the browser and just a hash of the
>>>>>> key is given for the code binding with the dpop_jkt parameter. And the
>>>>>> client has to compute the hash. But PAR is just an alternative way to 
>>>>>> pass
>>>>>> the authorization parameters (like dpop_jkt) so it's kinda awkward to use
>>>>>> things together like this.
>>>>>> https://github.com/danielfett/draft-dpop/issues/103 and
>>>>>> https://github.com/danielfett/draft-dpop/pull/111 have some
>>>>>> discussion around this but there was some in person talk too so that's 
>>>>>> not
>>>>>> complete.
>>>>>>
>>>>>> I don't love that there's two different mechanisms here. But it's
>>>>>> what we were able to come up with given all the factors. Certainly open 
>>>>>> to
>>>>>> considering improvements but am pretty much at a loss of what that might
>>>>>> be.
>>>>>>
>>>>>> Let's discuss this during one of the side meetings in Philly
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 11.6
>>>>>>> Should the algorithms be explicitly called out? Or at least
>>>>>>> reference a document that calls out such algorithms?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> There isn't a single such document and it's not necessarily a static
>>>>>> list of algorithms. I was about to say we could point to the JOSE
>>>>>> alg registry but glancing again at it
>>>>>> https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms
>>>>>> and I suspect that'd confuse more than help. We could perhaps list
>>>>>> some/many of the algs with the qualification that it's not an exclusive 
>>>>>> or
>>>>>> complete list? But I'm not sure how useful that would be, to be honest.
>>>>>>
>>>>>> If you do not specify any algorithm, how do you ensure interop?
>>>>> I think this is worth a discussion in Philly
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 11.7
>>>>>>> Why is OAuth Token Binding included?
>>>>>>>
>>>>>>
>>>>>>
>>>>>> Yeah, that doesn't make sense to encourage its use because it's not a
>>>>>> viable thing to use. OAuth Token Binding should be removed from Section
>>>>>> 11.7. Was that what you were getting at? That particular text in the
>>>>>> paragraph that mentions token binding has been in the draft for a long 
>>>>>> time
>>>>>> and honestly never made a lot of sense to me. So I could envision 
>>>>>> removing
>>>>>> more. But that's maybe more than you were aiming for.
>>>>>>
>>>>>> I am actually in favor of removing it
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>>>
>>>>>>> Section 11.8
>>>>>>> Why not include algorithm agility to make sure the mechanism is
>>>>>>> ready to allow for more secure algorithms in the future?
>>>>>>>
>>>>>>
>>>>>> Algorithm agility is a whole can of worms that can be accomplished in
>>>>>> different ways with different amounts of added complexity and potential
>>>>>> vulnerabilities and issues of interop and MTI. Section 11.8 describes how
>>>>>> DPoP allows for algorithm agility (without using the exact words) by
>>>>>> suggesting that new dpop binding cnf method and/or AT hash claim be
>>>>>> defined using a "better" hash algorithm if/when the need arises (OAuth
>>>>>> 2.0 Mutual-TLS takes a similar approach FWIW). The intent of doing
>>>>>> it that way was to keep things as simple as possible in the spec right 
>>>>>> now
>>>>>> without completely closing the door on future needs. .
>>>>>>
>>>>>> This is another topic that is worth a discussion in Philly.
>>>>>
>>>>> Regards,
>>>>>  Rifaat
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> *CONFIDENTIALITY NOTICE: This email may contain confidential and
>>>>>> privileged material for the sole use of the intended recipient(s). Any
>>>>>> review, use, distribution or disclosure by others is strictly prohibited.
>>>>>> If you have received this communication in error, please notify the 
>>>>>> sender
>>>>>> immediately by e-mail and delete the message and any file attachments 
>>>>>> from
>>>>>> your computer. Thank you.*
>>>>>
>>>>>
>> *CONFIDENTIALITY NOTICE: This email may contain confidential and
>> privileged material for the sole use of the intended recipient(s). Any
>> review, use, distribution or disclosure by others is strictly prohibited.
>> If you have received this communication in error, please notify the sender
>> immediately by e-mail and delete the message and any file attachments from
>> your computer. Thank you.*_______________________________________________
>> 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
>>
>>
>>
> *CONFIDENTIALITY NOTICE: This email may contain confidential and
> privileged material for the sole use of the intended recipient(s). Any
> review, use, distribution or disclosure by others is strictly prohibited.
> If you have received this communication in error, please notify the sender
> immediately by e-mail and delete the message and any file attachments from
> your computer. Thank you.*
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to