La mia domanda riguarda principalmente OpenID Connect, ma può essere applicata anche a OAuth 2.0.
Quando si tratta di un client OpenID Connect che fa la danza "autorizza" con il provider OpenID Connect, il client invia il suo ID client al provider per indicare quale è. Questo viene utilizzato in luoghi come le schermate di "consenso", che mostrano in modo visibile quali ambiti si è disposti a consentire al client di utilizzare con la Parte di Relying come parte dei token di accesso che verranno emessi. L'ID cliente potrebbe anche essere contrassegnato come "speciale" in qualche modo, come se fosse per una "app ufficiale" potrebbe consentire a questa app di superare determinate schermate di consenso che altrimenti sarebbero visualizzate a terze parti o mostrare spunti visivi di rilievo per l'utente che questa è un'app "affidabile" ufficiale.
La mia domanda ruota attorno a come impedire che tali app vengano impersonate. Con le app lato server queste sono protette mediante l'uso di un "Client Secret" che non è disponibile per un client malintenzionato. Con i client basati su browser (utilizzando il flusso "implicito"), il "Client ID" è associato a uno specifico reindirizzamento post-autenticazione, il che significa che un client malintenzionato che utilizza fraudolentemente l'ID client del client "ufficiale" non vedrebbe mai il token, dal momento che il browser reindirizza nuovamente nel posto sbagliato (o l'URL di reindirizzamento sarebbe rifiutato.
In che modo le app native, come le app iOS o Android, impediscono questo tipo di attacco in cui l'ID client / segreto viene sottratto a un'app legittima e utilizzato da un'app canaglia per impersonarlo durante i flussi di autorizzazione di OpenID Connect ? Per quanto vedo, potrei "rubare" l'ID cliente (e / o il segreto del cliente) incorporato nell'app "ufficiale", caricare un'app canaglia su App Store / Play Store che usa detto ID / Segreto, quindi assicurati che l'URI di reindirizzamento utilizzato sia uguale all'app ufficiale. La mia app canaglia ascolterebbe quindi l'URL di reindirizzamento per i token risultanti e durante la fase di autorizzazione le schermate visualizzate all'utente segnalerebbero in modo evidente che si tratta di un'app "ufficiale" e / o di ignorare completamente tali schermate di consenso, anche se questo è un'app di terze parti.
(Ci scusiamo per il muro di testo che porta alla domanda! Volevo solo assicurarmi che tutte le mie supposizioni siano corrette! Per favore, dimmi se ho qualcosa di sbagliato!)