Oauth 2.0: client id e segreto client esposti, è un problema di sicurezza?

Quando un'applicazione client Android oauth 2.0 ha le sue credenziali (client ID e client secret) codificato è molto facile da decompilare l'applicazione e recuperare le credenziali.
Quali sono le conseguenze nell'esposizione del client ID e del segreto ?

  • Webview di Android - Rileva il nome dell'intestazione mentre scorre l'utente
  • Android: Accesso al microfono simultaneamente (ReceachzerIntent + applicazione propria)
  • Il risultato del casting della moltiplicazione di due interi positivi a lungo è valore negativo
  • SINCH :: Numero PhoneNumber per il numero di Indonesia
  • android tempo di timer conto alla rovescia
  • Memorizza oggetti in Android
  • Come regolare il volume del microfono in android?
  • Android, come scegliere salvare la posizione del file?
  • Controllare WiFi e il GPS è collegato o non in Android?
  • Android Studio 1.1.0 Login di Facebook SDK
  • Come dichiarare il layout per il tablet Android da 7 '?
  • Pubblica un file aar a Maven Central con Gradle che non funziona
  • 3 Solutions collect form web for “Oauth 2.0: client id e segreto client esposti, è un problema di sicurezza?”

    So che questa non sarà una buona risposta StackOverflow, ma non mi sento in grado di spiegarla meglio del model di rischio e di sicurezza (RFC 6819). Quindi ecco il paragrafo di get un segreto del cliente e le relative conseguenze.

    Si noti che un'applicazione Android è un client pubblico (un'applicazione nativa per essere più specifica) pertanto, come si dice, non riesce a mantenere riservate le credenziali, ma ancora in grado di proteggere i codici e il codice di authorization.

    Anche interessante per il tuo caso è un esempio di smartphone .

    So che RFC non sono la lettura più divertente, ma sono abbastanza chiari.

    Secondo questo è un problema di sicurezza: http://software-security.sans.org/blog/2011/03/07/oauth-authorization-attacks-secure-implementation

    Nel caso in cui il collegamento smette di funzionare, ecco quello che dice:

    La dipendenza di OAuth da un'authorization basata su browser genera un problema di implementazione ereditaria per applicazioni mobili o desktop che per impostazione predefinita non vengono eseguite nel browser dell'utente. Inoltre, da una prospettiva di sicurezza pura, la preoccupazione principale è quando gli implementatori memorizzano e nascondono la combinazione chiave / segreta nell'applicazione Client stessa. Ciò rende la rotazione della chiave quasi imansible e consente l'accesso non autorizzato al codice sorgente o al binario where il segreto del consumatore è memorizzato. Ad esempio, per compromettere le credenziali client per il client di Twitter su Android, un utente malintenzionato può semplicemente disassemblare classi.dex con lo strumento di distriggerszione Android, dexdump:

    dexdump - d classs.dex 

    Quanto sopra è molto più dettagliato ed è una bella lettura.

    Solo un'osservazione: l'ID cliente non è un segreto per progettazione, quindi in realtà non c'è bisogno di proteggerlo.

    Vedere la sezione 2.2 in RFC 6749 ("The OAuth 2.0 Authorization Framework"):

    L'identificatore client non è un segreto; è esposto al proprietario della risorsa e NON DEVE essere utilizzato da solo per l'authentication client.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.