2012-06-26 14 views
19

Se tutte le chiamate API vengono inviate tramite https, HMAC aggiunge ulteriore sicurezza? Ad esempio, in oauth 2, il client invia la sua chiave segreta al provider senza alcun tipo di hashing. Questo è considerato sicuro perché è finito su https? Anche se non rigorosamente oauth, usare HMAC in questa chiamata rende oauth 2 più sicuro? Se è così, perché non è una parte standard di oauth 2?HMAC è necessario se tutte le chiamate API vengono effettuate tramite https?

risposta

13

Lo standard OAuth 2 richiede che il server di autorizzazione DEVE utilizzare HTTPS su tutti i suoi endpoint e il client DOVREBBE utilizzare un callback protetto con HTTPS. Poiché i contenuti dei messaggi (intestazioni, parametri di query e frammenti che considerano OAuth) sono noti solo al server e al client, l'utilizzo di una connessione HTTPS è considerato sicuro. Quindi non c'è alcun vantaggio nell'usare una firma separata per la richiesta di autorizzazione, ecco perché tali firme non sono nemmeno menzionate nello standard.

Questo non è necessariamente valido per la risposta. Se il client riceve la risposta di autorizzazione a un callback non protetto, non può verificarne la validità. In tali casi, un utente malintenzionato può inviare risultati di autorizzazione arbitrari al client. Aggiungendo una firma con i parametri di callback, puoi evitare questo. Tuttavia, sembra essere una soluzione migliore per utilizzare l'autenticazione reciproca client/server con un callback HTTPS.

Mentre non vi è alcun reale vantaggio nell'utilizzare le firme durante l'autorizzazione, possono essere utili per accedere alle risorse protette per evitare di rubare i token di accesso. Questo è il motivo per cui il tipo di token MAC è nello standard, vedere section 7.1.

0

HMAC è per l'autenticazione che determina chi sei, https è per la sicurezza del trasporto che garantisce che uno nel mezzo possa vedere il contenuto del tuo trasporto.

Il server di autorizzazione Oauth 2 utilizza la chiave segreta o la password per determinare chi sei. Il server di risorse Oauth2 utilizza token dal server di autorizzazione per determinare chi sei. L'utilizzo di https o meno dipende dalla protezione della chiave segreta e dei token.

Problemi correlati