Molti servizi oggi raccomandano ancora il flusso implicito per uno scambio di token OpenID Connect / Oauth2 durante lo sviluppo di app a singola pagina. (Vedi Okta , Google , Auth0 )
Alcune nuove indicazioni indicano come utilizzare il flusso di codice di autorizzazione senza un client_secret in la fase di scambio di token, che posso essere d'accordo per i motivi citati nell'articolo (ad esempio i token non vivono nella cronologia del browser, log web , ecc.). Perché questo concetto non ha compiuto ulteriori progressi con PKCE? Invece di omettere completamente il client_secret, perché non utilizzare uno dinamico in quanto è raccomandato per le applicazioni native? Le SPA e le app native sono entrambe considerate "clienti pubblici" in cui un segreto non può essere conservato in modo sicuro, ma solo le app native ricevono la raccomandazione PKCE mentre le SPA sembrano essere conservate nel passato.
Capisco che le implicazioni sulla sicurezza che PKCE sta cercando di risolvere non si riferiscano direttamente a un solo contesto del browser, ma non potrebbero essere viste come un meccanismo di difesa in profondità e comunque utilizzate? So per esperienza che Google non ti consentirà di generare credenziali per applicazioni Web e tentare di utilizzare qualsiasi cosa ma implicita per una SPA (vedi questo problema ), il flusso del codice di autorizzazione prevede un client_secret e lo scambio PKCE funziona solo se si sceglie un tipo di credenziale di app nativa, ma non è possibile specificare https redirect_uri per la propria applicazione.
Altri provider consentono a PKCE il flusso di codice di autorizzazione in un contesto Web, ma non è raccomandato da essi. Ho sbagliato nel volerlo e utilizzarlo? Sembra abbastanza semplice aggiungere i passaggi aggiuntivi per generare e superare le sfide del codice con le API Web Crypto disponibili ( targeting nuovi browser e shimming in base alle esigenze).