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 Authorizationcabeç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?
Beareresquema é 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.
ApiKeyfosse renomeada e interpretada como Access Tokenconcedida 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á- Bearerlo, 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 .