2011-02-10 5 views
5

La maggior parte delle API richiede agli sviluppatori di ottenere una chiave API. La chiave API viene quindi utilizzata per la limitazione della velocità. Che cosa impedisce a uno sviluppatore di ottenere più chiavi API come modo per impedire il limite di frequenza?Che cosa impedisce a uno sviluppatore di ottenere più chiavi API

Il problema che sto affrontando è decidere come emettere una chiave API. L'unica cosa che ho trovato utile è emettere più di una "chiave sviluppatore".

  • non ho trovato un modo per valutare realmente limitare l'utilizzo di un'applicazione (qualcuno potrebbe ottenere più chiavi e la sequenza dar loro da mangiare alla sua applicazione per ottenere tassi più elevati per questa applicazione)
  • e non ho trovato un modo per conservare la chiave per ogni applicazione (qualcuno potrebbe ottenere la chiave e usarlo su più domini)

risposta

5

una chiave API non è lo strumento giusto per limitazione della velocità, soprattutto se l'API è tornato -end callable. Funziona se il codice è integrato nel browser dell'utente finale, poiché funge da "neutro" che può garantire che l'identità dell'applicazione non venga falsificata, ma non se viene chiamata da un servizio o un'applicazione scritta dagli sviluppatori del client .

Il controllo dell'utilizzo delle risorse è un problema economico, quindi richiede una soluzione economica. Richiedere un token call hashcash univoco è un buon modo per far rispettare questo. (Hashcash è uno schema di prova di lavoro - richiede al chiamante di dimostrare di aver speso un sacco di tempo CPU in un'attività inutile come un modo per dimostrare che la richiesta ha valore per loro.)

anche scalabile in base al carico - se il servizio viene sovraccaricato, è possibile aumentare dinamicamente il "prezzo" nei primi zero bit richiesti nel token; ogni aumento di un bit ridurrà il tasso di richiesta della metà. (Assicurati che la tua API possa comunicare il "prezzo" hashcash se è dinamico.)

+0

Mi chiedo, come si potrebbe fare un'API che non è "back-end chiamabile"? – silow

+0

+1 collegamento hashcash interessante – orangepips

+0

@silow Sto pensando a qualcosa come Google Maps, dove l'API pubblica fa parte di un'applicazione interattiva incorporabile che viene eseguita nel browser; l'API HTTP tra il componente JavaScript di Google Maps e i server back-end di Google è non pubblica. –

Problemi correlati