La specifica OAuth2 descrive il tipo di concessione e il flusso di autorizzazione delle credenziali della password del proprietario della risorsa qui . Comprendo che solo le applicazioni client "affidabili" possono utilizzare questa concessione, ad esempio l'applicazione client "ufficiale" per iPhone o Android tramite l'API di back-end.
La mia domanda è: come posso garantire che le richieste provenienti da fonti che sostengono di essere questa applicazione client possano essere attendibili? Ad esempio:
-
Ho registrato la mia app Android sul mio server OAuth2 con l'id client_id di
android_app
con accesso al tipo di concessione dipassword
(cioè credenziali password proprietario risorse). -
Poiché l'app per Android è un'applicazione client, quindi ho pensato che non sia affidabile mantenere il segreto del cliente "segreto" e quindi non averlo assegnato. La configurazione dell'app contiene client_id e grant_type e l'endpoint di autenticazione.
-
Un utente decompila / decomprime / desoffuce la mia app e trova il client id e l'endpoint
Che cosa impedisce loro di fare richieste di autenticazione a quell'endpoint con il client id? Prenderò in considerazione l'assegnazione al client di un client_secret, ma sembra che non risolverà il problema perché un utente potrebbe trovarlo solo nell'app.