Dove posizionare una chiave API: un'intestazione HTTP personalizzata VS l'intestazione Autorizzazione con uno schema personalizzato

8

Sto progettando un'API REST utilizzando l'autorizzazione / autenticazione tramite una chiave API.

Ho cercato di capire qual è il posto migliore e ho scoperto che molte persone suggeriscono di utilizzare un'intestazione HTTP personalizzata come ProjectName-Api-Key , ad esempio:

ProjectName-Api-Key: abcde

ma è anche possibile e ideologicamente corretto utilizzare l'intestazione Authorization con uno schema personalizzato, ad esempio:

Authorization: ApiKey abcde

D'altra parte, ho trovato una considerazione sul fatto che uno schema di autorizzazione personalizzato può essere inaspettato e non supportato da alcuni client e porta comunque a un codice personalizzato, quindi è meglio usare un'intestazione personalizzata poiché i clienti non hanno aspettative in merito .

In quale modo preferiresti inviare una chiave API?

    
posta RomanG 20.07.2017 - 10:51
fonte

1 risposta

5

Le chiavi API non appartengono ad alcuna specifica autenticazione o protocollo di autorizzazione 1 . Potremmo usare Authorization header ma, come hai commentato, ci vorrebbe per implementare il nostro schema e il nostro protocollo. Di solito reinventare la ruota in sicurezza è una cattiva idea, quindi è bene lasciare Authorization header per standard di autorizzazione ben noti. 2 .

Quando ho implementato le autorizzazioni API Keys, volevo indicare chiaramente che l'autenticazione e i protocolli di autorizzazione erano specifici del mio dominio e non rispondevano a nessun protocollo conosciuto, da cui l'intestazione personalizzata. Ad ogni modo, è la mia convenzione che probabilmente ha senso per me.

Vale la pena menzionare che alcuni dei maggiori provider di API sul mercato supportano ancora le autorizzazioni delle chiavi API e alcuni ci consentono di inviare digita l'URL .

1: Trovo che questa risposta sia molto chiara per quanto riguarda le API Tasti

2: Tuttavia, troverai molti articoli e opinioni (alcuni di loro molto bene argomentato ) a favore dell'intestazione Authorization .

    
risposta data 20.07.2017 - 15:48
fonte

Leggi altre domande sui tag