> On 11. May 2020, at 07:38, Neil Madden <neil.mad...@forgerock.com> wrote: > > There is no attack that this prevents so your claim of improving security is > unsubstantiated. I can’t see how we can ship a 2.1-compliant-by-default AS > while this requirement remains so I don’t support it.
Are you saying PKCE does not prevent any attack? > > Neil > >> On 11 May 2020, at 01:35, Dick Hardt <dick.ha...@gmail.com> wrote: >> >> >> It is a MUST to enforce consistency across all clients, and therefore to >> improve security for all clients. >> >> An AS can decide to be OAuth 2.1 for all new clients, and encourage existing >> clients to migrate to OAuth 2.1 (add support for PKCE). >> >> If the client wants OAuth 2.1, the AS will enforce it. >> >> I don't follow your logic below wrt. what an attacker will do. >> >> >> On Sun, May 10, 2020 at 1:46 PM Neil Madden <neil.mad...@forgerock.com> >> wrote: >> Let’s go back to basics. Why is this clause a MUST in the 2.1 spec? What >> does that accomplish? >> >> It doesn’t provide any security benefit - an attacker can just as easily >> send a code_challenge as a legitimate client, there’s no secret involved. So >> enforcing PKCE in this way doesn’t prevent any direct attacks. Presumably >> then making it a hard fail is designed to drive adoption of PKCE - turning >> the thumbscrews on clients that otherwise wouldn’t bother? >> >> But if we are saying that an AS can happily support legacy 2.0 clients >> without PKCE then the pressure of the MUST clause evaporates and they are >> free to ignore it again. What’s the incentive for an AS deployment to ever >> enforce 2.1 compliance if all it adds is a potential incompatibility with no >> security gain? (Given that servers and clients can already support PKCE if >> they wish). >> >> All I can see this doing is delaying adoption of 2.1 by ASes. >> >> — Neil >> >> >>> On 10 May 2020, at 21:35, Dick Hardt <dick.ha...@gmail.com> wrote: >>> >>> Sounds like your clients that have set PKCE to be mandatory will then be >>> OAuth 2.1 compliant with no extra work. >>> >>> A deployment can decide when they want to be compliant. That is not the >>> specifications decision. I'm unclear on what point you are wanting to make >>> below. >>> >>> >>> On Sun, May 10, 2020 at 1:28 PM Neil Madden <neil.mad...@forgerock.com> >>> wrote: >>> This is the same as having 2.1 compliance turned off by default. We already >>> have a per-client setting to make PKCE mandatory. >>> >>> If you can turn it off, what’s the point of making it a MUST in the spec? >>> What does an optional MUST even mean for an AS to claim 2.1 compliance? >>> >>>> On 10 May 2020, at 21:19, Dick Hardt <dick.ha...@gmail.com> wrote: >>>> >>>> Is there a reason why a server can not support both OAuth 2.0 and OAuth >>>> 2.1? The version supported could be dependent on the client id, ie older >>>> clients could still be OAuth 2.0, and newer clients would be OAuth 2.1, >>>> and PKCE would be enforced. >>>> ᐧ >>>> >>>> On Sun, May 10, 2020 at 1:05 PM Neil Madden <neil.mad...@forgerock.com> >>>> wrote: >>>> But if an AS upgrades to OAuth 2.1 then it MUST reject authorization >>>> requests that don’t include a code_challenge (section 4.1.2.1), so this >>>> will only be possible when all clients support PKCE. >>>> >>>> This makes it impossible for a 2.1-compliant AS to also support non-PKCE >>>> 2.0 clients (i.e., the vast majority of them). >>>> >>>> I think we can have a 2.1 spec that says clients and servers MUST support >>>> PKCE without this hard-fail clause.. Otherwise I can’t see how we’d ever >>>> ship with 2.1-compliance enabled out-of-the-box. >>>> >>>> — Neil >>>> >>>>> On 10 May 2020, at 20:38, Dick Hardt <dick.ha...@gmail.com> wrote: >>>>> >>>>> Hi Mike, I would consider upgrading to OAuth 2.1 to be voluntary, just as >>>>> the other extensions. Similarly, OAuth 1.0 deployments upgrading to OAuth >>>>> 2.0 was voluntary. >>>>> >>>>> Would you clarify why you think upgrading to OAuth 2.1 would be mandatory? >>>>> >>>>> >>>>> On Sun, May 10, 2020 at 12:02 PM Mike Jones >>>>> <Michael.Jones=40microsoft....@dmarc.ietf.org> wrote: >>>>> I agree with actively maintaining and improving the OAuth 2.0 specs by >>>>> adding enhancements that are voluntary to use. I’ve worked on many such >>>>> improvements, including Dynamic Client Registration, Authorization >>>>> Metadata, the Device Flow, Token Exchange, DPoP, and support PAR and RAR, >>>>> etc. The issue that’s the subject is the current discussion is whether >>>>> to make use of another enhancement, PKCE, mandatory in cases where it’s >>>>> actually not needed, rather than making its use voluntary like the other >>>>> enhancements, which I certainly support. >>>>> >>>>> >>>>> >>>>> -- Mike >>>>> >>>>> >>>>> >>>>> From: Torsten Lodderstedt <torsten=40lodderstedt....@dmarc.ietf.org> >>>>> Sent: Sunday, May 10, 2020 3:15 AM >>>>> To: Mike Jones <michael.jo...@microsoft.com> >>>>> Cc: Daniel Fett <f...@danielfett.de>; oauth@ietf.org >>>>> Subject: [EXTERNAL] Re: [OAUTH-WG] OAuth 2.1 - require PKCE? >>>>> >>>>> >>>>> >>>>> Hi Mike, >>>>> >>>>> >>>>> >>>>> Mike Jones <Michael.Jones=40microsoft....@dmarc.ietf.org> schrieb am Fr. >>>>> 8. Mai 2020 um 18:55: >>>>> >>>>> OAuth 2.1 was supposed to not introduce breaking changes. >>>>> >>>>> I cannot remember the WG met that decision. Can you please refer to the >>>>> respective thread? >>>>> >>>>> >>>>> >>>>> Requiring exact redirect URI matching is already a breaking change. Do >>>>> you oppose against this as well? >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> If you want to do that, please do it in TxAuth instead. >>>>> >>>>> >>>>> >>>>> Interesting statement. Does it mean you want to conserve OAuth 2.0 and >>>>> force any enhancements/improvements to go into TXAuth? This would cause >>>>> huge migration efforts for existing deployments wanting to benefit from >>>>> those enhancements. >>>>> >>>>> >>>>> >>>>> I think existing deployments are better served by actively maintaining >>>>> and evolving the 2.x line. For example, PAR and RAR are attempts to >>>>> improve OAuth 2.x and make it usable for new use cases. That’s better >>>>> protection of existing investments than sending them of to TXAuth. >>>>> >>>>> Kind regards, >>>>> >>>>> Torsten. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> -- Mike >>>>> >>>>> >>>>> >>>>> From: OAuth <oauth-boun...@ietf.org> On Behalf Of Daniel Fett >>>>> Sent: Thursday, May 7, 2020 11:50 PM >>>>> To: oauth@ietf.org >>>>> Subject: Re: [OAUTH-WG] OAuth 2.1 - require PKCE? >>>>> >>>>> >>>>> >>>>> +1 to all what Aaron said. Thanks for pointing this out! >>>>> >>>>> >>>>> >>>>> We need to address this in the security BCP and this will be a normative >>>>> change that affects OpenID Connect Core (just as our current >>>>> recommendation on the usage of nonce). >>>>> >>>>> >>>>> >>>>> We would then have: >>>>> >>>>> >>>>> >>>>> - use PKCE, except if you use OIDC with a nonce, then you don't need >>>>> PKCE, except if you are a public client, then you still need PKCE. >>>>> >>>>> - use state, except if you use PKCE, then you don't need state. >>>>> >>>>> >>>>> >>>>> I think there are very good reasons to simplify this down to >>>>> >>>>> >>>>> >>>>> - use PKCE >>>>> >>>>> - you may or may not use state >>>>> >>>>> >>>>> >>>>> First and foremost, not many people will understand why there are cases >>>>> when the BCP/OAuth 2.1 mandate PKCE and some where they don't. However, >>>>> understanding why you have to do something is key to compliance. The >>>>> short version "PKCE protects the code; there is a specific case where it >>>>> is not needed, but its better to use it all the time" is easy to >>>>> understand. We will not see many implementations following the long >>>>> version above correctly. >>>>> >>>>> >>>>> >>>>> Second, we dramatically reduce technical complexity by reducing cases >>>>> that need to be handled. We reduce correctness and compliance testing >>>>> complexity in the same way. We reduce the cost of security analysis, >>>>> which scales really badly to more cases. >>>>> >>>>> >>>>> >>>>> And finally, using nonce to protect against code injection is less robust >>>>> than PKCE. AS have a better track record than clients when it comes to >>>>> correctly implementing security mechanisms. >>>>> >>>>> >>>>> >>>>> Yes, this will make a number of implementations non-spec-compliant, but I >>>>> do not think that this is a huge problem. Software needs to adapt all the >>>>> time and a software that has not been changed in a while is probably not >>>>> one you would want to use anyway. We are setting a new goal for >>>>> implementations to meet and eventually, maintained implementations will >>>>> get there. >>>>> >>>>> >>>>> >>>>> -Daniel >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Am 08.05.20 um 01:38 schrieb Aaron Parecki: >>>>> >>>>> Backing up a step or two, there's another point here that I think has >>>>> been missed in these discussions. >>>>> >>>>> >>>>> >>>>> PKCE solves two problems: stolen authorization codes for public clients, >>>>> and authorization code injection for all clients. We've only been talking >>>>> about authorization code injection on the list so far. The quoted section >>>>> of the security BCP (4.5.3) which says clients can do PKCE or use the >>>>> nonce, is only talking about preventing authorization code injection. >>>>> >>>>> >>>>> >>>>> The nonce parameter solves authorization code injection if the client >>>>> requests an ID token. Public clients using the nonce parameter are still >>>>> susceptible to stolen authorization codes so they still need to do PKCE >>>>> as well. >>>>> >>>>> >>>>> >>>>> The only case where OpenID Connect clients don't benefit from PKCE is if >>>>> they are also confidential clients. Public client OIDC clients still need >>>>> to do PKCE even if they check the nonce. >>>>> >>>>> >>>>> >>>>> OpenID Connect servers working with confidential clients still benefit >>>>> from PKCE because they can then enforce the authorization code injection >>>>> protection server-side rather than cross their fingers that clients >>>>> implemented the nonce check properly. >>>>> >>>>> >>>>> >>>>> I really don't think it's worth the amount of explanation this will take >>>>> in the future to write an exception into OAuth 2.1 or the Security BCP >>>>> for only some types of OpenID Connect clients when all clients would >>>>> benefit from PKCE anyway. >>>>> >>>>> >>>>> >>>>> Aaron >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Wed, May 6, 2020 at 10:48 AM Dick Hardt <dick.ha...@gmail.com> wrote: >>>>> >>>>> Hello! >>>>> >>>>> >>>>> >>>>> We would like to have PKCE be a MUST in OAuth 2.1 code flows. This is >>>>> best practice for OAuth 2.0. It is not common in OpenID Connect servers >>>>> as the nonce solves some of the issues that PKCE protects against. We >>>>> think that most OpenID Connect implementations also support OAuth 2.0, >>>>> and hence have support for PKCE if following best practices. >>>>> >>>>> >>>>> >>>>> The advantages or requiring PKCE are: >>>>> >>>>> >>>>> >>>>> - a simpler programming model across all OAuth applications and profiles >>>>> as they all use PKCE >>>>> >>>>> >>>>> >>>>> - reduced attack surface when using S256 as a fingerprint of the >>>>> verifier is sent through the browser instead of the clear text value >>>>> >>>>> >>>>> >>>>> - enforcement by AS not client - makes it easier to handle for client >>>>> developers and AS can ensure the check is conducted >>>>> >>>>> >>>>> >>>>> What are disadvantages besides the potential impact to OpenID Connect >>>>> deployments? How significant is that impact? >>>>> >>>>> >>>>> >>>>> Dick, Aaron, and Torsten >>>>> >>>>> >>>>> >>>>> ᐧ >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> 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 >>>>> ᐧ >>>>> _______________________________________________ >>>>> 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