OAuth2 può aiutare ad autenticare l'app?

4

Abbiamo un'app mobile che comunica con il nostro server tramite un'API HTTPS RESTful. Abbiamo anche un attaccante che finge di essere la nostra app mentre tentava di comunicare con la nostra API dei servizi web.

Supponiamo che la nostra app in the wild possa essere modificata per ottenere chiavi API, segreti condivisi, chiavi private, ecc.

La mia domanda è: OAuth2 può aiutare a autenticare l'app ? Non sto chiedendo di autenticare la persona. Non si tratta della sicurezza dell'app mobile. Dobbiamo supporre che l'app mobile possa essere compromessa.

In altre parole, sul lato server , come faccio a distinguere tra una richiesta legittima proveniente dalla nostra app e un utente malintenzionato che finge di essere l'app?

È stato suggerito che OAuth2 ti sarà di aiuto. Non penso che sia così. Non penso che OAuth2 sia rilevante per il problema che sto descrivendo.

Ho esaminato il flusso RFC 6749 Grant implicito . Per essere sicuro, non richiede un segreto client. Ma il suo scopo è quello di accedere in un posto e usare quell'autorizzazione altrove. Lo facciamo già tramite la nostra API. Non stiamo cercando un tipo di cosa OpenID Connect, basta proteggere la nostra API dagli aggressori.

Qualcuno può confermare che OAuth2 non ci aiuta, dal lato server dell'equazione? Oppure, se mi sbaglio, per favore spiegaci!

    
posta Edward Barnard 14.09.2015 - 20:36
fonte

3 risposte

1

Hai la chiave del consumatore e il segreto del consumatore dato alle applicazioni? Se lo fai, puoi disabilitare l'accesso alle chiavi compromesse e disabilitare l'accesso. La gestione delle chiavi API può essere eseguita senza OAuth2. Tuttavia, utilizzando OAuth2 è possibile combinare la gestione delle chiavi e utilizzare diversi provider di autenticazione. Per rilevare quali chiavi sono state compromesse, è necessario disporre di analisi API o rapporti di utilizzo. OAuth2 non viene fornito con un provider di autenticazione. La protezione dell'API contro gli aggressori richiede un approccio completo. Vorrei suggerire di iniziare con la gestione delle chiavi API e quindi guardare OAuth2 insieme al provider di autenticazione.

    
risposta data 14.09.2015 - 21:08
fonte
1

Sono d'accordo che OAuth2 sia un framework di autorizzazione e l'autenticazione deve essere considerata per la massima sicurezza. Ti suggerisco di esaminare la registrazione del dispositivo e il blocco dei certificati, per ottenere la "trinità" della registrazione mobile (ID utente, ID dispositivo e certificato valido). È possibile aggiungere l'autenticazione multi-fattore step-up basata su "rischio" (OTP, SMS) in base alla geolocalizzazione oppure revocare il certificato dispositivo per bloccare un attore non valido.

    
risposta data 24.09.2015 - 16:37
fonte
1

Alcuni pensieri aggiuntivi. In un'applicazione mobile, penso, dobbiamo considerare 3 identità

  1. Utenti - Generalmente gestiti da token OAuth dopo la prima autenticazione da rimuovere.
  2. ID applicazione - questa è fondamentalmente l'applicazione che sta tentando di eseguire operazioni per conto dell'utente. È importante mantenere questa identità separata dall'utente per garantire che sia possibile tenere traccia, abilitare l'accesso disabilitato a determinate applicazioni in base a vari scenari E può anche aiutare con la fatturazione, il monitoraggio. Come suggerito, la gestione delle chiavi API sarebbe la soluzione migliore.
  3. ID dispositivo - questo è in qualche modo legato all'utente, ma nel caso in cui supporti più utenti sullo stesso dispositivo, sarebbe utile avere queste informazioni. Inoltre, un sacco di metodo di autenticazione basato sul comportamento / rischio userebbe queste informazioni. L'ID dispositivo dovrebbe essere qualcosa che viene generato durante l'installazione iniziale e registrato come parte dell'accesso / connettività iniziale.
risposta data 28.09.2015 - 20:32
fonte

Leggi altre domande sui tag