Sto progettando un'API REST utilizzando l'autorizzazione / autenticazione tramite una chiave API.
Ho cercato di capire qual è il posto migliore per questo 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' Authorization
intestazione con uno schema personalizzato, ad esempio:
Authorization: ApiKey abcde
D'altra parte, ho scoperto 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 al riguardo.
In che modo preferiresti inviare una chiave API?
Bearer
schema viene utilizzato esclusivamente con oAuth2. Applicarlo separatamente da oAuth sembra un uso improprio. Perché è corretto utilizzare questo schema se non c'è oAuth? A proposito, ho avuto problemi con la scelta di un tipo di autorizzazione per la mia API. L'API sarà disponibile solo per un servizio fidato, quindi ho studiato il flusso di credenziali del client di oAuth2 e nel mio caso non ho trovato alcun vantaggio rispetto ad ApiKey.
ApiKey
fosse stata rinominata e interpretata come Access Token
concessa al client senza un tempo di scadenza. È una specie di aspetto filosofico, ho deciso di non portare definizioni complesse se il mio caso può essere descritto in termini semplici e ho deciso di chiamarlo semplicemente "ApiKey". Se il tuo protocollo implementa oAuth standart, posso essere d'accordo sull'uso Bearer
, ma non lo è, immagino che questo schema non possa essere applicato.
Authorization: Bearer <token>
intestazione e non c'è mai stato un singolo problema. I token sono JWT .