Estou projetando uma API REST usando autorização / autenticação por meio de uma chave de API.
Tentei descobrir qual é o melhor lugar para isso e descobri que muitas pessoas sugerem o uso de um cabeçalho HTTP personalizado, como ProjectName-Api-Key
, por exemplo:
ProjectName-Api-Key: abcde
mas também é possível e ideologicamente correto usar o Authorization
cabeçalho com um esquema personalizado, por exemplo:
Authorization: ApiKey abcde
Por outro lado, considerei que um esquema de Autorização personalizado pode ser inesperado e não suportado por alguns clientes e leva ao código personalizado de qualquer maneira, portanto, é melhor usar um cabeçalho personalizado, pois os clientes não têm expectativas sobre isso.
De que maneira você prefere enviar uma chave de API?
Bearer
esquema é usado exclusivamente com oAuth2. A aplicação separada do oAuth soa como mau uso. Por que é correto usar esse esquema se não há oAuth? A propósito, tive problemas com a escolha de um tipo de autorização para minha API. A API estará disponível apenas para um serviço confiável; portanto, investiguei o fluxo de credenciais do cliente oAuth2 e não encontrei nenhum benefício em comparação com o ApiKey no meu caso.
ApiKey
fosse renomeada e interpretada como Access Token
concedida ao cliente sem um prazo de validade. Esse é um tipo de aspecto filosófico, decidi não trazer definições complexas se meu caso puder ser descrito em termos simples e decidi chamá-lo apenas de "ApiKey". Se o seu protocolo implementar oAuth Standart, posso concordar em usá- Bearer
lo, mas não, acho que esse esquema não pode ser aplicado.
Authorization: Bearer <token>
cabeçalho e nunca houve um único problema com isso. Os tokens são JWTs .