Hi Mark,

We've published https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-14.html, 
which incorporates the PR.  Could you please approve IANA registration of the 
HTTP fields on that basis?

Thanks again for your help with the draft.

                                                       -- Mike

From: OAuth <oauth-boun...@ietf.org> On Behalf Of Mike Jones
Sent: Tuesday, March 7, 2023 8:58 PM
To: Mark Nottingham <mnot=40mnot....@dmarc.ietf.org>
Cc: Roy Fielding <field...@gbiv.com>; Amanda Baber via RT 
<drafts-expert-review-comm...@iana.org>; oauth@ietf.org
Subject: Re: [OAUTH-WG] [IANA #1264432] expert review for draft-ietf-oauth-dpop 
(http-fields)

Thanks - will do.

________________________________
From: Mark Nottingham 
<mnot=40mnot....@dmarc.ietf.org<mailto:mnot=40mnot....@dmarc.ietf.org>>
Sent: Tuesday, March 7, 2023 7:55:29 PM
To: Mike Jones <michael.jo...@microsoft.com<mailto:michael.jo...@microsoft.com>>
Cc: Brian Campbell 
<bcampb...@pingidentity.com<mailto:bcampb...@pingidentity.com>>; Amanda Baber 
via RT 
<drafts-expert-review-comm...@iana.org<mailto:drafts-expert-review-comm...@iana.org>>;
 oauth@ietf.org<mailto:oauth@ietf.org> <oauth@ietf.org<mailto:oauth@ietf.org>>; 
Roy Fielding <field...@gbiv.com<mailto:field...@gbiv.com>>
Subject: Re: [OAUTH-WG] [IANA #1264432] expert review for draft-ietf-oauth-dpop 
(http-fields)

Hi Mike,

Thanks. I left a comment on the PR, suggesting two small tweaks.

Cheers,


> On 8 Mar 2023, at 2:33 pm, Mike Jones 
> <Michael.Jones=40microsoft....@dmarc.ietf.org<mailto:Michael.Jones=40microsoft....@dmarc.ietf.org>>
>  wrote:
>
> Hi Mark,
>
> I've created the pull request 
> https://github.com/danielfett/draft-dpop/pull/180 to incorporate your 
> suggestions.  Please also see some additional replies below, which are 
> prefixed by "Mike>".
>
> Please let us know if you'd like to see any changes to the PR before we merge 
> it and publish an updated draft incorporating your suggestions.
>
> Thanks,
> -- Mike
>
> -----Original Message-----
> From: Mike Jones
> Sent: Monday, January 23, 2023 11:42 PM
> To: 'Mark Nottingham' 
> <mnot=40mnot....@dmarc.ietf.org<mailto:mnot=40mnot....@dmarc.ietf.org>>; 
> Brian Campbell 
> <bcampbell=40pingidentity....@dmarc.ietf.org<mailto:bcampbell=40pingidentity....@dmarc.ietf.org>>
> Cc: Amanda Baber via RT 
> <drafts-expert-review-comm...@iana.org<mailto:drafts-expert-review-comm...@iana.org>>;
>  oauth@ietf.org<mailto:oauth@ietf.org>; Roy Fielding 
> <field...@gbiv.com<mailto:field...@gbiv.com>>
> Subject: RE: [OAUTH-WG] [IANA #1264432] expert review for 
> draft-ietf-oauth-dpop (http-fields)
>
> Hi Mark,
>
> Like Brian, I appreciate your detailed review.  My thoughts on the review 
> points are interleaved with the discussion text below.
>
>> Keep in mind that HTTP header fields are basically sets of constrained 
>> octets with weird combination rules; if you don't use SF, you should be 
>> specifying (for example) what happens when two header values (and/or fields) 
>> are present (as per below). SF does a lot of the legwork here, even if from 
>> a type system standpoint it's not a perfect fit.
>
> I agree that we should specify these things - probably using language 
> parallel to that in the SF draft, where appropriate.  I also share your 
> assessment that, unfortunately, the SF type system is not an ideal fit for 
> the DPoP headers.
>
> Mike> 
> https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-13.html#name-checking-dpop-proofs
>  does include the validation check "there is not more than one DPoP HTTP 
> request header field".  In the PR, I also explicitly added that the there is 
> a single field value.
>
>> That said, personally I'd deconstruct the JWT and convey it as separate 
>> binary values, so that if binary structured headers ever does catch on, it 
>> can get the perf/compactness advantages of that.
>
> Deconstructing the JWT would entail defining a new JWT serialization 
> (representation).  Currently there is exactly one JWT serialization and this 
> specification uses it.  I suspect developers would like us to keep it that 
> way.
>
> Only one of the fields of a signed JWT is actually binary (the signature); 
> the header and payload are JSON.  All are encoded using the base64 URL-safe 
> character set (letters, numbers, -, and _ with no trailing =s) for safe 
> transmission with encoded fields separated by the also URL-safe character 
> period.  Furthermore, the signature is computed over the base64url-encoded 
> values of the first two fields with a period between them.  The base64url 
> encoding and concatenation is integral to the computation of the signature.  
> Any different serialization would still have to perform these computations.
>
> (Note also that some JWTs have three base64url-encoded fields separated by 
> period characters and some have five, depending upon whether they are signed 
> (three) or encrypted (five); deconstructing a value with a variable number of 
> non-independent fields seems like significant unnecessary complexity.)
>
>>> ABNF syntax for the nonce value is provided at 
>>> https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-12.html#section-8-9 
>>> along with the description of its use in the DPoP exchange.
>
>> I see. It'd be better if it were explicitly called out as the syntax for the 
>> field (ideally with a section title that makes this clear), rather than 
>> making the reader do that work.
>
> Mike> The nonce syntax ABNF now has its own section title in the PR.
>
> I'm fine with us making the editorial improvement that you suggest.
>
>>> I believe that the SF String type would accommodate the content we intended 
>>> to allow servers to use for the nonce (it's basically a server chosen value 
>>> that the client treats as opaque and sends back in subsequent DPoP proof 
>>> JWTs). However, that would be a breaking change, which shouldn't be 
>>> undertaken lightly.
>
>> Right. It really depends on how advanced deployment of this is; if there's 
>> only modest production use, it may still be reasonable to make such a change 
>> (especially keeping in mind that people who adopt drafts need to bear the 
>> consequences of doing so).
>
> I'm with Brian here.  I don't believe that the cost/benefit tradeoff of the 
> breaking change versus using the SF String type is a good one.
>
>> To be concrete -- what should an implementation do when it receives two DPoP 
>> header fields, both with valid values? When it receives one with two 
>> comma-separated values?
>
> These are great questions.  I'll commit to us answering them in the next 
> draft.
>
> Mike> Per my earlier comment about the validation rules, these issues are 
> both addressed in the rules.
>
>>>> - The long line-wrapped example in Section 4.1 would benefit from RFC8792 
>>>> encoding. In HTTP, a line-wrapped field like the one shown has whitespace 
>>>> inserted between each line, which is problematic here.
>>
>>> This is a bit of a stylistic preference thing. That example and others in 
>>> the draft are intentionally similar (with a note about line breaks and 
>>> extra space being for display purposes) to closely related and referenced 
>>> documents like RFC7515, RFC7519, and RFC6749. The examples from these RFCs 
>>> seem to have worked well for readers/implementers in practice, and so we'd 
>>> prefer to keep the formatting conventions in this draft the same as in 
>>> those.
>>
>> Consistency between documents that specify HTTP protocol elements is 
>> important, so I'd ask you to reconsider; while the community that has been 
>> developing and implementing the specification may already be familiar with 
>> it, aligning with other documents makes it easier for a broader audience. 
>> See, for example, the Signatures specification: 
>> https://httpwg.org/http-extensions/draft-ietf-httpbis-message-signatures.html#name-request-response-signature-
>
> I'm fine with us making this editorial change to the examples, since you feel 
> that this would help some readers of the specification.
>
> Mike> I applied RFC 8792 '\' line wrapping.
>
> In closing, I'll say that I appreciate that the SF spec has done heavy 
> lifting that we would do well to take advantage of.  I appreciate you 
> bringing it to our attention.  That said, since SF's type system does not 
> cleanly map to some of the DPoP fields, and since the use of SF is optional, 
> I personally believe that the best route for us to take advantage of SF is to 
> study it and ensure that the questions that SF answers for the field types 
> that it defines are also answered for the fields defined by the DPoP draft.
>
> Best wishes,
> -- Mike
>
> -----Original Message-----
> From: OAuth <oauth-boun...@ietf.org<mailto:oauth-boun...@ietf.org>> On Behalf 
> Of Mark Nottingham
> Sent: Sunday, January 22, 2023 7:13 PM
> To: Brian Campbell 
> <bcampbell=40pingidentity....@dmarc.ietf.org<mailto:bcampbell=40pingidentity....@dmarc.ietf.org>>
> Cc: Amanda Baber via RT 
> <drafts-expert-review-comm...@iana.org<mailto:drafts-expert-review-comm...@iana.org>>;
>  oauth@ietf.org<mailto:oauth@ietf.org>; Roy Fielding 
> <field...@gbiv.com<mailto:field...@gbiv.com>>
> Subject: Re: [OAUTH-WG] [IANA #1264432] expert review for 
> draft-ietf-oauth-dpop (http-fields)
>
> Hi Brian,
>
>> On 21 Jan 2023, at 5:46 am, Brian Campbell 
>> <bcampbell=40pingidentity....@dmarc.ietf.org<mailto:bcampbell=40pingidentity....@dmarc.ietf.org>>
>>  wrote:
>>
>>
>> Hi Mark,
>>
>> Thanks for the review and feedback. I am aware of HTTP Structured Fields and 
>> certainly see value in it - even using it in some other work in which I'm 
>> involved. However, I'm unsure of its fit or utility for this draft. With 
>> that said, I've tried to reply more specifically to your comments inline 
>> below.
>>
>>
>> On Wed, Jan 18, 2023 at 3:32 PM Mark Nottingham 
>> <mnot=40mnot....@dmarc.ietf.org<mailto:mnot=40mnot....@dmarc.ietf.org>> 
>> wrote:
>> A few things caught my eye in this document:
>>
>> - Section 4.1 defines the DPoP header field as a JWT, which (as I understand 
>> it) is a base64-encoded string. If that's the case, I'd recommend making it 
>> a Structured Field Item (see RFC8941 s 3.3) with a fixed type of Byte 
>> Sequence (s 3.3.5). That will require changing the syntax to add a prefix 
>> and suffix of ":".
>>
>> As Justin pointed out, a JWT is three Base64url encoded segments delimited 
>> by the `.` period character, which means it can't be a SF Byte Sequence.  As 
>> DW pointed out, a JWT just happens to always start with a letter because the 
>> first segment is always encoded JSON, so will always start with 'ey'. So the 
>> DPoP header field value does just happen to fit the SF Token syntax, But the 
>> SF Token syntax does very little regarding the validity of the JWT.
>
> Keep in mind that HTTP header fields are basically sets of constrained octets 
> with weird combination rules; if you don't use SF, you should be specifying 
> (for example) what happens when two header values (and/or fields) are present 
> (as per below). SF does a lot of the legwork here, even if from a type system 
> standpoint it's not a perfect fit.
>
> That said, personally I'd deconstruct the JWT and convey it as separate 
> binary values, so that if binary structured headers ever does catch on, it 
> can get the perf/compactness advantages of that.
>
>
>> - The DPoP-Nonce header field's syntax isn't obviously specified. It should 
>> be. I'd suggest a Structured Field Item with a fixed type of String (RFC 
>> 8941 s 3.3.3), which would surrounding the value with quotes.
>>
>> ABNF syntax for the nonce value is provided at 
>> https://www.ietf.org/archive/id/draft-ietf-oauth-dpop-12.html#section-8-9 
>> along with the description of its use in the DPoP exchange.
>
> I see. It'd be better if it were explicitly called out as the syntax for the 
> field (ideally with a section title that makes this clear), rather than 
> making the reader do that work.
>
>
>> I believe that the SF String type would accommodate the content we intended 
>> to allow servers to use for the nonce (it's basically a server chosen value 
>> that the client treats as opaque and sends back in subsequent DPoP proof 
>> JWTs). However, that would be a breaking change, which shouldn't be 
>> undertaken lightly.
>
> Right. It really depends on how advanced deployment of this is; if there's 
> only modest production use, it may still be reasonable to make such a change 
> (especially keeping in mind that people who adopt drafts need to bear the 
> consequences of doing so).
>
>
>> - Neither header has interoperable parsing or serialisation specified; 
>> divergent error handling may cause interoperability problems. Adopting 
>> Structured Fields would address this.
>>
>> Both are composed of a narrow set of printable ASCII with parsing, 
>> validation, usage, and error handling specified at the application layer. 
>> I'm not going to claim that it's perfect by any means. But those 
>> interoperability problems seem conjectural and it's not obvious that 
>> adopting Structured Fields would add value in the context of this draft.
>
> To be concrete -- what should an implementation do when it receives two DPoP 
> header fields, both with valid values? When it receives one with two 
> comma-separated values?
>
>
>> - See RFC9110 s 16.3.2 for things that should be considered when defining 
>> new HTTP fields. I suspect that the document needs to be more explicit about 
>> at least some of these items. Adopting Structured Fields would address some 
>> (but not all) of these questions.
>>
>> The authors (on-behalf-of and with the help of the WG) have endeavored to 
>> touch on all the considerations needed to ensure interoperability of the 
>> protocol overall as well as HTTP related (e.g. caching, applicability to 
>> request/response, prohibiting multiple occurrences, scope of applicability). 
>> However, the group clearly does not have your depth of HTTP expertise so may 
>> well have missed something. If that's the case, it would be very helpful for 
>> specifics to be raised.
>>
>> - See also 
>> <https://httpwg.org/admin/editors/style-guide#header-and-trailer-fields> for 
>> the preferred editorial style when defining new HTTP fields.
>>
>> - The long line-wrapped example in Section 4.1 would benefit from RFC8792 
>> encoding. In HTTP, a line-wrapped field like the one shown has whitespace 
>> inserted between each line, which is problematic here.
>>
>> This is a bit of a stylistic preference thing. That example and others in 
>> the draft are intentionally similar (with a note about line breaks and extra 
>> space being for display purposes) to closely related and referenced 
>> documents like RFC7515, RFC7519, and RFC6749. The examples from these RFCs 
>> seem to have worked well for readers/implementers in practice, and so we'd 
>> prefer to keep the formatting conventions in this draft the same as in those.
>
> Consistency between documents that specify HTTP protocol elements is 
> important, so I'd ask you to reconsider; while the community that has been 
> developing and implementing the specification may already be familiar with 
> it, aligning with other documents makes it easier for a broader audience. 
> See, for example, the Signatures specification:
> https://httpwg.org/http-extensions/draft-ietf-httpbis-message-signatures.html#name-request-response-signature-
>
> Cheers,
>
>
>>
>> Cheers,
>>
>>
>>
>>
>>> On 19 Jan 2023, at 5:30 am, David Dong via RT 
>>> <drafts-expert-review-comm...@iana.org<mailto:drafts-expert-review-comm...@iana.org>>
>>>  wrote:
>>>
>>> Dear Mark Nottingham and Roy Fielding (cc: oauth WG),
>>>
>>> As the designated experts for the http-fields registry, can you review the 
>>> proposed registration in draft-ietf-oauth-dpop for us? Please see:
>>>
>>> https://datatracker.ietf.org/doc/draft-ietf-oauth-dpop/
>>>
>>> The due date is February 1st, 2023.
>>>
>>> If this is OK, when the IESG approves the document for publication, we'll 
>>> make the registration at
>>>
>>> https://www.iana.org/assignments/http-fields/http-fields.xhtml
>>>
>>> We'll wait for both reviewers to respond unless you tell us otherwise.
>>>
>>> With thanks,
>>>
>>> David Dong
>>> IANA Services Specialist
>>
>> --
>> Mark Nottingham   https://www.mnot.net/
>>
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org<mailto: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.
>
>
> --
> Mark Nottingham   https://www.mnot.net/
>
> _______________________________________________
> OAuth mailing list
> OAuth@ietf.org<mailto:OAuth@ietf.org>
> https://www.ietf.org/mailman/listinfo/oauth

--
Mark Nottingham   https://www.mnot.net/
_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to