Should Supabase make PKCE optional for confidential clients in the OAuth server? #44326
-
|
I am currently setting up Shopify as a confidential OAuth client for Supabase. After getting everything configured and connected, I found out that Shopify does not supply a Here is a snippet from RFC 9700 section 2.1.1):
The last point is what is most important. Because the There should be a toggle to enable/disable PKCE flow, purely to make it compatible with other clients that don't support the full PKCE flow yet. Maybe if a user were to enable it, they would be warned that disabling it is insecure, or something along those lines. I could also be missing a really important detail about how the OAuth server and PKCE works as well, since it is quite a lot to wrap my head around. I am not sure if it is something you can just "turn off" either. Or maybe there are a few more exploits found recently that make the PKCE flow a hard requirement, and I should somehow convince Shopify to implement it themselves. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
|
Yeah, you've hit on a known friction point. The OAuth server implementation currently leans heavily into the OAuth 2.1 draft, which effectively mandates PKCE for all client types. I believe the goal was to simplify the security model by moving away from the "nonce vs PKCE" ambiguity, even though the RFCs allow those alternatives for confidential clients. A toggle for confidential clients would definitely solve the Shopify compatibility issue. Right now that enforcement is hardcoded in the underlying GoTrue engine, so it's not something you can just switch off in your local config. It's worth raising this as a specific compatibility request in the |
Beta Was this translation helpful? Give feedback.
Yeah, you've hit on a known friction point. The OAuth server implementation currently leans heavily into the OAuth 2.1 draft, which effectively mandates PKCE for all client types. I believe the goal was to simplify the security model by moving away from the "nonce vs PKCE" ambiguity, even though the RFCs allow those alternatives for confidential clients.
A toggle for confidential clients would definitely solve the Shopify compatibility issue. Right now that enforcement is hardcoded in the underlying GoTrue engine, so it's not something you can just switch off in your local config. It's worth raising this as a specific compatibility request in the
supabase/authrepo, as the team is usually…