Agreed with keeping DPoP simple, which was why I was asking if the proposal 
could indicate it was targeting some of these other use cases.

It's clear from the feedback that the current draft does not clearly express 
these use cases. There is overlap with DPoP – on a technical level, Message 
Signatures ought to be able to handle DPoP's use cases, albeit complexity in 
different places. But not vice-versa.


The current draft being proposed for adoption I believe is fixed to the same 
HTTP properties that DPoP leverages, and thus appears to be targeting the same 
use cases with a different proof expression.

This is a misconception that should get clarified in the draft. One of the core 
concepts behind Message Signatures is that it defines a standard mechanism for 
signature components of an HTTP message and for communicating which components 
are signed, but it does not dictate which components need to be signed. That 
will vary from deployment to deployment, based on which components are 
semantically meaningful. E.g., an RS that accepts POST requests and receives 
parameters in the request body may require that the `Digest` header field be 
signed, whereas one that only accepts GET requests may only need the URL to be 
signed. The draft defines an `Accept-Signature` header field that can be 
included in a message to indicate which components need to be signed.

Justin's draft introduces a requirement that signatures intended to provide PoP 
for OAuth MUST sign the `Authorization` header field, since that's where the 
access token is. Beyond that, RSes can indicate their API-specific signing 
requirements via `Accept-Signature`. (And/or through out-of-band documentation)

The duplication within the token is also a trade-off: it allows an 
implementation to have a white list of acceptable internal values, if say the 
host and path are rewritten by reverse proxies.

I agree, there are trade-offs. For some, especially those already using JWTs 
all over the place, the simplicity of using a format and libraries they are 
already familiar with may outweigh the risk I described.

FWIW, the Message Signatures approach to the situation you described would be 
for the reverse proxy to add an `X-Forwarded-Host` or similar header field, and 
add a signature over that, the `Host` header field, and the client's signature. 
(Message Signatures supports multiple signatures on one message) I like this 
approach as the signatures are guaranteed to be validated against the same data 
the application uses. (Since there's only one copy of the data)

—
Annabelle Backman (she/her)
[email protected]<mailto:[email protected]>




On Oct 13, 2021, at 11:41 AM, David Waite 
<[email protected]<mailto:[email protected]>> wrote:

CAUTION: This email originated from outside of the organization. Do not click 
links or open attachments unless you can confirm the sender and know the 
content is safe.



On Oct 13, 2021, at 12:26 PM, Richard Backman, Annabelle 
<[email protected]<mailto:[email protected]>> wrote:

Those issues that could be addressed without completely redesigning DPoP have 
been discussed within the Working Group multiple times. (See quotes and meeting 
notes references in my previous message) The authors have pushed back on 
extending DPoP to cover additional use cases them due to a desire to keep DPoP 
simple and lightweight. I don't begrudge them that. I think it's reasonable to 
have a "dirt simple" solution, particularly for SPAs given the relative 
limitations of the browser environment.

Other issues are inherent to fundamental design choices, such as the use of JWS 
to prove possession of the key. E.g., you cannot avoid the data duplication 
issue since a JWS signature only covers a specific serialization of the JWT 
header and body.

Agreed with keeping DPoP simple, which was why I was asking if the proposal 
could indicate it was targeting some of these other use cases. The current 
draft being proposed for adoption I believe is fixed to the same HTTP 
properties that DPoP leverages, and thus appears to be targeting the same use 
cases with a different proof expression.

The duplication within the token is also a trade-off: it allows an 
implementation to have a white list of acceptable internal values, if say the 
host and path are rewritten by reverse proxies. It also allows an 
implementation to give richer diagnostic information when receiving 
unacceptable DPoP tokens, which may very well come at runtime from an 
independently-operating portion of an organization reconfiguring intermediaries.

-DW

_______________________________________________
OAuth mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to