Perché le API utilizzano le API API anziché i nomi utente?

10

Ora è comune utilizzare una chiave API per identificare un agente quando si ha a che fare con un'API. Quali sono i vantaggi di farlo utilizzando un nome utente specificato dallo sviluppatore? È semplicemente che la chiave API è più difficile da indovinare o esiste una ragione più profonda?

    
posta Sinan Taifour 20.03.2013 - 13:11
fonte

4 risposte

7

Posso pensare a una serie di motivi per cui potresti usare una chiave:

  • Previene l'ipotesi, specialmente se la chiave raddoppia come parte dell'autenticazione. Questo è ciò che la risposta di Terry sta cercando di dirti: perché consentire a un utente malintenzionato di provare semplicemente più nomi utente da un dizionario quando puoi farli cercare in uno spazio di indirizzi di grandi dimensioni (dovrebbe essere piuttosto grande, più grande di 128 bit almeno). Combinato con la limitazione della velocità e il blocco IP, si filtrerebbe un numero elevato di attacchi.
  • Impedisci che l'account degli utenti venga compromesso se il nome utente è pubblico. Se il mio nome utente è antony e la mia chiave API è antony , ottimo, sei a metà strada per entrare. Tuttavia, se la mia chiave API è qualcosa di casuale, diventa molto più difficile (vedi punto 1).
  • Permetti a più dispositivi di accedere al sistema e per estensione abilita un tipo di controllo di accesso per i dispositivi. Se hai un nome utente memorabile come chiave API, diventa difficile revocarlo a meno che non ci sia un segreto API corrispondente. Se stai usando i segreti dell'API, i segreti per dispositivo raggiungono un risultato simile.
  • Impedire che una chiave trapelata identifichi l'utente in alcun modo. Questo è, naturalmente, del tutto inutile se il contenuto dell'applicazione o del dispositivo identifica l'utente.

Questo elenco probabilmente non è esaustivo.

    
risposta data 20.03.2013 - 14:42
fonte
3

Come altri hanno dichiarato di creare un ID univoco per ciascun utente.

Ma per AWS in particolare , l'autenticazione della richiesta, identifica l'elementoAWSAccessKeyId la chiave segreta che è stata utilizzata per calcolare la firma e (indirettamente) lo sviluppatore che ha effettuato la richiesta. "

    
risposta data 20.03.2013 - 16:48
fonte
1

Nella maggior parte dei sistemi che ho visto, le chiavi API non agiscono semplicemente come mezzo di identificazione. Di solito raddoppiano come mezzo di autenticazione.

Lo sviluppatore non sta digitando la chiave API per ogni sua richiesta. La chiave verrà probabilmente memorizzata nel codice o in un file di configurazione da qualche parte. Non ha senso consentire allo sviluppatore di scegliere un nome utente e una password memorizzabili su una chiave API casuale.

    
risposta data 20.03.2013 - 13:14
fonte
1

La chiave API è semplicemente per identificare quale servizio sta facendo la richiesta. Non so che ci sia una ragione particolare per loro di essere il modo in cui sono diversi dal fatto che è più semplice distribuire chiavi casuali piuttosto che nomi utente poiché è tutto gestito da computer ed evita problemi di persone che vogliono lo stesso nome utente.

Forse potrebbero anche esserci casi in cui il nome utente potrebbe essere scelto per essere ingannevole. Non sono sicuro di quanto sarebbe efficace visto che non è qualcosa che l'utente medio vedrebbe e spero che un utente più esperto non si innamori di esso, ma se potessi rendere il tuo nome utente Facebook "FacebookAdmin" non sarebbe essere particolarmente bravo.

    
risposta data 20.03.2013 - 14:19
fonte

Leggi altre domande sui tag