Ho già avuto a che fare con OAuth ma non sono molto sicuro dell'API con cui sto lavorando ora. La mia domanda è fondamentalmente, è tristemente insicuro ?
A quanto ho capito, oAuth fa quanto segue (approssimativamente):
-
Il servizio X mi fornisce una chiave e un segreto
-
Chiedo all'utente di concedermi l'accesso al servizio X
-
Invio la chiave e il segreto al servizio X per verificare. Il servizio X mi fornisce un token di richiesta, che invio con l'utente.
-
L'utente conferma che vuole lasciarmi entrare, e il servizio me li restituisce con un token che posso conservare nel mio database e utilizzare per effettuare chiamate API di servizio per loro
-
Ad un certo punto il token scade, ma il servizio sa chi sono, quindi posso semplicemente chiederne uno nuovo
Tuttavia, l'API di cui sto trattando funziona in questo modo (su https, obv):
-
Mi forniscono una chiave API.
-
L'utente mi fornisce il nome utente e la password
-
Li trasmetto al servizio insieme alla mia chiave API, quindi li scarto
-
Il servizio mi restituisce un token che posso utilizzare per effettuare chiamate API per loro conto (utilizzando il token e la mia chiave API), che memorizzo nel mio database.
-
A un certo punto, il token scade e ho bisogno di riceverne uno nuovo in modo che l'utente debba autenticarsi di nuovo.
Ho ragione nel ritenere che i principali punti deboli di questo schema rispetto a OAuth siano i seguenti?
- non c'è alcuna garanzia che la richiesta provenga dal mio server, quindi se qualcuno ha fatto irruzione nel mio db, potrebbe fare chiamate API a volontà per tutti i miei utenti, usando la mia chiave API, che potrebbero ottenere dall'analisi del POST che ho da inviare quando si autentica un determinato utente
- Devo continuare a riautenticare l'utente con una password, ecc. perché è fondamentalmente pericoloso avere questi dati in giro
- Sono obbligato a fornire una connessione HTTPS affinché l'utente possa digitare la sua password di servizio in primo luogo
Non è una questione di vita o di morte - non sono i conti bancari delle persone ecc. - ma sarebbe bello essere ragionevolmente sicuri che non ci sarà una datapix di Exxon Valdez.
Grazie per qualsiasi aiuto o consiglio.