Dónde colocar una clave API: un encabezado HTTP personalizado VS el encabezado de autorización con un esquema personalizado

7

Estoy diseñando una API REST utilizando autorización / autenticación a través de una clave API.

Traté de averiguar cuál es el mejor lugar para ello y descubrí que muchas personas sugieren usar un encabezado HTTP personalizado como ProjectName-Api-Key , por ejemplo:

ProjectName-Api-Key: abcde

pero también es posible e ideológicamente correcto usar el encabezado Authorization con un esquema personalizado, por ejemplo:

Authorization: ApiKey abcde

Por otro lado, encontré una consideración de que un esquema de Autorización personalizado puede ser inesperado y no admitido por algunos clientes y conduce a un código personalizado de todos modos, por lo que es mejor usar un encabezado personalizado ya que los clientes no tienen ninguna expectativa al respecto .

¿De qué manera preferiría enviar una clave de API?

    
pregunta RomanG 20.07.2017 - 10:51

1 respuesta

4

Claves de API no pertenecen a ningún protocolo específico de autenticación o autorización 1 . Podríamos usar el encabezado Authorization pero, como comentó, nos llevaría a implementar nuestro propio esquema y protocolo. Por lo general, reinventar la rueda en la seguridad es una mala idea, por lo que es bueno dejar el encabezado Authorization para estándares de autorización conocidos. 2 .

Cuando implementé las autorizaciones de Claves de API, quise decir claramente que la autenticación y los protocolos de autorización eran específicos de mi dominio y no respondieron a ningún protocolo conocido, de ahí el encabezado personalizado. De todos modos, es mi propia convención la que probablemente solo tenga sentido para mí.

Vale la pena mencionar que algunos de los proveedores de API más grandes del mercado aún admiten autorizaciones de clave de API y algunos nos permiten enviar el ingresa la URL .

1: encuentro que answer es muy claro con respecto a la API Teclas

2: Sin embargo, encontrarás muchos artículos y opiniones (algunos de ellos muy bien argumentó ) a favor del encabezado Authorization .

    
respondido por el Laiv 20.07.2017 - 15:48

Lea otras preguntas en las etiquetas