Perché usare la concessione implicita è più sicura che dare la tua chiave segreta?

6

L'azienda per cui lavoro ha creato un'API utilizzata dai dispositivi mobili. Ho letto su oAuth per le applicazioni mobili e da quello che ho capito si consiglia di utilizzare concessione implicita anziché incorporare la chiave segreta nella tua applicazione.

Perché il flusso implicito è considerato più sicuro in questo caso? Non è questo che consente a chiunque di accedere alla tua API indipendentemente dal fatto che abbiano o meno la chiave segreta?

    
posta Abe Miessler 12.06.2015 - 17:49
fonte

2 risposte

2

Isn't this just allowing anyone to access your API regardless of whether they have the secret key or not?

Sì, la concessione implicita non ha la capacità di autenticare il client, cosa che le altre sovvenzioni possono fare - introducendo ulteriormente i vettori di attacco che l'autorizzazione concede, che richiede un segreto client, non hanno esperienza.

Il caso d'uso per la concessione implicita è l'autenticazione degli utenti finali e l'accesso da parte del cliente a una risorsa (probabilmente di proprietà dell'utente finale) e dovrebbe essere utilizzato dalle App SPA (e qualsiasi altra app basata su Javascript / agente utente).

Se l'autenticazione del client è importante, è necessario implementare una diversa sovvenzione.

La concessione implicita è più sicura nel senso che non espone il segreto del client, che può essere condiviso tra le tue applicazioni interne.

Ecco una buona lettura su quando utilizzare che (OAuth2) concede e OIDC scorre link

    
risposta data 07.12.2018 - 12:49
fonte
1

La ragione principale per cui non si dovrebbe usare una chiave segreta è che non si può fidare del dispositivo per proteggere la chiave segreta. Probabilmente capisci che la chiave segreta non è sicura in un'applicazione client javascript perché il javascript di solito è in qualche modo facilmente leggibile. Allo stesso modo, un hacker o un ladro che mette le mani su un tablet o su uno smartphone potrebbe essere in grado di ottenere il binario per la propria applicazione ed estrarre la chiave segreta dal codice sorgente. Le chiavi segrete sono idealmente utilizzate solo per le comunicazioni server-server o per le app interne alla tua organizzazione.

    
risposta data 23.07.2017 - 00:17
fonte

Leggi altre domande sui tag