I don't have the context of the text to respond to the exact wording, but I think we can state that the client MUST use the "request_uri" only once, and then explain that the AS may receive duplicate requests if the browser is reloaded.
On Sat, Aug 29, 2020 at 4:24 AM Torsten Lodderstedt <tors...@lodderstedt.net> wrote: > You are making a good point here. The reason we added the one time use > constraint was the fact the client will include parameters supposed to be > used only once, e.g. the PKCE code_challenge. For a traditional > authorisation request, we would recommend the client to use a per > transaction (== one time use) code_challenge, but PKCE does not require the > AS to enforce it. Mapping this to PAR means, we SHOULD recommend the client > to use the request_uri only once but not require the AS to enforce it. > > Would the following text work for you? > > Since parts of the request content, e.g. the "code_challenge" > parameter value, is unique to a certain authorization request, > the client SHOULD use the "request_uri" only once. > > I also would move this text to section 4. > > > On 27. Aug 2020, at 18:11, Dick Hardt <dick.ha...@gmail.com> wrote: > > > > That is not correct. > > > > The authorization code one-time-use is directly between the client and > the AS. The client has a number of mechanisms to ensure it only presents > the authorization code to the AS once, such as a session that was set when > the user started at the client. > > > > In contrast, in a redirect from the client to the AS, the client loses > control on how many times the user-agent loads the URL at the AS. > Additionally, there is unlikely to be an active browser session at the AS, > so the AS can not easily differentiate between a URL load from the same > user, or different users. If one-time-use, one of them MUST fail. If the > two requests happen to be from the same user (because of a reload, which > the user did because the AS was slow to respond), there is no way for the > AS to know which of the requests is the one that is current in front of the > user. While the AS can internally ensure processing of the request once, > one-time-use would dictate that it provides a failure message to one of the > requests. > > > > /Dick > > > > > > ᐧ > > > > On Thu, Aug 27, 2020 at 7:17 AM Justin Richer <jric...@mit.edu> wrote: > > We already have this same property with authorization codes, and it’s > managed today reasonably well (in my opinion). If you submit the same > request URI twice in the same browser (the refresh you’re talking about), > it shouldn’t start two separate authorization requests, but it would be > reasonable to detect that the same session attached to the same request URI > value showed up twice and continue the session as appropriate. > > > > None of this is in conflict with “one time use”, in my view, since > you’re actively detecting the session and source of the value. > > > > — Justin > > > >> On Aug 26, 2020, at 6:16 PM, Dick Hardt <dick.ha...@gmail.com> wrote: > >> > >> I think one-time use may be overly restrictive, and I don't think it is > the property that we actually want. > >> > >> Give the request URI is in a redirect from the browser, there is a good > chance of a race condition where the same browser request is made more than > once, for example, while the browser is loading the authorization URL at > the AS, the user could refresh the page causing the authorization URL to be > reloaded. Would the reload count as a second use? One could argue it either > way. > >> > >> What I think we want from what I understand, is the request URI MUST be > unique so that there is no confusion on which request is being referenced. > >> > >> I did not see anything about the expiry time of the request URI (but I > did not look super hard). If that is not there, then I think the request > URI MUST expire in a "short" period of time. > >> > >> > >> > >> ᐧ > >> > >> On Wed, Aug 26, 2020 at 1:45 PM Brian Campbell <bcampbell= > 40pingidentity....@dmarc.ietf.org> wrote: > >> Thanks Justin. Just a couple more responses to responses inline below > (but with lots of content that needs no further discussion removed). > >> > >> A TL;DR for the WG is that I'd like to get some wider feedback on the > question of changing the one-time-use condition on the request_uri from a > SHOULD to a MUST. > >> > >> On Tue, Aug 25, 2020 at 4:57 PM Justin Richer <jric...@mit.edu> wrote: > >> Hi Brian, just a couple responses inline where it seemed fitting. > Thanks for going through everything! > >> — Justin > >> > >>> On Aug 25, 2020, at 6:01 PM, Brian Campbell < > bcampb...@pingidentity.com> wrote: > >>> > >>> Thanks for the review and comments Justin. Replies (or attempts > thereat) are inline below. > >>> > >>> > >>> On Wed, Aug 19, 2020 at 2:06 PM Justin Richer <jric...@mit.edu> wrote: > >>> I’ve done a full read through of the PAR specification, and here are > my notes on it. > >>> > >>> > >>> ¶2: Of necessity, this spec mixes parameters in the authorization > endpoint and token endpoint registries into a single request. Is there any > danger of conflict between them? The registry holds them in one list but > they could possibly have different semantics in both places.. > >>> > >>> I think that technically such danger does exist but that it's highly > unlikely in practice. Especially because the only token endpoint parameters > that are relevant to PAR are those that deal with client authentication > (currently client_secret, client_assertion, and client_assertion_type). I'm > also not sure what can reasonably be done about it given the way the > registries are. I guess PAR could update the registration for those three > (client_secret, client_assertion, and client_assertion_type) to also > indicate authorization request as a usage location with some commentary > that it's only for avoiding name collisions. And offer some guidance about > doing the same for any future client auth methods being defined. But > honestly I'm not sure what, if anything, to do here? > >>> > >>> And yes it is super unfortunate that client auth and protocol > parameters got mixed together in the HTTP body. I didn't cause that > situation but I've certainly contributed to it and for that I apologize. > >> > >> I think the only perfect solution is to go back in time and fix the > registries with based on the last decade of knowledge in using them. :P > >> > >> For this, I think maybe being very prescriptive about the fact that the > only parameters from the token endpoint that are allowed here are those > used for client authentication and that when they show up, they’re > interpreted as in the token endpoint request not the authorization endpoint > request. Does that work? > >> > >> I think so, yes.. And will work on incorporating some text towards that > end. > >> > >> > >> > >>> I don’t see why a request URI with unguessable values isn’t a MUST > for one-time-use, is there a reason? > >>> > >>> The reason AFAIK was to not be overly prescriptive and allow for > eventually consistent or not atomic storage of the data by not strictly > requiring the AS to enforce one-time-use. Do you think that's too loose or > could be worded/explained differently or better? > >> > >> I do think it’s too loose and it should be a MUST, and the methods for > enforcing that “MUST” are going to vary based on the deployments and > implementations out there. > >> > >> > >> I'd be okay with making it a MUST but think maybe it'd be good to hear > from a few more people in the WG before committing to that change. > >> > >> Can I ask some folks to weigh in on this one? I'm leaning towards > making the change barring objections. > >> > >> > >> 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 > > ᐧ
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth