Apologies accepted! :-)
Am 28.07.22 um 01:11 schrieb Brian Campbell:
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.
2.
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
canrespond 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
2.
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.
2.
“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