Estoy diseñando una API REST usando autorización / autenticación a través de una clave API.
Traté de averiguar cuál es el mejor lugar 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 Authorization
encabezado con un esquema personalizado, por ejemplo:
Authorization: ApiKey abcde
Por otro lado, encontré la consideración de que un esquema de Autorización personalizado puede ser inesperado y no admitido por algunos clientes y de todos modos conduce a un código personalizado, por lo que es mejor usar un encabezado personalizado ya que los clientes no tienen expectativas al respecto.
¿De qué manera preferirías enviar una clave API?
Bearer
esquema se usa exclusivamente con oAuth2. Aplicarlo por separado de oAuth suena como un mal uso. ¿Por qué es correcto usar este esquema si no hay oAuth? Por cierto, tuve problemas para elegir un tipo de autorización para mi API. La API estará disponible solo para un servicio confiable, por lo que investigué el flujo de credenciales del cliente de oAuth2 y no he encontrado ningún beneficio en comparación con ApiKey en mi caso.
ApiKey
se renombraba e interpretaba como Access Token
otorgada al cliente sin un tiempo de vencimiento. Es un tipo de aspecto filosófico, decidí no aportar definiciones complejas si mi caso puede describirse en términos simples y decidí llamarlo simplemente "ApiKey". Si su protocolo implementa el estándar oAuth, puedo aceptar usarlo Bearer
, pero no lo hace, supongo que este esquema no puede aplicarse.
Authorization: Bearer <token>
encabezado y nunca hubo un solo problema con eso. Los tokens son JWT s.